class SocialRebate::Connection
Constants
- STATUS
Public Class Methods
api_required_keys()
click to toggle source
# File lib/social_rebate/connection.rb, line 26 def self.api_required_keys [:api_key, :api_secret, :store_key].freeze end
api_token_keys()
click to toggle source
# File lib/social_rebate/connection.rb, line 22 def self.api_token_keys [:api_key, :api_secret].freeze end
new(creds={})
click to toggle source
# File lib/social_rebate/connection.rb, line 11 def initialize(creds={}) validate_creds(creds) @configuration = {} SocialRebate::Connection.api_token_keys.each do |key| @configuration[key] = creds[key].to_s end @store_key = creds[:store_key] @configuration[:format] = 'json' end
Public Instance Methods
api_token_keys_valid?()
click to toggle source
# File lib/social_rebate/connection.rb, line 51 def api_token_keys_valid? return SocialRebate::Connection.api_token_keys.detect {|key| @configuration[key] == ''} == nil end
check_body_params(body)
click to toggle source
# File lib/social_rebate/connection.rb, line 96 def check_body_params(body) if !body.key?(:status) || !SocialRebate::Connection::STATUS.include?(body[:status]) raise ResponseError.new("Missing or incorrect status param") end end
check_post_url(url)
click to toggle source
# File lib/social_rebate/connection.rb, line 108 def check_post_url(url) if url !~ /\/v[0-9]+\/orders\/$/i raise ResponseError.new("Incorrect post request url, expected: /api/v[0-9]/orders/, but you have #{url}") end end
check_put_url(url)
click to toggle source
# File lib/social_rebate/connection.rb, line 102 def check_put_url(url) if url !~ /\/v[0-9]+\/orders\/[0-9a-zA-Z]+\/$/i raise ResponseError.new("Incorrect put request url, expected: /api/v[0-9]/orders/<your order id>/, but you have #{url}") end end
get(url, params={})
click to toggle source
# File lib/social_rebate/connection.rb, line 59 def get(url, params={}) url = "#{url}?#{serialize_param(@configuration)}" unless params.empty? url = "#{url}&#{serialize_param(params)}" end request(:get, url) end
parsed_response(response)
click to toggle source
# File lib/social_rebate/connection.rb, line 44 def parsed_response(response) unless response.success? raise ResponseError.new(response) end response.parsed_response end
post(url, body={}, headers={})
click to toggle source
# File lib/social_rebate/connection.rb, line 67 def post(url, body={}, headers={}) check_post_url(url) body.merge!(@configuration).merge!({:store_key => @store_key}) options = {} options[:body] = body options[:headers] = set_headers(headers) request(:post, url, options) end
put(url, body={}, headers={})
click to toggle source
# File lib/social_rebate/connection.rb, line 77 def put(url, body={}, headers={}) check_body_params(body) check_put_url(url) body = body.merge!(@configuration).merge!({:store_key => @store_key}) options = {} options[:body] = body options[:headers] = set_headers(headers) request(:put, url, options) end
request(method, url, options={})
click to toggle source
# File lib/social_rebate/connection.rb, line 36 def request(method, url, options={}) unless api_token_keys_valid? raise ResponseError.new("Please set api_key and api_secret correctly") end options[:body] = options[:body].to_json if options[:body] parsed_response(self.class.__send__(method, url, options)) end
serialize_param(params)
click to toggle source
# File lib/social_rebate/connection.rb, line 55 def serialize_param(params) params.sort.map {|key, value| URI.escape("#{key}=#{value}")}.join('&') end
set_headers(headers)
click to toggle source
# File lib/social_rebate/connection.rb, line 88 def set_headers(headers) hash = {} hash = headers unless headers.empty? hash['content-type'] = "application/json" hash['Accept'] = "application/json" hash end
validate_creds(creds)
click to toggle source
# File lib/social_rebate/connection.rb, line 30 def validate_creds(creds) SocialRebate::Connection.api_required_keys.each do |key| raise ResponseError.new("Required key: #{key} missing") unless creds[key] end end