class AccountKit

Constants

DEFAULT_VERSION
GRANT_TYPE
VERSION

Public Class Methods

configure() { |Config| ... } click to toggle source
# File lib/account_kit.rb, line 10
def self.configure
  yield Config
end
method_missing(name, *args, &block) click to toggle source

Support older versions

# File lib/account_kit/base.rb, line 8
def method_missing(name, *args, &block)
  new.send(name, *args, &block)
end
new(options = {}) click to toggle source
# File lib/account_kit/base.rb, line 13
def initialize(options = {})
  @app_id = options.fetch(:app_id, Config.app_id)
  @app_secret = options.fetch(:app_secret, Config.app_secret)
  @api_version = options.fetch(:api_version, Config.api_version || DEFAULT_VERSION)
  @require_app_secret = options.fetch(:require_app_secret, Config.require_app_secret)
end

Public Instance Methods

access_token(code) click to toggle source
# File lib/account_kit/base.rb, line 20
def access_token(code)
  uri = build_access_token_uri(code)
  send_payload(uri)
end
me(access_token) click to toggle source
# File lib/account_kit/base.rb, line 25
def me(access_token)
  uri = build_me_uri(access_token)
  send_payload(uri)
end

Private Instance Methods

access_token_params(code) click to toggle source
# File lib/account_kit/base.rb, line 65
def access_token_params(code)
  {
    grant_type: GRANT_TYPE,
    code: code,
    access_token: app_access_token
  }
end
access_token_url() click to toggle source
# File lib/account_kit/base.rb, line 73
def access_token_url
  "https://graph.accountkit.com/#{@api_version}/access_token"
end
app_access_token() click to toggle source
# File lib/account_kit/base.rb, line 81
def app_access_token
  ['AA', @app_id, @app_secret].join('|')
end
appsecret_proof(access_token) click to toggle source
# File lib/account_kit/base.rb, line 60
def appsecret_proof(access_token)
  sha256 = OpenSSL::Digest::SHA256.new
  OpenSSL::HMAC.hexdigest(sha256, @app_secret, access_token)
end
build_access_token_uri(code) click to toggle source
# File lib/account_kit/base.rb, line 42
def build_access_token_uri(code)
  uri = URI(access_token_url)
  uri.query = URI.encode_www_form(access_token_params(code))
  uri
end
build_me_uri(access_token) click to toggle source
# File lib/account_kit/base.rb, line 48
def build_me_uri(access_token)
  uri = URI(me_url)
  uri.query = URI.encode_www_form(me_params(access_token))
  uri
end
me_params(access_token) click to toggle source
# File lib/account_kit/base.rb, line 54
def me_params(access_token)
  params = { access_token: access_token }
  params[:appsecret_proof] = appsecret_proof(access_token) if @require_app_secret
  params
end
me_url() click to toggle source
# File lib/account_kit/base.rb, line 77
def me_url
  "https://graph.accountkit.com/#{@api_version}/me"
end
send_payload(uri) click to toggle source
# File lib/account_kit/base.rb, line 32
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