The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

WebService::Async::Segment - Unofficial support for the Segment service

DESCRIPTION

This class acts as a Future-based async Perl wrapper for segment HTTP API.

METHODS

configure

Overrides the same method of the parent class IO::Async::Notifier; required for object initialization.

parameters:

  • write_key - the API token of a Segment source.

  • base_uri - the base uri of the Segment host, primarily useful for setting up test mock servers.

write_key

API token of the intended Segment source

base_uri

Server endpoint. Defaults to https://api.segment.io/v1/.

Returns a URI instance.

ua

A Net::Async::HTTP object acting as HTTP user agent

basic_authentication

Settings required for basic HTTP authentication

method_call

Makes a Segment method call. It automatically defaults sent_at to the current time and context->{library} to the current module.

It takes the following named parameters:

  • method - required. Segment method name (such as identify and track).

  • args - optional. Method arguments represented as a dictionary. This may include either common, method-specific or custom fields.

Please refer to https://segment.com/docs/spec/common/ for a full list of common fields supported by Segment.

It returns a Future object.

new_customer

Creates a new WebService::Async::Segment::Customer object as the starting point of making identify and track calls. It may takes the following named standard arguments to populate the customer onject with:

  • user_id or userId - Unique identifier of a user.

  • anonymous_id or anonymousId- A pseudo-unique substitute for a User ID, for cases when you don't have an absolutely unique identifier.

  • traits - Free-form dictionary of traits of the user, like email or name.

_snake_case_to_camelCase

Creates a deep copy of API call args, replacing the standard snake_case keys with equivalent camelCases, necessary to keep consistent with Segment HTTP API. It doesn't automatically alter any non-standard custom keys even they are snake_case.

  • $args - call args as a hash reference.

  • $snake_fields - a hash ref representing mapping from snake_case to camelCase.

Returns a hash reference of args with altered keys.

INHERITED METHODS

IO::Async::Notifier

add_child, adopt_future, adopted_futures, can_event, children, configure_unknown, debug_printf, get_loop, invoke_error, invoke_event, loop, make_event_cb, maybe_invoke_event, maybe_make_event_cb, new, notifier_name, parent, remove_child, remove_from_parent

AUTHOR

deriv.com DERIV@cpan.org

LICENSE

Copyright deriv.com 2019. Licensed under the same terms as Perl itself.