Module: PaystackSdk::Utils::ConnectionUtils

Included in:
Client, Resources::Base
Defined in:
lib/paystack_sdk/utils/connection_utils.rb

Overview

The ConnectionUtils module provides shared functionality for creating and initializing API connections. This is used by both the Client class and resource classes.

Constant Summary collapse

BASE_URL =

The base URL for the Paystack API.

"https://api.paystack.co"

Instance Method Summary collapse

Instance Method Details

#create_connection(secret_key:) ⇒ Faraday::Connection

Creates a new Faraday connection with the Paystack API.

Parameters:

  • secret_key (String)

    The secret API key for authenticating with the Paystack API.

Returns:

  • (Faraday::Connection)

    A configured Faraday connection.



36
37
38
39
40
41
42
43
44
45
# File 'lib/paystack_sdk/utils/connection_utils.rb', line 36

def create_connection(secret_key:)
  Faraday.new(url: BASE_URL) do |conn|
    conn.request :json
    conn.response :json, content_type: /\bjson$/
    conn.headers["Authorization"] = "Bearer #{secret_key}"
    conn.headers["Content-Type"] = "application/json"
    conn.headers["User-Agent"] = "paystack_sdk/#{PaystackSdk::VERSION}"
    conn.adapter Faraday.default_adapter
  end
end

#initialize_connection(connection = nil, secret_key: nil) ⇒ Faraday::Connection

Initializes a connection based on the provided parameters.

Parameters:

  • connection (Faraday::Connection, nil) (defaults to: nil)

    An existing connection object.

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

    Optional API key to use for creating a new connection.

Returns:

  • (Faraday::Connection)

    A connection object for API requests.

Raises:



18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/paystack_sdk/utils/connection_utils.rb', line 18

def initialize_connection(connection = nil, secret_key: nil)
  if connection
    connection
  elsif secret_key
    create_connection(secret_key:)
  else
    # Try to get API key from environment variable
    env_secret_key = ENV["PAYSTACK_SECRET_KEY"]
    raise AuthenticationError, "No connection or API key provided" unless env_secret_key

    create_connection(secret_key: env_secret_key)
  end
end