Class: Dinie::Client
- Inherits:
-
Object
- Object
- Dinie::Client
- Defined in:
- lib/dinie/generated/client.rb,
sig/dinie/generated/client.rbs
Constant Summary collapse
- DEFAULT_TIMEOUT_SECONDS =
Internal::HttpClient::DEFAULT_TIMEOUT_SECONDS
- DEFAULT_MAX_RETRIES =
Internal::HttpClient::DEFAULT_MAX_RETRIES
Instance Method Summary collapse
-
#banks ⇒ Dinie::Resources::Banks
The banks resource (flat
Array<Bank>list). - #biometrics ⇒ Object
- #build_connection(log_level:, logger:, adapter:) ⇒ Object
- #build_token_manager(client_id, client_secret, code = nil) ⇒ Dinie::Internal::TokenManager
-
#credentials ⇒ Dinie::Resources::Credentials
The credentials resource.
-
#credit_offers ⇒ Dinie::Resources::CreditOffers
The credit-offers resource.
-
#customers ⇒ Dinie::Resources::Customers
The customers resource.
- #first_present(*candidates) ⇒ Object
-
#initialize(client_id: nil, client_secret: nil, code: nil, base_url: nil, timeout: DEFAULT_TIMEOUT_SECONDS, max_retries: DEFAULT_MAX_RETRIES, idempotency: true, log_level: :off, logger: nil, adapter: nil, token_manager: nil, connection: nil) ⇒ Client
constructor
A new instance of Client.
-
#loans ⇒ Dinie::Resources::Loans
The loans resource.
-
#rate_limit ⇒ Dinie::RateLimit?
The latest rate-limit snapshot;
nilbefore the first call. -
#webhook_endpoints ⇒ Dinie::Resources::WebhookEndpoints
The webhook-endpoints resource.
-
#with_options(**overrides) ⇒ Dinie::Client
Clone the client with merged config, sharing the same TokenManager + connection.
Constructor Details
#initialize(client_id: nil, client_secret: nil, code: nil, base_url: nil, timeout: DEFAULT_TIMEOUT_SECONDS, max_retries: DEFAULT_MAX_RETRIES, idempotency: true, log_level: :off, logger: nil, adapter: nil, token_manager: nil, connection: nil) ⇒ Client
Returns a new instance of Client.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/dinie/generated/client.rb', line 12 def initialize(client_id: nil, client_secret: nil, code: nil, base_url: nil, timeout: DEFAULT_TIMEOUT_SECONDS, max_retries: DEFAULT_MAX_RETRIES, idempotency: true, log_level: :off, logger: nil, adapter: nil, token_manager: nil, connection: nil) @base_url = first_present(base_url, ENV.fetch("DINIE_BASE_URL", nil)) || Internal::HttpClient::DEFAULT_BASE_URL = { timeout: timeout, max_retries: max_retries, idempotency: idempotency, log_level: log_level, logger: logger, adapter: adapter } @connection = connection || build_connection(log_level: log_level, logger: logger, adapter: adapter) @token_manager = token_manager || build_token_manager(client_id, client_secret, code) @http = Internal::HttpClient.new( token_manager: @token_manager, base_url: @base_url, timeout: timeout, max_retries: max_retries, idempotency: idempotency, connection: @connection ) end |
Instance Method Details
#banks ⇒ Dinie::Resources::Banks
The banks resource (flat Array<Bank> list).
25 26 27 |
# File 'sig/dinie/generated/client.rbs', line 25 def banks @banks ||= Resources::Banks.new(@http) end |
#biometrics ⇒ Object
33 34 35 |
# File 'lib/dinie/generated/client.rb', line 33 def biometrics @biometrics ||= Resources::Biometrics.new(@http) end |
#build_connection(log_level:, logger:, adapter:) ⇒ Object
84 85 86 87 88 89 90 |
# File 'lib/dinie/generated/client.rb', line 84 def build_connection(log_level:, logger:, adapter:) Faraday.new(url: @base_url) do |faraday| faraday.request :multipart faraday.use Internal::Middleware::Logging, level: log_level, logger: logger faraday.adapter(adapter || :net_http_persistent) end end |
#build_token_manager(client_id, client_secret, code = nil) ⇒ Dinie::Internal::TokenManager
70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/dinie/generated/client.rb', line 70 def build_token_manager(client_id, client_secret, code = nil) resolved_id = first_present(client_id, ENV.fetch("DINIE_CLIENT_ID", nil)) resolved_secret = first_present(client_secret, ENV.fetch("DINIE_CLIENT_SECRET", nil)) raise Dinie::Error, "Missing Dinie client id: pass `client_id:` or set DINIE_CLIENT_ID." if resolved_id.nil? if resolved_secret.nil? raise Dinie::Error, "Missing Dinie client secret: pass `client_secret:` or set DINIE_CLIENT_SECRET." end Internal::TokenManager.new( client_id: resolved_id, client_secret: resolved_secret, base_url: @base_url, connection: @connection, code: code ) end |
#credentials ⇒ Dinie::Resources::Credentials
The credentials resource.
28 29 30 |
# File 'sig/dinie/generated/client.rbs', line 28 def credentials @credentials ||= Resources::Credentials.new(@http) end |
#credit_offers ⇒ Dinie::Resources::CreditOffers
The credit-offers resource.
19 20 21 |
# File 'sig/dinie/generated/client.rbs', line 19 def credit_offers @credit_offers ||= Resources::CreditOffers.new(@http) end |
#customers ⇒ Dinie::Resources::Customers
The customers resource.
16 17 18 |
# File 'sig/dinie/generated/client.rbs', line 16 def customers @customers ||= Resources::Customers.new(@http) end |
#first_present(*candidates) ⇒ Object
92 93 94 |
# File 'lib/dinie/generated/client.rb', line 92 def first_present(*candidates) candidates.find { |value| !value.nil? && value != "" } end |
#loans ⇒ Dinie::Resources::Loans
The loans resource.
22 23 24 |
# File 'sig/dinie/generated/client.rbs', line 22 def loans @loans ||= Resources::Loans.new(@http) end |
#rate_limit ⇒ Dinie::RateLimit?
The latest rate-limit snapshot; nil before the first call.
34 35 36 |
# File 'sig/dinie/generated/client.rbs', line 34 def rate_limit @http.rate_limit end |
#webhook_endpoints ⇒ Dinie::Resources::WebhookEndpoints
The webhook-endpoints resource.
31 32 33 |
# File 'sig/dinie/generated/client.rbs', line 31 def webhook_endpoints @webhook_endpoints ||= Resources::WebhookEndpoints.new(@http) end |
#with_options(**overrides) ⇒ Dinie::Client
Clone the client with merged config, sharing the same TokenManager + connection.
37 38 39 40 41 42 |
# File 'sig/dinie/generated/client.rbs', line 37 def (**overrides) self.class.new( base_url: @base_url, token_manager: @token_manager, connection: @connection, **.merge(overrides) ) end |