class PayU::Client

Public Class Methods

new() click to toggle source
# File lib/pay_u/client.rb, line 6
def initialize
  @client ||= Faraday.new(url: PayU.configuration.api_url) do |connection|
    connection.request :url_encoded
    connection.response :logger if PayU.configuration.test?
    connection.adapter Faraday.default_adapter
    connection.basic_auth "pRRXKOl8ikMmt9u", "4Vj8eK4rloUd272L48hsrarnUA"
  end
end

Public Instance Methods

delete(url) click to toggle source
# File lib/pay_u/client.rb, line 37
def delete(url)
  response = @client.delete(&perform_request(url))

  response.success?
end
get(url) click to toggle source
# File lib/pay_u/client.rb, line 16
def get(url)
  response = @client.get(&perform_request(url))

  process_response(response)
end
post(url, params: {}) click to toggle source
# File lib/pay_u/client.rb, line 23
def post(url, params: {})
  response = @client.post(&perform_request_with_params(url, params))

  process_response(response)
end
put(url, params: {}) click to toggle source
# File lib/pay_u/client.rb, line 30
def put(url, params: {})
  response = @client.put(&perform_request_with_params(url, params))

  process_response(response)
end

Private Instance Methods

default_headers() click to toggle source
# File lib/pay_u/client.rb, line 81
        def default_headers
  {
    "Content-Type" => "application/json; charset=utf-8",
    "Accept" => "application/json",
  }
end
perform_request(url) click to toggle source
# File lib/pay_u/client.rb, line 44
        def perform_request(url)
  proc do |request|
    request.url "payments-api/#{url}"
    request.headers = request.headers.merge(default_headers)
  end
end
perform_request_with_params(url, params) click to toggle source
# File lib/pay_u/client.rb, line 52
        def perform_request_with_params(url, params)
  proc do |request|
    request.url "payments-api/#{url}"
    request.headers = request.headers.merge(default_headers)
    request.body = params.delete_if { |_, value| value.nil? }.to_json
  end
end
process_response(response) click to toggle source
# File lib/pay_u/client.rb, line 61
        def process_response(response)
  raise PayU::UnauthorizedError, "Unauthorized" if !response.success? && response.status == 401

  body = JSON.parse(response.body)

  return raise_error(response) unless response.success?

  body
end
raise_error(response) click to toggle source
# File lib/pay_u/client.rb, line 71
        def raise_error(response)
  body = JSON.parse(response.body)

  error_message = body["errorList"] ? body["errorList"].join : body["description"]

  raise PayU::NotFoundError, error_message if response.status == 404
  raise PayU::Error, error_message
end