module CoinsPaid::API::Transport

Public Instance Methods

post(path, params = {}) click to toggle source
# File lib/coins_paid/api/transport.rb, line 8
def post(path, params = {})
  post_request path, params.to_json
rescue Faraday::ParsingError => e
  raise ConnectionError, e.response.body
rescue Faraday::Error => e
  raise ConnectionError, e
end

Private Instance Methods

error_message(response_body) click to toggle source
# File lib/coins_paid/api/transport.rb, line 30
def error_message(response_body)
  response_body['error'] || response_body['errors'].values.first
end
http() click to toggle source
# File lib/coins_paid/api/transport.rb, line 34
def http
  Faraday.new(url: URL) do |conn|
    conn.request :json
    conn.response :json
    conn.adapter Faraday.default_adapter
  end
end
post_request(path, params) click to toggle source
# File lib/coins_paid/api/transport.rb, line 18
def post_request(path, params)
  response = http.post(path, params) do |req|
    req.headers.merge!(
      'X-Processing-Key' => API.public_key,
      'X-Processing-Signature' => Signature.generate(params)
    )
  end

  body = response.body
  response.success? ? body['data'] : raise(ProcessingError, error_message(body))
end