Sha256: a7f2f89bea5f4b70844828d78cb549ba8c39f05d34bd148f62523df43677bfdd

Contents?: true

Size: 1.15 KB

Versions: 5

Compression:

Stored size: 1.15 KB

Contents

module Dimelo::CCP
  module API
    class Client

      attr_accessor :base_uri, :default_parameters

      def initialize(base_uri, options={})
        @base_uri = base_uri.is_a?(URI) ? base_uri : URI.parse(base_uri)
        options = options.with_indifferent_access
        @http_options = options.delete(:http_options) || {}
        @default_parameters = options
      end

      def check
        Dimelo::CCP::API.decode_json(transport(:get, 'check'))
      end

      def config
        Dimelo::CCP::API.decode_json(transport(:get, 'config'))
      end

      def transport(method, path, payload={})
        response = connection.perform(method, path, default_parameters.merge(payload))

        if response.success? or response.status == 422
          response.body
        else
          raise Error.from(method, path, response.status, response.body)
        end
      end

      private

      def request_uri(path, params)
        @base_uri.dup.tap do |uri|
          uri.path = File.join(uri.path, path).chomp('/')
        end.request_uri
      end

      def connection
        @connection ||= Connection.from_uri(@base_uri, @http_options)
      end

    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
dimelo_ccp_api-0.5.0 lib/dimelo/ccp/api/client.rb
dimelo_ccp_api-0.4.4 lib/dimelo/ccp/api/client.rb
dimelo_ccp_api-0.4.3 lib/dimelo/ccp/api/client.rb
dimelo_ccp_api-0.4.2 lib/dimelo/ccp/api/client.rb
dimelo_ccp_api-0.4.1 lib/dimelo/ccp/api/client.rb