class Taobao::TOP::Service

Attributes

options[R]
params[R]
response[R]

Public Class Methods

new(*args) { |options| ... } click to toggle source
# File lib/taobao/top/service.rb, line 61
def initialize *args, &block
  @options = TOP::Options.default.dup.merge(args.extract_options!)
  @app_key, @app_secret = args.slice!(0,2)
  raise ArgumentError.new "app_key or app_secret missing!" unless @app_key && @app_secret
  yield @options if block_given?
end

Public Instance Methods

get(method, *args) click to toggle source
# File lib/taobao/top/service.rb, line 68
def get method, *args
  invoke method, :get, *args
end
post(method, *args) click to toggle source
# File lib/taobao/top/service.rb, line 72
def post method, *args
  invoke method, :post, *args
end

Private Instance Methods

invoke(method, http_method, *args) click to toggle source
# File lib/taobao/top/service.rb, line 84
def invoke method, http_method, *args
  prepare_params @options.merge(args.extract_options!).merge(method: method)
  begin
    raw_response = case http_method
    when :get then RestClient.get [TOP.gateways[:site], @params.to_query].join("?")
    when :post then RestClient.post TOP.gateways[:site], @params
    end
    @response = case @params.format.to_s.downcase
    when 'json'
      TOP::Response.from_json(raw_response)
    when 'xml'
      TOP::Response.from_xml(raw_response)
    else
      raw_response
    end
  rescue Exception => e
    RestClient.create_log("stderr") << e
  end
end
prepare_params(params) click to toggle source
# File lib/taobao/top/service.rb, line 77
def prepare_params params
  @params = TOP::Params.new params
  @params.app_key = @app_key
  @params.timestamp = Time.now.strftime('%Y-%m-%d %H:%M:%S')
  @params.sign! @app_secret
end