class Ly::Zizhuyou::API
Attributes
api_host[RW]
req_params[R]
req_url[R]
resp[R]
Public Class Methods
new(access_id, security_id, api_host = nil)
click to toggle source
# File lib/ly/zizhuyou.rb, line 16 def initialize(access_id, security_id, api_host = nil) @access_id = access_id @security_id = security_id @api_host = api_host end
Public Instance Methods
fingerprint(params)
click to toggle source
# File lib/ly/zizhuyou.rb, line 22 def fingerprint(params) Digest::MD5.hexdigest @access_id + @security_id + Hash[params.sort].map {|k, v| "#{k}=#{v}"}.join end
request(api_name, params = {})
click to toggle source
# File lib/ly/zizhuyou.rb, line 26 def request(api_name, params = {}) @req_url = '%s/zizhuyou/standard/1.0/%s?style=json' % [@api_host, api_name] puts "Url: #{@req_url}" url = URI(@req_url) http = Net::HTTP.start(url.host, url.port) request = Net::HTTP::Post.new(url) request['X-ACCESS-ID'] = @access_id puts "\nHeaders: \n" puts "\tX-ACCESS-ID: #{@access_id}" request['X-FINGERPRINT'] = fingerprint = fingerprint(params) puts "\tX-FINGERPRINT: #{fingerprint}" request['Content-Type'] = 'application/x-www-form-urlencoded' request.body = URI.encode_www_form(@req_params = params) puts "\nParams: \n" @req_params.each {|k, v| puts "\t#{k}: #{v}\n"} puts "\nParams(Encode): #{URI.encode_www_form(@req_params = params)}\n" response = http.request(request) puts "Redirection: #{response['location']}" if response.is_a?(Net::HTTPRedirection) raise RequestError, "HTTP Response: #{response.code} #{response.message}" unless response.is_a?(Net::HTTPSuccess) @resp = response.read_body puts "\nResp: #{@resp}" result = JSON.parse(@resp) if result['ret_code'] != '200' err_msg = result['err_msg'] if api_name == 'SingleOrderCreate' && !result['result'].nil? && !result['result']['Msg'].nil? err_msg += ';' + result['result']['Msg'] end raise Error.new err_msg, result['ret_code'] unless 'BookableCheck GetCardTypeList'.include?(api_name) && result['ret_code'].nil? end result['result'] end