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