Sha256: 0b1807043d4f40d35dfaed74a9fe40580a3b90e259acd76011ace066fef0ad1f

Contents?: true

Size: 1.15 KB

Versions: 4

Compression:

Stored size: 1.15 KB

Contents

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.parse("#{protocol}://#{host}").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: URI.parse("#{protocol}://#{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

4 entries across 4 versions & 1 rubygems

Version Path
quiz_api_client-0.1.10 lib/quiz_api_client/services/base_api_service.rb
quiz_api_client-0.1.9 lib/quiz_api_client/services/base_api_service.rb
quiz_api_client-0.1.8 lib/quiz_api_client/services/base_api_service.rb
quiz_api_client-0.1.7 lib/quiz_api_client/services/base_api_service.rb