Sha256: 8ac58c7c0a99ab648c117b7715a7a7cdd9773e9a09c3ecc4d789bb2be4db014d

Contents?: true

Size: 1.36 KB

Versions: 5

Compression:

Stored size: 1.36 KB

Contents

# frozen_string_literal: true

require 'addressable/uri'
require 'faraday'

module Spearly
  module Auth
    class Token
      attr_reader :data, :token

      def initialize(token)
        @token = token
      end

      def method_missing(name, *_args)
        @data[name.to_s]
      end

      def info
        token_info_uri = "#{ENV['SPEARLY_API_URL']}/oauth/token/info"
        url = Addressable::URI.parse(token_info_uri).normalize.to_s
        client = Faraday.default_connection

        res = client.get(url,
                         nil,
                         'Accept' => 'application/vnd.spearly.v2+json',
                         'Authorization' => @token)

        return unless res.status == 200

        @data = JSON.parse(res.body)
      end

      def revoke(params)
        token_revoke_uri = "#{ENV['SPEARLY_API_URL']}/oauth/revoke"
        url = Addressable::URI.parse(token_revoke_uri).normalize.to_s
        client = Faraday.default_connection

        bearer_token = @token.gsub(/^Bearer /i, '')

        client.post(url,
                    {
                      client_id: params[:client_id],
                      client_secret: params[:client_secret],
                      token: bearer_token
                    })
      end

      def to_json(*_args)
        @data.to_json
      end

      def as_json
        @data.as_json
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
spearly-sdk-ruby-0.8.0 lib/spearly/auth/token.rb
spearly-sdk-ruby-0.7.0 lib/spearly/auth/token.rb
spearly-sdk-ruby-0.6.0 lib/spearly/auth/token.rb
spearly-sdk-ruby-0.5.0 lib/spearly/auth/token.rb
spearly-sdk-ruby-0.4.0 lib/spearly/auth/token.rb