xmlrpc_test.pl 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/usr/bin/perl
  2. # perl script for sending an xmlrpc command to ser's xmlrpc module,
  3. # extra verbose output
  4. # Usage: perl xmlrpc_test.pl command [params...]
  5. #
  6. # History:
  7. # --------
  8. # 2009-07-13 initial version (andrei)
  9. #
  10. #
  11. use strict;
  12. use warnings;
  13. use XMLRPC::Lite;
  14. my $rpc=shift @ARGV;
  15. my @rpc_params=@ARGV;
  16. my $k;
  17. my %r;
  18. my $i;
  19. if (!defined $rpc) {
  20. die "Usage: $0 rpc_command [args..]";
  21. }
  22. # actual rpc call
  23. my($rpc_call) = XMLRPC::Lite
  24. -> proxy("http://127.0.0.1:5060") -> call($rpc, @rpc_params);
  25. my $res= $rpc_call->result;
  26. # extra verbose result printing (could be skipped)
  27. if (!defined $res){
  28. print "fault{\n";
  29. $res=$rpc_call->fault;
  30. %r=%{$res};
  31. foreach $k (sort keys %r) {
  32. print("\t$k: $r{$k}\n");
  33. }
  34. print "}\n";
  35. exit -1;
  36. }
  37. if (ref($res) eq "HASH"){
  38. print("{\n");
  39. %r=%{$res};
  40. foreach $k (keys %r) {
  41. print("\t$k: ", $r{$k}, "\n");
  42. }
  43. print("}\n");
  44. } elsif (ref($res) eq "ARRAY"){
  45. print "[\n";
  46. for ($i=0; $i<@{$res}; $i++){
  47. print "\t${$res}[$i]\n";
  48. }
  49. print "]\n";
  50. }elsif (ref($res) eq "SCALAR"){
  51. print "${$res}\n";
  52. }elsif (!ref($res)){
  53. print "$res\n";
  54. }else{
  55. print("ERROR: reference to ", ref($res), " not handled\n");
  56. }