module Tinypass::Gateway

Public Instance Methods

cancel_subscription(params) click to toggle source
# File lib/tinypass/gateway.rb, line 34
def cancel_subscription(params)
  post('subscription/cancel', params)
end
fetch_access_detail(rid, user_ref) click to toggle source
# File lib/tinypass/gateway.rb, line 9
def fetch_access_detail(rid, user_ref)
  params = { rid: rid, user_ref: user_ref }
  response = get('access', params)

  return unless response

  AccessDetails.new(MultiJson.load(response))
end
fetch_access_details(params) click to toggle source
# File lib/tinypass/gateway.rb, line 18
def fetch_access_details(params)
  pagesize = params.delete(:pagesize) || params.delete("pagesize") || 500
  params[:pagesize] = pagesize
  response = get('access/search', params)

  return [] unless response

  PagedList.new(MultiJson.load(response))
end
fetch_download_details(params) click to toggle source
# File lib/tinypass/gateway.rb, line 54
def fetch_download_details(params)
   response = get('download', params)

  return [] unless response

  AccessDetails.new(MultiJson.load(response))
end
fetch_subscription_details(params) click to toggle source
# File lib/tinypass/gateway.rb, line 28
def fetch_subscription_details(params)
  response = get('subscription/search', params)

  MultiJson.load(response)
end
fetch_user_details(uid) click to toggle source
# File lib/tinypass/gateway.rb, line 46
def fetch_user_details(uid)
  response = get('user/' + uid, {})

  return unless response

  AccessDetails.new(MultiJson.load(response))      
end
generate_download_url(params) click to toggle source
# File lib/tinypass/gateway.rb, line 62
def generate_download_url(params)
  response = get('download/url', params)

  return [] unless response

  AccessDetails.new(MultiJson.load(response))
end
grant_access(params) click to toggle source
# File lib/tinypass/gateway.rb, line 38
def grant_access(params)
  post('access/grant', params)
end
revoke_access(params) click to toggle source
# File lib/tinypass/gateway.rb, line 42
def revoke_access(params)
  post('access/revoke', params)
end

Private Instance Methods

build_authenticated_headers(http_method, url) click to toggle source
# File lib/tinypass/gateway.rb, line 100
def build_authenticated_headers(http_method, url)
  request_definition = "#{ http_method.upcase } #{ url }"
  signature = "#{ Tinypass.aid }:#{ SecurityUtils.hash_hmac_sha256(Tinypass.private_key, request_definition) }"

  { authorization: signature }
end
build_url(url, params) click to toggle source
# File lib/tinypass/gateway.rb, line 92
def build_url(url, params)
  if params.nil? || params.empty?
  "#{ Config::REST_CONTEXT }/#{ url }"
    else
  "#{ Config::REST_CONTEXT }/#{ url }?#{ URI.encode_www_form(params) }"
  end
end
get(action, params) click to toggle source
# File lib/tinypass/gateway.rb, line 72
def get(action, params)
  url = build_url(action, params)
  headers = build_authenticated_headers('GET', url)

  full_url = Config.endpoint + url

  RestClient.get(full_url, headers)
rescue RestClient::ResourceNotFound
  nil
end
post(action, params) click to toggle source
# File lib/tinypass/gateway.rb, line 83
def post(action, params)
  url = build_url(action, params)
  headers = build_authenticated_headers('POST', url)
  
  full_url = Config.endpoint + url

  RestClient.post(full_url, {}, headers)
end