class Pili::RPC
Public Class Methods
new(mac)
click to toggle source
# File lib/pili/rpc.rb, line 7 def initialize(mac) @mac = mac end
Public Instance Methods
call_with_json(method, url, params)
click to toggle source
# File lib/pili/rpc.rb, line 29 def call_with_json(method, url, params) req = new_request(method, url) if method == "POST" && params != nil req.body = params.to_json req["Content-Type"] = "application/json" req["Content-Length"] = req.body.length end resp = request(req) if resp.code.start_with? "2" if resp["Content-Type"] == "application/json" JSON.load resp.body else resp.body end else msg = "call #{url} failed: #{resp.code}" case resp.code when '612', '619' e = ResourceNotExist.new msg, resp when '614' e = ResourceConflict.new msg, resp else e = RPCError.new msg, resp end raise e end end
new_request(method, url)
click to toggle source
# File lib/pili/rpc.rb, line 11 def new_request(method, url) case method when "POST" req = Net::HTTP::Post.new(URI(url)) when "GET" req = Net::HTTP::Get.new(URI(url)) else raise "unsupport RPC method #{method}" end req["User-Agent"] = Config.user_agent() req end
request(req)
click to toggle source
# File lib/pili/rpc.rb, line 24 def request(req) req["Authorization"] = "Qiniu #{@mac.sign_request req}" Net::HTTP.start(req.uri.host, req.uri.port) {|http| http.request req} end