Does anyone have some sample code showing how to send a file via XML
RPC?
Sending string values is easy … like the below example…
server = XMLRPC::Client.new2(“http://rpc.technorati.com/rpc/ping”)
result = server.call(“weblogUpdates.ping”, “Copenhagen.rb”,
"http://www.copenhagenrb.dk/
… but how would one send a file?
Etienne
On Apr 15, 2008, at 6:56 PM, e deleflie wrote:
Does anyone have some sample code showing how to send a file via XML
RPC?
I can’t remember where I first saw this.
$ cat client.rb
#!/usr/bin/ruby
require ‘xmlrpc/client’
require ‘base64’
data = IO.read(’/tmp/test.jpg’)
encoded_file = Base64.encode64(data)
server = XMLRPC::Client.new3({‘host’=>‘localhost’, ‘port’=>8888,
‘timeout’=>30})
if server.call(“put_file”, encoded_file)
puts “ok”
end
puts result
$ cat server.rb
#!/usr/bin/ruby
$SAFE = 1
require “xmlrpc/server”
require ‘base64’
s = XMLRPC::Server.new(8888)
s.add_handler(“put_file”) { |encoded_file|
Dir.chdir(’/tmp/test’)
File.open(‘test.jpg’, ‘w+’) { |file|
file.puts( Base64.decode64(encoded_file) )
}
true
}
s.serve
bingo! … … just needed to encode the binary data into base64
before sending it (and do the reverse at the server end).
thanks
Etienne