Sha256: be73493ee70321af3bc2a5a02900882c210a4b097210ec05c094bf665df78116
Contents?: true
Size: 1.91 KB
Versions: 1
Compression:
Stored size: 1.91 KB
Contents
class AccountKit GRANT_TYPE = 'authorization_code'.freeze DEFAULT_VERSION = 'v1.0' class << self # Support older versions def method_missing(name, *args, &block) new.send(name, *args, &block) end end 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 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(me_params(access_token)) uri end def me_params(access_token) params = { access_token: access_token } params[:appsecret_proof] = appsecret_proof(access_token) if @require_app_secret params end def appsecret_proof(access_token) sha256 = OpenSSL::Digest::SHA256.new OpenSSL::HMAC.hexdigest(sha256, @app_secret, access_token) 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', @app_id, @app_secret].join('|') end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
account_kit-0.2.0 | lib/account_kit/base.rb |