Sha256: 5872fa5725985f847596ef23e667f43ef7a80a50bc450b1216e1edd602e16172

Contents?: true

Size: 1010 Bytes

Versions: 10

Compression:

Stored size: 1010 Bytes

Contents

class ShippingEasy::Http::Request

  attr_accessor :http_method, :body, :params, :relative_path

  def initialize(options = {})
    @http_method = options.fetch(:http_method, :get)
    @params = options.fetch(:params, {})
    @body = options.fetch(:payload, {}).to_json
    @relative_path = options.delete(:relative_path)
  end

  def self.connect!(options = {})
    new(options).connect!
  end

  def connect!
    sign_request!
    adapter.connect!
  end

  def sign_request!
    params[:api_key] = api_key
    params[:api_timestamp] = Time.now.to_i
    params[:api_signature] = signature.to_s
  end

  def uri
    "/api#{relative_path}"
  end

  def signature
    ShippingEasy::Signature.new(api_secret: api_secret, method: http_method, path: uri, params: params, body: body)
  end

  def adapter
    ShippingEasy.configuration.http_adapter.new(self)
  end

  def api_secret
    ShippingEasy.api_secret
  end

  def api_key
    ShippingEasy.api_key
  end

  def base_url
    ShippingEasy.base_url
  end

end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
shipping_easy-0.6.1 lib/shipping_easy/http/request.rb
shipping_easy-0.6.0 lib/shipping_easy/http/request.rb
shipping_easy-0.5.1 lib/shipping_easy/http/request.rb
shipping_easy-0.5.0 lib/shipping_easy/http/request.rb
shipping_easy-0.3.2 lib/shipping_easy/http/request.rb
shipping_easy-0.3.1 lib/shipping_easy/http/request.rb
shipping_easy-0.3.0 lib/shipping_easy/http/request.rb
shipping_easy-0.2.2 lib/shipping_easy/http/request.rb
shipping_easy-0.2.1 lib/shipping_easy/http/request.rb
shipping_easy-0.2.0 lib/shipping_easy/http/request.rb