class Doyoubuzz::Showcase
Public Class Methods
new(api_key, api_secret)
click to toggle source
Construction with mandatory api key and api secret
# File lib/doyoubuzz/showcase.rb, line 13 def initialize(api_key, api_secret) @api_key = api_key @api_secret = api_secret end
Private Instance Methods
build_request_parameters(params, verb)
click to toggle source
Build the request parameters
# File lib/doyoubuzz/showcase.rb, line 56 def build_request_parameters(params, verb) additional_parameters = { apikey: @api_key, timestamp: Time.now.to_i } # GET, DELETE requests : the parameters are in the request query if %i(get delete).include?(verb) return { query: sign_api_params(params.merge(additional_parameters)) } end # Otherwise, they are in the body { body: params, query: sign_api_params(additional_parameters) } end
call_api(verb, method, params)
click to toggle source
The actual api call
# File lib/doyoubuzz/showcase.rb, line 28 def call_api(verb, method, params) res = self.class.send( verb, method, build_request_parameters(params, verb) ) process_response(res) end
mash(object)
click to toggle source
# File lib/doyoubuzz/showcase.rb, line 51 def mash(object) Hashie::Mash.new(object) end
process_response(res)
click to toggle source
Process the HTTParty response, checking for errors
# File lib/doyoubuzz/showcase.rb, line 39 def process_response(res) raise Error.new(res.code, res.body) unless res.success? object = res.parsed_response case object when Hash then mash(object) when Array then object.map(&method(:mash)) else object end end
sign_api_params(params)
click to toggle source
The arguments processing and signing
# File lib/doyoubuzz/showcase.rb, line 69 def sign_api_params(params) ordered_params_values = params.sort.map { |_, v| v } concatenated_params_string = ordered_params_values.join concatenated_params_string << @api_secret hash = Digest::MD5.hexdigest(concatenated_params_string) params.merge(hash: hash) end