Class: Multicard::Client

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**options) ⇒ Client

Returns a new instance of Client.



7
8
9
10
11
12
13
14
15
16
# File 'lib/multicard/client.rb', line 7

def initialize(**options)
  @config = if Multicard.configuration
    Multicard.configuration.merge(options)
  else
    Configuration.new(**options)
  end
  @config.validate!
  @http_client = HttpClient.new(@config)
  @token_manager = TokenManager.new(@http_client, @config)
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



5
6
7
# File 'lib/multicard/client.rb', line 5

def config
  @config
end

Instance Method Details

#authenticated_request(method, path, body: nil, params: nil) ⇒ Response

Execute an authenticated API request. Automatically retries once on 401.

Parameters:

  • method (Symbol)

    :get, :post, or :delete

  • path (String)

    API path

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

    request body (for POST)

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

    query params (for GET/DELETE)

Returns:



33
34
35
36
37
38
# File 'lib/multicard/client.rb', line 33

def authenticated_request(method, path, body: nil, params: nil)
  execute_authenticated(method, path, body: body, params: params)
rescue AuthenticationError
  @token_manager.reset!
  execute_authenticated(method, path, body: body, params: params)
end

#cardsObject



21
# File 'lib/multicard/client.rb', line 21

def cards     = @cards ||= Resources::Cards.new(self)

#holdsObject



22
# File 'lib/multicard/client.rb', line 22

def holds     = @holds ||= Resources::Holds.new(self)

#invoicesObject

Resource accessors (lazy-initialized)



19
# File 'lib/multicard/client.rb', line 19

def invoices  = @invoices ||= Resources::Invoices.new(self)

#paymentsObject



20
# File 'lib/multicard/client.rb', line 20

def payments  = @payments ||= Resources::Payments.new(self)

#payoutsObject



23
# File 'lib/multicard/client.rb', line 23

def payouts   = @payouts ||= Resources::Payouts.new(self)

#registryObject



24
# File 'lib/multicard/client.rb', line 24

def registry  = @registry ||= Resources::Registry.new(self)