Class: PostHog::FieldParser

Inherits:
Object
  • Object
show all
Extended by:
Utils
Defined in:
lib/posthog/field_parser.rb

Constant Summary

Constants included from Utils

Utils::UTC_OFFSET_WITHOUT_COLON, Utils::UTC_OFFSET_WITH_COLON

Class Method Summary collapse

Methods included from Utils

date_in_iso8601, datetime_in_iso8601, formatted_offset, isoify_dates, isoify_dates!, seconds_to_utc_offset, stringify_keys, symbolize_keys, symbolize_keys!, time_in_iso8601, uid

Class Method Details

.parse_for_alias(fields) ⇒ Object

In addition to the common fields, alias accepts:

  • “alias”



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/posthog/field_parser.rb', line 54

def parse_for_alias(fields)
  common = parse_common_fields(fields)

  distinct_id = common[:distinct_id] # must both be set and move to properties

  alias_field = fields[:alias]
  check_presence! alias_field, 'alias'

  common.merge(
    {
      type: 'alias',
      event: '$create_alias',
      distinct_id: distinct_id,
      properties:
        { distinct_id: distinct_id, alias: alias_field }.merge(
          common[:properties] || {}
        )
    }
  )
end

.parse_for_capture(fields) ⇒ Object

In addition to the common fields, capture accepts:

  • “event”

  • “properties”



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/posthog/field_parser.rb', line 10

def parse_for_capture(fields)
  common = parse_common_fields(fields)

  event = fields[:event]
  properties = fields[:properties] || {}

  check_presence!(event, 'event')
  check_is_hash!(properties, 'properties')

  isoify_dates! properties

  common.merge(
    {
      type: 'capture',
      event: event.to_s,
      properties: properties.merge(common[:properties] || {})
    }
  )
end

.parse_for_identify(fields) ⇒ Object

In addition to the common fields, identify accepts:

  • “properties”



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/posthog/field_parser.rb', line 33

def parse_for_identify(fields)
  common = parse_common_fields(fields)

  properties = fields[:properties] || {}
  check_is_hash!(properties, 'properties')

  isoify_dates! properties

  common.merge(
    {
      type: 'identify',
      event: '$identify',
      '$set': properties,
      properties: properties.merge(common[:properties] || {})
    }
  )
end