class Promobox

Constants

API_URL
API_VERSION

Public Class Methods

new(api_key, login, password) click to toggle source
# File lib/promobox.rb, line 14
def initialize(api_key, login, password)
  @api_key = api_key
  @login = login
  @password = password
  @hash_password = Digest::MD5.digest("#{@password}{#{@api_key}}").unpack('H*').first
end

Public Instance Methods

coupon(id) click to toggle source
# File lib/promobox.rb, line 28
def coupon(id)
  url = build_query("#{__method__}/#{id}")
  decode_url(url)
end
shop(id) click to toggle source
# File lib/promobox.rb, line 33
def shop(id)
  url = build_query("#{__method__}/#{id}")
  decode_url(url)
end

Private Instance Methods

build_query(action, params = {}) click to toggle source
# File lib/promobox.rb, line 47
def build_query(action, params = {})
  ts = Time.now.to_i
  token = Base64.encode64(Digest::SHA1.digest("#{@hash_password}#{ts}#{@api_key}")).chomp
  query = {
    ts: ts.to_s,
    login: @login,
    token: token
  }
  auth_params = URI.encode_www_form query
  encoded_params = URI.encode_www_form params
  url = "#{API_URL}/#{action}?#{auth_params}"
  url += "&#{encoded_params}" unless params.nil? || params.empty?
  url
end
decode_url(url) click to toggle source
# File lib/promobox.rb, line 40
def decode_url(url)
  response = Kernel.open(url)
  MultiJson.decode(response)
rescue
  nil
end