module MercadoPago::Core::Gateway

Constants

MERCADOPAGO_API_URL
MERCADOPAGO_RUBY_SDK_VERSION
MIME_JSON

Private Instance Methods

connection(method) click to toggle source
# File lib/mercadopago/core/gateway.rb, line 76
def connection(method)
  Faraday.new(MERCADOPAGO_API_URL, ssl: { verify: true }) do |faraday|
    faraday.request(:url_encoded) if method == :get
    faraday.adapter(Faraday.default_adapter)
  end
end
delete(path, payload) click to toggle source
# File lib/mercadopago/core/gateway.rb, line 30
def delete(path, payload)
  make_request(:delete, path)
end
get(path, payload) click to toggle source
# File lib/mercadopago/core/gateway.rb, line 20
def get(path, payload)
  make_request(:get, path, payload)
end
headers(idempotency_key = nil) click to toggle source
# File lib/mercadopago/core/gateway.rb, line 34
def headers(idempotency_key = nil)
  {
    'User-Agent' => "MercadoPago Ruby SDK v#{MERCADOPAGO_RUBY_SDK_VERSION}",
    content_type: MIME_JSON,
    accept: MIME_JSON
  }.tap do |_hash|
    _hash['X-Idempotency-Key'] = idempotency_key if idempotency_key
  end
end
make_request(method, path, payload = {}) click to toggle source

Makes a HTTP request to the MercadoPago API.

  • type: the HTTP request type (:get, :post, :put, :delete).

  • path: the path of the API to be called.

  • json: the data to be trasmitted to the API.

# File lib/mercadopago/core/gateway.rb, line 49
def make_request(method, path, payload = {})
  idempotency_key = payload.delete(:idempotency_key) || payload.delete('idempotency_key')
  unless payload.empty?
    payload = MultiJson.dump(payload) unless method == :get
  end

  response = connection(method).send(method) do |call|
    call.url path
    call.headers = headers( idempotency_key )
    unless payload.empty?
      if method == :get
        call.params = call.params.merge(payload)
      else
        call.body = payload
      end
    end
  end

  MultiJson.load(response.body, symbolize_keys: true)
rescue Exception => e
  if e.respond_to?(:response)
    MultiJson.load(e.response, symbolize_keys: true)
  else
    raise e
  end
end
post(path, payload) click to toggle source
# File lib/mercadopago/core/gateway.rb, line 14
def post(path, payload)
  raise Error.new('No data given') if payload.nil? || payload.empty?

  make_request(:post, path, payload)
end
put(path, payload) click to toggle source
# File lib/mercadopago/core/gateway.rb, line 24
def put(path, payload)
  raise Error.new('No data given') if payload.nil? || payload.empty?

  make_request(:put, path, payload)
end