Module: ShopCircle::Orbit::Validation

Defined in:
lib/shopcircle/orbit/validation.rb

Constant Summary collapse

MAX_EVENT_NAME_LENGTH =
80
MAX_DEVICE_ID_LENGTH =
128
MAX_PROPERTIES_BYTES =
10_240
RESERVED_NAMES =
%w[session_start session_end].freeze

Class Method Summary collapse

Class Method Details

.validate_device_id!(device_id) ⇒ Object

Raises:



29
30
31
32
# File 'lib/shopcircle/orbit/validation.rb', line 29

def validate_device_id!(device_id)
  return if device_id.nil?
  raise ValidationError, "device_id max #{MAX_DEVICE_ID_LENGTH} chars" if device_id.to_s.length > MAX_DEVICE_ID_LENGTH
end

.validate_event_name!(name) ⇒ Object

Raises:



14
15
16
17
18
# File 'lib/shopcircle/orbit/validation.rb', line 14

def validate_event_name!(name)
  raise ValidationError, "event name is required" if name.nil? || name.to_s.strip.empty?
  raise ValidationError, "event name max #{MAX_EVENT_NAME_LENGTH} chars" if name.to_s.length > MAX_EVENT_NAME_LENGTH
  raise ValidationError, "event name '#{name}' is reserved" if RESERVED_NAMES.include?(name.to_s)
end

.validate_properties!(props) ⇒ Object



20
21
22
23
24
25
26
27
# File 'lib/shopcircle/orbit/validation.rb', line 20

def validate_properties!(props)
  return if props.nil? || props.empty?

  size = estimate_byte_size(props)
  if size > MAX_PROPERTIES_BYTES
    raise ValidationError, "properties too large (~#{size} bytes, max #{MAX_PROPERTIES_BYTES})"
  end
end