Class: Stactics::Client
- Inherits:
-
Object
- Object
- Stactics::Client
- Defined in:
- lib/stactics/client.rb
Instance Method Summary collapse
- #batch(events) ⇒ Object
-
#initialize(api_key:, host: DEFAULT_HOST, timeout: 5, transport: nil) ⇒ Client
constructor
A new instance of Client.
- #submit_form(form_key, values, source: nil, external_user_id: nil) ⇒ Object
- #track(event_type, attributes = {}) ⇒ Object
Constructor Details
#initialize(api_key:, host: DEFAULT_HOST, timeout: 5, transport: nil) ⇒ Client
Returns a new instance of Client.
20 21 22 23 24 25 26 27 |
# File 'lib/stactics/client.rb', line 20 def initialize(api_key:, host: DEFAULT_HOST, timeout: 5, transport: nil) raise ArgumentError, "api_key is required" if api_key.to_s.strip.empty? @api_key = api_key @host = host.to_s.delete_suffix("/") @timeout = timeout @transport = transport || method(:perform_request) end |
Instance Method Details
#batch(events) ⇒ Object
34 35 36 37 |
# File 'lib/stactics/client.rb', line 34 def batch(events) payload = { "events" => events.map { |event| stringify_keys(event) } } request("/v1/events/batch", payload) end |
#submit_form(form_key, values, source: nil, external_user_id: nil) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/stactics/client.rb', line 39 def submit_form(form_key, values, source: nil, external_user_id: nil) raise ArgumentError, "form_key is required" if form_key.to_s.strip.empty? raise ArgumentError, "values must be a hash" unless values.is_a?(Hash) payload = { "values" => stringify_form_values(values) } payload["source"] = source unless source.nil? payload["external_user_id"] = external_user_id unless external_user_id.nil? result = request("/v1/forms/#{URI.encode_www_form_component(form_key.to_s)}/submissions", payload) FormSubmissionResult.new( accepted?: result.accepted?, submission_id: result.body["submission_id"], submitted_at: result.body["submitted_at"], message: result.body["message"], body: result.body ) end |
#track(event_type, attributes = {}) ⇒ Object
29 30 31 32 |
# File 'lib/stactics/client.rb', line 29 def track(event_type, attributes = {}) payload = stringify_keys(attributes).merge("event_type" => event_type.to_s) request("/v1/events", payload) end |