Module: Voltaria

Defined in:
lib/voltaria/client.rb,
lib/voltaria/version.rb,
lib/voltaria/environment.rb,
lib/voltaria/loans/client.rb,
lib/voltaria/clients/client.rb,
lib/voltaria/prefix_routing.rb,
lib/voltaria/sandbox/client.rb,
lib/voltaria/accounts/client.rb,
lib/voltaria/partners/client.rb,
lib/voltaria/webhooks/client.rb,
lib/voltaria/documents/client.rb,
lib/voltaria/drawdowns/client.rb,
lib/voltaria/errors/api_error.rb,
lib/voltaria/investors/client.rb,
lib/voltaria/repayments/client.rb,
lib/voltaria/errors/client_error.rb,
lib/voltaria/errors/server_error.rb,
lib/voltaria/installments/client.rb,
lib/voltaria/internal/types/enum.rb,
lib/voltaria/internal/types/hash.rb,
lib/voltaria/internal/types/type.rb,
lib/voltaria/types/currency_enum.rb,
lib/voltaria/types/role_response.rb,
lib/voltaria/errors/timeout_error.rb,
lib/voltaria/internal/types/array.rb,
lib/voltaria/internal/types/model.rb,
lib/voltaria/internal/types/union.rb,
lib/voltaria/internal/types/utils.rb,
lib/voltaria/errors/redirect_error.rb,
lib/voltaria/errors/response_error.rb,
lib/voltaria/internal/json/request.rb,
lib/voltaria/types/account_address.rb,
lib/voltaria/types/client_response.rb,
lib/voltaria/types/kyc_status_enum.rb,
lib/voltaria/types/waiver_response.rb,
lib/voltaria/internal/types/boolean.rb,
lib/voltaria/internal/types/unknown.rb,
lib/voltaria/types/bulk_loan_result.rb,
lib/voltaria/types/client_base_info.rb,
lib/voltaria/types/client_type_enum.rb,
lib/voltaria/types/loan_status_enum.rb,
lib/voltaria/types/validation_error.rb,
lib/voltaria/types/available_funding.rb,
lib/voltaria/types/document_response.rb,
lib/voltaria/types/drawdown_response.rb,
lib/voltaria/types/jurisdiction_enum.rb,
lib/voltaria/internal/http/raw_client.rb,
lib/voltaria/types/client_status_enum.rb,
lib/voltaria/types/repayment_response.rb,
lib/voltaria/types/waiver_status_enum.rb,
lib/voltaria/types/waterfall_response.rb,
lib/voltaria/types/account_status_enum.rb,
lib/voltaria/types/checklist_type_enum.rb,
lib/voltaria/types/currency_field_spec.rb,
lib/voltaria/types/webhook_status_enum.rb,
lib/voltaria/internal/errors/type_error.rb,
lib/voltaria/internal/http/base_request.rb,
lib/voltaria/internal/json/serializable.rb,
lib/voltaria/internal/types/model/field.rb,
lib/voltaria/types/client_data_response.rb,
lib/voltaria/types/client_user_response.rb,
lib/voltaria/types/drawdown_status_enum.rb,
lib/voltaria/types/installment_response.rb,
lib/voltaria/types/webhook_log_response.rb,
lib/voltaria/types/bulk_loan_item_result.rb,
lib/voltaria/types/bulk_loan_task_status.rb,
lib/voltaria/types/bulk_repayment_result.rb,
lib/voltaria/types/client_limit_response.rb,
lib/voltaria/types/http_validation_error.rb,
lib/voltaria/types/partner_data_response.rb,
lib/voltaria/types/waterfall_status_enum.rb,
lib/voltaria/types/bulk_loan_item_payload.rb,
lib/voltaria/types/limit_request_response.rb,
lib/voltaria/types/loan_investor_response.rb,
lib/voltaria/types/bulk_loan_task_response.rb,
lib/voltaria/types/client_account_response.rb,
lib/voltaria/types/client_user_status_enum.rb,
lib/voltaria/types/installment_status_enum.rb,
lib/voltaria/types/webhook_event_type_enum.rb,
lib/voltaria/loans/types/list_loans_request.rb,
lib/voltaria/types/account_holder_type_enum.rb,
lib/voltaria/types/client_investor_response.rb,
lib/voltaria/types/loan_payment_status_enum.rb,
lib/voltaria/types/payment_promise_response.rb,
lib/voltaria/loans/types/delete_loan_request.rb,
lib/voltaria/loans/types/loan_create_payload.rb,
lib/voltaria/types/limit_request_status_enum.rb,
lib/voltaria/types/loan_installment_response.rb,
lib/voltaria/types/validation_error_loc_item.rb,
lib/voltaria/internal/errors/constraint_error.rb,
lib/voltaria/internal/iterators/item_iterator.rb,
lib/voltaria/loans/types/loan_default_payload.rb,
lib/voltaria/types/bulk_repayment_item_result.rb,
lib/voltaria/types/bulk_repayment_task_status.rb,
lib/voltaria/sandbox/types/loan_update_sandbox.rb,
lib/voltaria/types/bulk_repayment_item_payload.rb,
lib/voltaria/types/drawdown_checklist_response.rb,
lib/voltaria/types/payment_promise_status_enum.rb,
lib/voltaria/clients/types/list_clients_request.rb,
lib/voltaria/loans/types/get_loan_by_id_request.rb,
lib/voltaria/sandbox/types/webhook_test_sandbox.rb,
lib/voltaria/types/bulk_repayment_task_response.rb,
lib/voltaria/clients/types/client_create_payload.rb,
lib/voltaria/clients/types/delete_client_request.rb,
lib/voltaria/sandbox/types/client_update_sandbox.rb,
lib/voltaria/types/bulk_loan_item_payload_amount.rb,
lib/voltaria/types/webhook_subscription_response.rb,
lib/voltaria/internal/multipart/multipart_encoder.rb,
lib/voltaria/internal/multipart/multipart_request.rb,
lib/voltaria/loans/types/bulk_loan_create_payload.rb,
lib/voltaria/types/loan_response_with_client_info.rb,
lib/voltaria/types/loan_installment_create_payload.rb,
lib/voltaria/types/loan_response_with_installments.rb,
lib/voltaria/webhooks/types/webhook_create_payload.rb,
lib/voltaria/webhooks/types/webhook_update_payload.rb,
lib/voltaria/clients/types/get_client_by_id_request.rb,
lib/voltaria/documents/types/list_documents_request.rb,
lib/voltaria/drawdowns/types/list_drawdowns_request.rb,
lib/voltaria/internal/multipart/multipart_form_data.rb,
lib/voltaria/loans/types/loan_create_payload_amount.rb,
lib/voltaria/clients/types/get_limit_request_request.rb,
lib/voltaria/clients/types/reject_onboarding_request.rb,
lib/voltaria/documents/types/delete_document_request.rb,
lib/voltaria/documents/types/document_create_payload.rb,
lib/voltaria/drawdowns/types/drawdown_create_payload.rb,
lib/voltaria/internal/iterators/cursor_item_iterator.rb,
lib/voltaria/internal/iterators/cursor_page_iterator.rb,
lib/voltaria/internal/iterators/offset_item_iterator.rb,
lib/voltaria/internal/iterators/offset_page_iterator.rb,
lib/voltaria/types/webhook_log_response_request_body.rb,
lib/voltaria/clients/types/approve_onboarding_request.rb,
lib/voltaria/clients/types/client_data_create_payload.rb,
lib/voltaria/clients/types/client_user_invite_request.rb,
lib/voltaria/loans/types/get_bulk_loan_status_request.rb,
lib/voltaria/types/bulk_repayment_item_payload_amount.rb,
lib/voltaria/types/checklist_summary_partner_response.rb,
lib/voltaria/types/paginated_response_client_response.rb,
lib/voltaria/types/paginated_response_waiver_response.rb,
lib/voltaria/webhooks/types/list_webhook_logs_request.rb,
lib/voltaria/accounts/types/get_client_account_request.rb,
lib/voltaria/clients/types/list_client_waivers_request.rb,
lib/voltaria/clients/types/list_limit_requests_request.rb,
lib/voltaria/investors/types/investor_get_loan_request.rb,
lib/voltaria/repayments/types/repayment_create_payload.rb,
lib/voltaria/sandbox/types/client_update_sandbox_limit.rb,
lib/voltaria/types/repayment_response_with_client_info.rb,
lib/voltaria/clients/types/limit_request_create_payload.rb,
lib/voltaria/documents/types/get_document_by_id_request.rb,
lib/voltaria/partners/types/partner_data_create_payload.rb,
lib/voltaria/types/paginated_response_document_response.rb,
lib/voltaria/types/paginated_response_drawdown_response.rb,
lib/voltaria/accounts/types/list_client_accounts_request.rb,
lib/voltaria/installments/types/installment_edit_payload.rb,
lib/voltaria/internal/multipart/multipart_form_data_part.rb,
lib/voltaria/investors/types/investor_get_client_request.rb,
lib/voltaria/investors/types/investor_list_loans_request.rb,
lib/voltaria/types/installment_response_with_client_info.rb,
lib/voltaria/types/paginated_response_waterfall_response.rb,
lib/voltaria/installments/types/list_installments_request.rb,
lib/voltaria/loans/types/loan_default_payload_sold_amount.rb,
lib/voltaria/repayments/types/list_repayment_logs_request.rb,
lib/voltaria/types/available_document_categories_response.rb,
lib/voltaria/types/loan_installment_create_payload_amount.rb,
lib/voltaria/clients/types/list_onboarding_clients_request.rb,
lib/voltaria/installments/types/delete_installment_request.rb,
lib/voltaria/installments/types/installment_create_payload.rb,
lib/voltaria/investors/types/investor_list_clients_request.rb,
lib/voltaria/types/paginated_response_webhook_log_response.rb,
lib/voltaria/drawdowns/types/drawdown_create_payload_amount.rb,
lib/voltaria/partners/types/list_partner_waterfalls_request.rb,
lib/voltaria/repayments/types/bulk_repayment_create_payload.rb,
lib/voltaria/types/paginated_response_limit_request_response.rb,
lib/voltaria/types/paginated_response_loan_investor_response.rb,
lib/voltaria/webhooks/types/get_webhook_subscription_request.rb,
lib/voltaria/drawdowns/types/list_drawdown_checklists_request.rb,
lib/voltaria/installments/types/get_installment_by_id_request.rb,
lib/voltaria/installments/types/list_payment_promises_request.rb,
lib/voltaria/investors/types/investor_get_installment_request.rb,
lib/voltaria/investors/types/investor_list_repayments_request.rb,
lib/voltaria/repayments/types/repayment_create_payload_amount.rb,
lib/voltaria/types/paginated_response_client_account_response.rb,
lib/voltaria/accounts/types/list_client_account_fields_request.rb,
lib/voltaria/installments/types/payment_promise_create_payload.rb,
lib/voltaria/types/paginated_response_client_investor_response.rb,
lib/voltaria/types/paginated_response_payment_promise_response.rb,
lib/voltaria/webhooks/types/list_webhook_subscriptions_request.rb,
lib/voltaria/installments/types/installment_edit_payload_amount.rb,
lib/voltaria/investors/types/investor_list_installments_request.rb,
lib/voltaria/repayments/types/get_bulk_repayment_status_request.rb,
lib/voltaria/webhooks/types/delete_webhook_subscription_request.rb,
lib/voltaria/accounts/types/partner_client_account_create_request.rb,
lib/voltaria/types/paginated_response_drawdown_checklist_response.rb,
lib/voltaria/clients/types/list_client_checklist_summaries_request.rb,
lib/voltaria/types/paginated_response_webhook_subscription_response.rb,
lib/voltaria/types/paginated_response_loan_response_with_client_info.rb,
lib/voltaria/installments/types/payment_promise_create_payload_amount.rb,
lib/voltaria/clients/types/limit_request_create_payload_requested_limit.rb,
lib/voltaria/accounts/types/partner_client_account_create_request_status.rb,
lib/voltaria/types/paginated_response_checklist_summary_partner_response.rb,
lib/voltaria/types/paginated_response_repayment_response_with_client_info.rb,
lib/voltaria/types/paginated_response_installment_response_with_client_info.rb

Defined Under Namespace

Modules: Accounts, Clients, Documents, Drawdowns, Errors, Installments, Internal, Investors, Loans, Partners, Repayments, Sandbox, Types, Webhooks Classes: Client, Environment, InvalidApiKeyError

Constant Summary collapse

VERSION =
"2.34.7"
API_KEY_ENVIRONMENTS =

Prefix -> environment base URL mapping.

{
  "live_" => Voltaria::Environment::PRODUCTION,
  "sandbox_" => Voltaria::Environment::SANDBOX
}.freeze

Class Method Summary collapse

Class Method Details

.new(api_key, environment: nil, base_url: nil) ⇒ Voltaria::Client

Construct a Voltaria::Client, resolving the base URL from the API key prefix unless an explicit environment / base_url is given.

Parameters:

  • api_key (String)

    the API key (e.g. "live_abc", "sandbox_abc")

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

    explicit base URL; overrides prefix routing

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

    explicit base URL; overrides prefix routing

  • options (Hash)

    forwarded to Voltaria::Client.new

Returns:



52
53
54
55
# File 'lib/voltaria/prefix_routing.rb', line 52

def new(api_key, environment: nil, base_url: nil, **)
  resolved = resolve_environment(api_key, environment: environment, base_url: base_url)
  Voltaria::Client.new(token: api_key, base_url: base_url || resolved, **)
end

.resolve_environment(api_key, environment: nil, base_url: nil) ⇒ String?

Resolve the base URL to use.

Mirrors the reference behavior exactly:

- explicit environment wins
- explicit base_url defers resolution to the caller (returns nil here)
- otherwise derive from the api_key prefix
- unknown / empty prefix raises InvalidApiKeyError

Parameters:

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

Returns:

  • (String, nil)

Raises:



70
71
72
73
74
75
76
77
78
# File 'lib/voltaria/prefix_routing.rb', line 70

def resolve_environment(api_key, environment: nil, base_url: nil)
  return environment if environment
  return nil if base_url

  prefix = API_KEY_ENVIRONMENTS.keys.find { |p| api_key.to_s.start_with?(p) }
  raise InvalidApiKeyError unless prefix

  API_KEY_ENVIRONMENTS.fetch(prefix)
end