Class: SimpleConnect::MessagesClient

Inherits:
Object
  • Object
show all
Defined in:
lib/simple_connect/messages_client.rb

Overview

Entry point for the account Message API. Assembles the Bearer-auth transport once, then exposes a single resource object:

MSG = SimpleConnect::MessagesClient.new(base_url:, api_key:)
MSG.messages.deliver(template_name:, recipients:, ...)

Distinct from SimpleConnect::Client (which signs Events over HMAC): a caller holding only an account api_key — with no integration — uses this. See docs/adr/0001-messages-use-separate-bearer-client.md.

Constant Summary collapse

DEFAULT_TIMEOUT =
10

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base_url:, api_key:, timeout: DEFAULT_TIMEOUT, logger: nil, max_attempts: nil, retryable: nil, user_agent: nil, debug: true, ip_version: nil) ⇒ MessagesClient

Returns a new instance of MessagesClient.

Parameters:

  • base_url (String)

    the app host, e.g. “app.simplewaconnect.com”. The fixed message path is appended by the resource.

  • api_key (String)

    account API key (‘sk_live_…`) sent as a Bearer token.

  • timeout (Integer) (defaults to: DEFAULT_TIMEOUT)

    HTTP read/open timeout in seconds.

  • logger (#info, #warn, nil) (defaults to: nil)

    optional logger for transport events.

  • max_attempts (Integer) (defaults to: nil)

    total HTTP attempts (including the first). Default 3. Pass ‘1` to disable library retries. Mutually exclusive with `retryable:`.

  • retryable (SimpleConnect::Retryable, nil) (defaults to: nil)

    custom retry policy. Mutually exclusive with ‘max_attempts:`.

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

    override the default User-Agent header.

  • debug (Boolean) (defaults to: true)

    when true, log the complete outgoing request (method, URL, headers, body) and the full response (status, headers, body) for each message API call. Defaults to false.

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

    pin the connection to a single IP family — ‘:ipv4` or `:ipv6` (see Request::IPV4 / Request::IPV6). Defaults to nil, which leaves resolution to the OS (dual-stack).



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/simple_connect/messages_client.rb', line 37

def initialize(base_url:, api_key:,
               timeout: DEFAULT_TIMEOUT, logger: nil,
               max_attempts: nil, retryable: nil, user_agent: nil,
               debug: true, ip_version: nil)
  validate_config!(base_url: base_url, api_key: api_key, max_attempts: max_attempts,
                   retryable: retryable, ip_version: ip_version)

  base_uri = URI.parse(base_url)
  request = Request.new(
    headers: BearerHeaders.new(api_key: api_key, user_agent: user_agent),
    timeout: timeout,
    logger: logger,
    retryable: retryable || Retryable.new(max_attempts: max_attempts || Retryable::DEFAULT_MAX_ATTEMPTS),
    debug: debug,
    ip_version: ip_version
  )
  @messages = Api::Messages.new(request: request, base_uri: base_uri)
end

Instance Attribute Details

#messagesObject (readonly)

Returns the value of attribute messages.



16
17
18
# File 'lib/simple_connect/messages_client.rb', line 16

def messages
  @messages
end