Sha256: 1809cee639cee89e314bd7facccba33a206e0f1604cc617d434b3018e04e33af

Contents?: true

Size: 1.4 KB

Versions: 7

Compression:

Stored size: 1.4 KB

Contents

require 'uri'

module Outreach
  class Authorization
    API_URL =  "https://api.outreach.io/oauth/token"

    attr_reader :token, :refresh_token, :expires_in

    def initialize(attrs)
      @token = attrs['access_token']
      @refresh_token = attrs['refresh_token']
      @expires_in = attrs['expires_in']
    end

    def self.authorization_url
      url = "https://api.outreach.io/oauth/authorize"
      params = {
        client_id:     Outreach.application_identifier,
        redirect_uri:  Outreach.redirect_uri,
        response_type: 'code',
        scope:         Outreach.scopes
      }
      url + "?" + URI.encode_www_form(params)
    end

    def self.create(authorization_code)
      params = {
        client_id:     Outreach.application_identifier,
        client_secret: Outreach.application_secret,
        redirect_uri:  Outreach.redirect_uri,
        grant_type:    'authorization_code',
        code:          authorization_code
      }
      response = Outreach::Request.new.post(API_URL, params)
      new(response)
    end

    def self.refresh(refresh_token)
      params = {
        client_id:     Outreach.application_identifier,
        client_secret: Outreach.application_secret,
        redirect_uri:  Outreach.redirect_uri,
        grant_type:    'refresh_token',
        refresh_token: refresh_token
      }
      response = Request.new.post(API_URL, params)
      new(response)
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
outreach-0.2.1 lib/outreach/authorization.rb
outreach-0.2.0 lib/outreach/authorization.rb
outreach-0.1.3 lib/outreach/authorization.rb
outreach-0.1.2 lib/outreach/authorization.rb
outreach-0.1.1 lib/outreach/authorization.rb
outreach-0.1.0 lib/outreach/authorization.rb
outreach-0.0.2 lib/outreach/authorization.rb