class Promisepay::Client

Client for the Promisepay API

@see docs.promisepay.com/v2.2/docs/overview

Public Class Methods

new(options = {}) click to toggle source
# File lib/promisepay/client.rb, line 43
def initialize(options = {})
  # Use options passed in, but fall back to module defaults
  Promisepay::Configurable.keys.each do |key|
    instance_variable_set(
      :"@#{key}", options[key] || Promisepay.instance_variable_get(:"@#{key}")
    )
  end
end
resources() click to toggle source

Available resources for {Client}

@return [Hash]

# File lib/promisepay/client.rb, line 130
def self.resources
  {
    bank_accounts: BankAccountResource,
    batch_transactions: BatchTransactionResource,
    card_accounts: CardAccountResource,
    charges: ChargeResource,
    companies: CompanyResource,
    direct_debit_authorities: DirectDebitAuthorityResource,
    fees: FeeResource,
    items: ItemResource,
    paypal_accounts: PaypalAccountResource,
    transactions: TransactionResource,
    users: UserResource,
    tokens: TokenResource,
    tools: Tool,
    wallet_accounts: WalletAccountResource
  }
end

Public Instance Methods

connection() click to toggle source

Create a new Faraday connection

@return [Faraday::Connection]

# File lib/promisepay/client.rb, line 55
def connection
  Faraday.new(url: @api_endpoint) do |builder|
    builder.request :basic_auth, @username, @token
    builder.adapter :net_http
  end
end
delete(url, parameters = {}) click to toggle source

Make a HTTP DELETE request

@param url [String] The path, relative to {#api_endpoint} @param parameters [Hash] Query params for request @return [Faraday::Response]

# File lib/promisepay/client.rb, line 108
def delete(url, parameters = {})
  response = connection.delete do |req|
    req.url "#{api_endpoint}#{url}"
    req.headers['Content-Type'] = 'application/json'
    req.body = parameters.to_json
  end
  on_complete(response)
  response
end
generate_token(options) click to toggle source

Create a card token that can be used with the PromisePay.js package to securely send PromisePay credit card details.

@param options [Hash] Optional options. @option options [String] :token_type token type ID. @option user_id [String] :user_id Buyer or Seller ID (already created).

@return [Hash]

# File lib/promisepay/client.rb, line 175
def generate_token(options)
  response = JSON.parse(post("token_auths", options).body)
  response['token_auth']
end
get(url, parameters = {}, skip_status_check = false) click to toggle source

Make a HTTP GET request

@param url [String] The path, relative to {#api_endpoint} @param parameters [Hash] Query params for request @return [Faraday::Response]

# File lib/promisepay/client.rb, line 67
def get(url, parameters = {}, skip_status_check = false)
  response = connection.get("#{api_endpoint}#{url}", parameters)
  on_complete(response) unless skip_status_check
  response
end
marketplace() click to toggle source

Show details of your Platform.

@see reference.promisepay.com/#show-marketplace

@return [Hash]

# File lib/promisepay/client.rb, line 123
def marketplace
  JSON.parse(get('marketplace').body)['marketplaces']
end
method_missing(name, *args, &block) click to toggle source

Catch calls for resources

Calls superclass method
# File lib/promisepay/client.rb, line 151
def method_missing(name, *args, &block)
  if self.class.resources.keys.include?(name)
    resources[name] ||= self.class.resources[name].new(self)
    resources[name]
  else
    super
  end
end
patch(url, parameters = {}) click to toggle source

Make a HTTP PATCH request

@param url [String] The path, relative to {#api_endpoint} @param parameters [Hash] Query params for request @return [Faraday::Response]

# File lib/promisepay/client.rb, line 93
def patch(url, parameters = {})
  response = connection.patch do |req|
    req.url "#{api_endpoint}#{url}"
    req.headers['Content-Type'] = 'application/json'
    req.body = parameters.to_json
  end
  on_complete(response)
  response
end
post(url, parameters = {}) click to toggle source

Make a HTTP POST request

@param url [String] The path, relative to {#api_endpoint} @param parameters [Hash] Query params for request @return [Faraday::Response]

# File lib/promisepay/client.rb, line 78
def post(url, parameters = {})
  response = connection.post do |req|
    req.url "#{api_endpoint}#{url}"
    req.headers['Content-Type'] = 'application/json'
    req.body = parameters.to_json
  end
  on_complete(response)
  response
end
resources() click to toggle source

Resources being currently used

@return [Hash]

# File lib/promisepay/client.rb, line 163
def resources
  @resources ||= {}
end

Private Instance Methods

on_complete(response) click to toggle source
# File lib/promisepay/client.rb, line 182
def on_complete(response)
  fail Promisepay::Error.from_response(response, @errors_format) unless response.success?
end