class Smartpay::Client

Public Class Methods

get(path, params: {}) click to toggle source
# File lib/smartpay/client.rb, line 10
def get(path, params: {})
  request_params = default_params.merge(params)
  response = RestClient::Request.execute(method: :get, url: api_url(path),
                                         headers: headers.merge(params: request_params),
                                         timeout: timeout)
  JSON.parse(response.body, symbolize_names: true)
end
post(path, params: {}, payload: {}) click to toggle source
# File lib/smartpay/client.rb, line 18
def post(path, params: {}, payload: {})
  request_params = default_params.merge(params)
  request_payload = default_payload.merge(payload)
  idempotency_key = nonce
  response = with_retries(:max_tries => 1, :rescue => [RestClient::BadRequest, RestClient::BadGateway, RestClient::ServiceUnavailable, RestClient::GatewayTimeout]) do
    RestClient::Request.execute(method: :post, url: api_url(path),
                                          params: request_params,
                                          headers: headers.merge({Idempotency_Key: idempotency_key}).merge(params: request_params),
                                          timeout: timeout,
                                          payload: request_payload.to_json)
  end
  JSON.parse(response.body, symbolize_names: true)
end
put(path, params: {}, payload: {}) click to toggle source
# File lib/smartpay/client.rb, line 32
def put(path, params: {}, payload: {})
  request_params = default_params.merge(params).merge({'Idempotency-Key': nonce})
  request_payload = default_payload.merge(payload)
  idempotency_key = nonce
  response = with_retries(:max_tries => 1, :rescue => [RestClient::InternalServerError, RestClient::BadGateway, RestClient::ServiceUnavailable, RestClient::GatewayTimeout]) do
    RestClient::Request.execute(method: :put, url: api_url(path),
                                          params: request_params,
                                          headers: headers.merge({Idempotency_Key: idempotency_key}).merge(params: request_params),
                                          timeout: timeout,
                                          payload: request_payload.to_json)
  end
  JSON.parse(response.body, symbolize_names: true)
end

Private Class Methods

api_url(path) click to toggle source
# File lib/smartpay/client.rb, line 52
def api_url(path)
  "#{Smartpay.configuration.api_url}#{path}"
end
default_params() click to toggle source
# File lib/smartpay/client.rb, line 72
def default_params
  {
    'dev-lang': :ruby,
    'sdk-version': Smartpay::VERSION
  }.freeze
end
default_payload() click to toggle source
# File lib/smartpay/client.rb, line 79
def default_payload
  {}.freeze
end
headers() click to toggle source
# File lib/smartpay/client.rb, line 60
def headers
  {
    accept: :json,
    content_type: :json,
    Authorization: "Basic #{secret_key}"
  }
end
nonce() click to toggle source
# File lib/smartpay/client.rb, line 48
def nonce 
  SecureRandom.hex
end
secret_key() click to toggle source
# File lib/smartpay/client.rb, line 68
def secret_key
  Smartpay.configuration.secret_key
end
timeout() click to toggle source
# File lib/smartpay/client.rb, line 56
def timeout
  Smartpay.configuration.post_timeout
end