Sha256: 9516a83efa13e318d430cb780467c7e3a487359b50a60f44969f4e86bf7066cf

Contents?: true

Size: 1.23 KB

Versions: 2

Compression:

Stored size: 1.23 KB

Contents

module AccountKit
  extend self

  GRANT_TYPE = 'authorization_code'.freeze
  DEFAULT_VERSION = 'v1.0'

  def access_token(code)
    uri = build_access_token_uri(code)
    send_payload(uri)
  end

  def me(access_token)
    uri = build_me_uri(access_token)
    send_payload(uri)
  end

  private

  def send_payload(uri)
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = true

    request = Net::HTTP::Get.new(uri.request_uri)
    request.content_type = 'application/json'

    http.request(request)
  end

  def build_access_token_uri(code)
    uri = URI(access_token_url)
    uri.query = URI.encode_www_form(access_token_params(code))
    uri
  end

  def build_me_uri(access_token)
    uri = URI(me_url)
    uri.query = URI.encode_www_form(access_token: access_token)
    uri
  end

  def access_token_params(code)
    {
      grant_type: GRANT_TYPE,
      code: code,
      access_token: app_access_token
    }
  end

  def access_token_url
    "https://graph.accountkit.com/#{api_version}/access_token"
  end

  def me_url
    "https://graph.accountkit.com/#{api_version}/me"
  end

  def app_access_token
    ['AA', Config.app_id, Config.app_secret].join('|')
  end

  def api_version
    Config.api_version || DEFAULT_VERSION
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
account_kit-0.1.2 lib/account_kit/base.rb
account_kit-0.1.1 lib/account_kit/base.rb