Class: StraddlePay::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/straddle_pay/client.rb

Overview

HTTP client for the Straddle API. Uses Faraday under the hood.

Examples:

client = StraddlePay::Client.new
client.charges.create(paykey: "pk_abc", amount: 10_000, ...)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key: nil, environment: nil, base_url: nil, logger: nil, open_timeout: nil, read_timeout: nil) ⇒ Client

Returns a new instance of Client.

Parameters:

  • api_key (String, nil) (defaults to: nil)

    override global API key

  • environment (Symbol, nil) (defaults to: nil)

    :sandbox or :production (overrides global environment)

  • base_url (String, nil) (defaults to: nil)

    custom base URL (takes precedence over environment)

  • logger (Logger, nil) (defaults to: nil)

    override global logger

  • open_timeout (Integer, nil) (defaults to: nil)

    connection open timeout in seconds

  • read_timeout (Integer, nil) (defaults to: nil)

    response read timeout in seconds

Raises:

  • (ArgumentError)

    if no API key is configured



25
26
27
28
29
30
31
32
33
34
# File 'lib/straddle_pay/client.rb', line 25

def initialize(api_key: nil, environment: nil, base_url: nil, logger: nil, open_timeout: nil, read_timeout: nil)
  configuration = StraddlePay.config
  @api_key      = api_key || configuration.api_key
  @base_url     = base_url || resolve_base_url(environment, configuration)
  @logger       = logger       || configuration.logger
  @open_timeout = open_timeout || configuration.open_timeout
  @read_timeout = read_timeout || configuration.read_timeout

  raise ArgumentError, "Missing API key for StraddlePay" if @api_key.to_s.empty?
end

Instance Attribute Details

#api_keyString (readonly)

Returns API key used for authentication.

Returns:

  • (String)

    API key used for authentication



14
15
16
# File 'lib/straddle_pay/client.rb', line 14

def api_key
  @api_key
end

#base_urlString (readonly)

Returns base URL for API requests.

Returns:

  • (String)

    base URL for API requests



16
17
18
# File 'lib/straddle_pay/client.rb', line 16

def base_url
  @base_url
end

Instance Method Details

#account_settingsResources::AccountSettings



41
42
# File 'lib/straddle_pay/client.rb', line 41

def  = @account_settings ||= Resources::AccountSettings.new(self)
# @return [Resources::Paykeys]

#bridgeResources::Bridge

Returns:



39
40
# File 'lib/straddle_pay/client.rb', line 39

def bridge         = @bridge ||= Resources::Bridge.new(self)
# @return [Resources::AccountSettings]

#chargesResources::Charges

Returns:



45
46
# File 'lib/straddle_pay/client.rb', line 45

def charges        = @charges ||= Resources::Charges.new(self)
# @return [Resources::Payouts]

#customersResources::Customers



37
38
# File 'lib/straddle_pay/client.rb', line 37

def customers      = @customers ||= Resources::Customers.new(self)
# @return [Resources::Bridge]

#delete(path, body = nil, headers: {}) ⇒ Hash

Returns parsed response data.

Parameters:

  • path (String)

    API endpoint path

  • body (Hash, nil) (defaults to: nil)

    request body (JSON-encoded)

  • headers (Hash) (defaults to: {})

    additional HTTP headers

Returns:

  • (Hash)

    parsed response data



95
96
97
# File 'lib/straddle_pay/client.rb', line 95

def delete(path, body = nil, headers: {})
  request(:delete, path, body: body, headers: headers)
end

#embedResources::Embed

Returns:



57
# File 'lib/straddle_pay/client.rb', line 57

def embed          = @embed ||= Resources::Embed.new(self)

#funding_event_paymentsResources::FundingEventPayments



53
54
# File 'lib/straddle_pay/client.rb', line 53

def funding_event_payments = @funding_event_payments ||= Resources::FundingEventPayments.new(self)
# @return [Resources::Reports]

#funding_eventsResources::FundingEvents



51
52
# File 'lib/straddle_pay/client.rb', line 51

def funding_events = @funding_events ||= Resources::FundingEvents.new(self)
# @return [Resources::FundingEventPayments]

#get(path, params: nil, headers: {}) ⇒ Hash

Returns parsed response data.

Parameters:

  • path (String)

    API endpoint path

  • params (Hash, nil) (defaults to: nil)

    query parameters

  • headers (Hash) (defaults to: {})

    additional HTTP headers

Returns:

  • (Hash)

    parsed response data



63
64
65
# File 'lib/straddle_pay/client.rb', line 63

def get(path, params: nil, headers: {})
  request(:get, path, params: params, headers: headers)
end

#patch(path, body = nil, headers: {}) ⇒ Hash

Returns parsed response data.

Parameters:

  • path (String)

    API endpoint path

  • body (Hash, nil) (defaults to: nil)

    request body (JSON-encoded)

  • headers (Hash) (defaults to: {})

    additional HTTP headers

Returns:

  • (Hash)

    parsed response data



87
88
89
# File 'lib/straddle_pay/client.rb', line 87

def patch(path, body = nil, headers: {})
  request(:patch, path, body: body, headers: headers)
end

#paykeysResources::Paykeys

Returns:



43
44
# File 'lib/straddle_pay/client.rb', line 43

def paykeys        = @paykeys ||= Resources::Paykeys.new(self)
# @return [Resources::Charges]

#paymentsResources::Payments

Returns:



49
50
# File 'lib/straddle_pay/client.rb', line 49

def payments       = @payments ||= Resources::Payments.new(self)
# @return [Resources::FundingEvents]

#payoutsResources::Payouts

Returns:



47
48
# File 'lib/straddle_pay/client.rb', line 47

def payouts        = @payouts ||= Resources::Payouts.new(self)
# @return [Resources::Payments]

#post(path, body = nil, headers: {}) ⇒ Hash

Returns parsed response data.

Parameters:

  • path (String)

    API endpoint path

  • body (Hash, nil) (defaults to: nil)

    request body (JSON-encoded)

  • headers (Hash) (defaults to: {})

    additional HTTP headers

Returns:

  • (Hash)

    parsed response data



71
72
73
# File 'lib/straddle_pay/client.rb', line 71

def post(path, body = nil, headers: {})
  request(:post, path, body: body, headers: headers)
end

#put(path, body = nil, headers: {}) ⇒ Hash

Returns parsed response data.

Parameters:

  • path (String)

    API endpoint path

  • body (Hash, nil) (defaults to: nil)

    request body (JSON-encoded)

  • headers (Hash) (defaults to: {})

    additional HTTP headers

Returns:

  • (Hash)

    parsed response data



79
80
81
# File 'lib/straddle_pay/client.rb', line 79

def put(path, body = nil, headers: {})
  request(:put, path, body: body, headers: headers)
end

#reportsResources::Reports

Returns:



55
56
# File 'lib/straddle_pay/client.rb', line 55

def reports        = @reports ||= Resources::Reports.new(self)
# @return [Resources::Embed]