Sha256: 79ee4c89d8f29484094156ef06214a7d0b4007e4c28f36c64a929725e847886d

Contents?: true

Size: 888 Bytes

Versions: 5

Compression:

Stored size: 888 Bytes

Contents

# frozen_string_literal: true
class Cognito
  class Client
    class Connection
      include Anima.new(:uri, :api_key, :api_secret, :api_version)

      def self.parse(uri:, **api_params)
        new(uri: Addressable::URI.parse(uri), **api_params)
      end

      # ignores :reek:FeatureEnvy:
      def run(request)
        signed_request =
          request.sign(date: Time.now.httpdate, api_key: api_key, api_secret: api_secret)

        HTTP
          .headers(signed_request.headers.merge(version_headers))
          .request(
            signed_request.verb,
            endpoint(signed_request.endpoint),
            json: signed_request.data
          )
      end

      def endpoint(route)
        uri.join(route).to_str
      end

      private

      def version_headers
        { 'Cognito-Version' => api_version }
      end
    end # Connection
  end # Client
end # Cognito

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
cognito-client-0.5.4 lib/cognito/client/connection.rb
cognito-client-0.5.3 lib/cognito/client/connection.rb
cognito-client-0.5.2 lib/cognito/client/connection.rb
cognito-client-0.5.1 lib/cognito/client/connection.rb
cognito-client-0.5.0 lib/cognito/client/connection.rb