Class: Risenexa::Tracking::Client

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

Overview

Per-instance client for the Risenexa Tracking SDK.

Fully independent of the global configuration — each instance has its own api_key, startup_slug, and other options. Multiple instances can coexist without interference.

Examples:

client = Risenexa::Tracking::Client.new(
  api_key: "rxt_live_abc123",
  startup_slug: "my-startup"
)
result = client.track_registration(user_id: "usr_456")

Instance Method Summary collapse

Constructor Details

#initialize(api_key: nil, startup_slug: nil, base_url: "https://app.risenexa.com", timeout: 2000, max_retries: 3) ⇒ Client

Returns a new instance of Client.

Parameters:

  • api_key (String, nil) (defaults to: nil) —

    Bearer token with tracking:write scope

  • startup_slug (String, nil) (defaults to: nil) —

    Slug identifying the startup

  • base_url (String) (defaults to: "https://app.risenexa.com") —

    Base URL for the Risenexa API

  • timeout (Integer) (defaults to: 2000) —

    Per-request timeout in milliseconds

  • max_retries (Integer) (defaults to: 3) —

    Maximum retry attempts (0 disables retries)



23
24
25
26
27
28
29
30
# File 'lib/risenexa/tracking/client.rb', line 23

def initialize(api_key: nil, startup_slug: nil, base_url: "https://app.risenexa.com",
               timeout: 2000, max_retries: 3)
  @api_key      = api_key
  @startup_slug = startup_slug
  @base_url     = base_url
  @timeout      = timeout
  @max_retries  = max_retries
end

Instance Method Details

#track(event_type:, user_id:, **opts) ⇒ Result

Low-level track method accepting all HTTP contract fields.

Parameters:

  • event_type (String) —

    "user_registered" or "user_converted"

  • user_id (String) —

    Opaque identifier for the user

  • opts (Hash) —

    Optional: event_id, occurred_at, metadata, action

Returns:

Raises:



59
60
61
62
63
64
# File 'lib/risenexa/tracking/client.rb', line 59

def track(event_type:, user_id:, **opts)
  validate_configuration!

  payload = build_payload(event_type: event_type, user_id: user_id, **opts)
  http_client.post(payload)
end

#track_conversion(user_id:, **opts) ⇒ Result

Track a user conversion event (event_type: "user_converted", action: "add").

Parameters:

  • user_id (String) —

    Opaque identifier for the user

  • opts (Hash) —

    Optional fields: event_id, occurred_at, metadata, action

Returns:

Raises:



48
49
50
# File 'lib/risenexa/tracking/client.rb', line 48

def track_conversion(user_id:, **opts)
  track(event_type: "user_converted", user_id: user_id, action: "add", **opts)
end

#track_registration(user_id:, **opts) ⇒ Result

Track a user registration event (event_type: "user_registered", action: "add").

Parameters:

  • user_id (String) —

    Opaque identifier for the user

  • opts (Hash) —

    Optional fields: event_id, occurred_at, metadata, action

Returns:

Raises:



38
39
40
# File 'lib/risenexa/tracking/client.rb', line 38

def track_registration(user_id:, **opts)
  track(event_type: "user_registered", user_id: user_id, action: "add", **opts)
end