Sha256: 49f09c7ef297e3d89d4a5952b3e5f245a7ce2ce76ec7f4d59515074d02ce061f

Contents?: true

Size: 1.24 KB

Versions: 3

Compression:

Stored size: 1.24 KB

Contents

require 'quiz_api_client/http_client'
require 'quiz_api_client/services/jwt_service'

module QuizApiClient::Services
  class BaseApiService
    attr_reader :consumer_key, :host, :shared_secret,
                :protocol, :errors

    def initialize(consumer_key:, host:,
                   shared_secret:, protocol: 'https')
      @consumer_key = consumer_key
      @host = host
      @shared_secret = shared_secret
      @protocol = protocol
      @errors = []
    end

    private

    def token_for_api(default_token = nil, scope = nil, resource_id = nil)
      return default_token unless default_token.nil?
      generate_token(scope: scope, resource_id: resource_id)
    end

    def uri
      uri = URI::HTTP.build(host: host)
      uri.scheme = protocol
      uri.to_s
    end

    def generate_token(scope:, exp: nil, resource_id: nil)
      jwt_service.grant_permission(scope: scope, exp: exp, resource_id: resource_id)
    end

    def jwt_service
      QuizApiClient::Services::JwtService.new(
        consumer_key: consumer_key,
        host: host,
        shared_secret: shared_secret,
        protocol: protocol
      )
    end

    def client(token:)
      QuizApiClient::HttpClient.new(
        uri: uri,
        jwt: token
      )
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
quiz_api_client-0.1.5 lib/quiz_api_client/services/base_api_service.rb
quiz_api_client-0.1.4 lib/quiz_api_client/services/base_api_service.rb
quiz_api_client-0.1.3 lib/quiz_api_client/services/base_api_service.rb