Module: Moyasar

Defined in:
lib/moyasar.rb,
lib/moyasar/source.rb,
lib/moyasar/invoice.rb,
lib/moyasar/payment.rb,
lib/moyasar/version.rb,
lib/moyasar/resource.rb,
lib/moyasar/http_client.rb,
lib/moyasar/actions/list.rb,
lib/moyasar/actions/void.rb,
lib/moyasar/actions/fetch.rb,
lib/moyasar/sources/sadad.rb,
lib/moyasar/actions/cancel.rb,
lib/moyasar/actions/create.rb,
lib/moyasar/actions/refund.rb,
lib/moyasar/actions/update.rb,
lib/moyasar/actions/capture.rb,
lib/moyasar/actions/request.rb,
lib/moyasar/sources/stc_pay.rb,
lib/moyasar/errors/api_error.rb,
lib/moyasar/actions/construct.rb,
lib/moyasar/sources/apple_pay.rb,
lib/moyasar/sources/credit_card.rb,
lib/moyasar/errors/moyasar_error.rb,
lib/moyasar/errors/rate_limit_error.rb,
lib/moyasar/errors/api_connection_error.rb,
lib/moyasar/errors/authentication_error.rb,
lib/moyasar/errors/invalid_request_error.rb,
lib/moyasar/errors/account_inactive_error.rb

Defined Under Namespace

Modules: Actions Classes: APIConnectionError, APIError, AccountInactiveError, ApplePay, AuthenticationError, CreditCard, HTTPClient, InvalidRequestError, Invoice, MoyasarError, Payment, RateLimitError, Resource, STCPay, Sadad, Source

Constant Summary collapse

Errors =
{
  'authentication_error'   => Moyasar::AuthenticationError,
  'invalid_request_error'  => Moyasar::InvalidRequestError,
  'account_inactive_error' => Moyasar::AccountInactiveError,
  'rate_limit_error'       => Moyasar::RateLimitError,
  'api_connection_error'   => Moyasar::APIConnectionError,
  'api_error'              => Moyasar::APIError,
}.freeze
VERSION =
'0.9.0'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.api_baseObject (readonly)

Returns the value of attribute api_base.



53
54
55
# File 'lib/moyasar.rb', line 53

def api_base
  @api_base
end

.api_keyObject

Returns the value of attribute api_key.



52
53
54
# File 'lib/moyasar.rb', line 52

def api_key
  @api_key
end

.api_versionObject (readonly)

Returns the value of attribute api_version.



53
54
55
# File 'lib/moyasar.rb', line 53

def api_version
  @api_version
end

Class Method Details

.request(method, url, key: nil, params: {}, headers: {}) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/moyasar.rb', line 55

def request(method, url, key: nil, params: {}, headers: {})
  unless key ||= @api_key
    raise AuthenticationError.new('No API Key provided.')
  end

  client = Moyasar::HTTPClient.new(@api_base)
  response = client.request_json(method, url, key, params, headers)
  case response.code
  when 400..429
    error_data = response.body.merge({ 'http_code' => response.code })
    error = Errors[response.body['type']]
    raise error, error_data
  when 500..504
    raise APIError, { 'http_code' => response.code }
  end
  response
end