class Promisepay::Client
Client
for the Promisepay
API
Public Class Methods
# 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
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
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
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
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
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
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
Catch calls for resources
# 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
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
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 being currently used
@return [Hash]
# File lib/promisepay/client.rb, line 163 def resources @resources ||= {} end
Private Instance Methods
# File lib/promisepay/client.rb, line 182 def on_complete(response) fail Promisepay::Error.from_response(response, @errors_format) unless response.success? end