Class: CommandTower::Deserializers::Audit::Events::UserListDeserializer

Inherits:
CommandTower::Deserializers::ApplicationDeserializer show all
Defined in:
app/deserializers/command_tower/deserializers/audit/events.rb

Direct Known Subclasses

AdminListDeserializer

Defined Under Namespace

Classes: Input

Constant Summary collapse

DEFAULT_LIMIT =
50
MAX_LIMIT =
100
MAX_MULTI =
50
EVENT_NAME =
/\A[a-z][a-z0-9_]*\z/
SUBJECT_TYPE =
/\A[A-Z][A-Za-z0-9_:]*\z/

Instance Method Summary collapse

Methods inherited from CommandTower::Deserializers::ApplicationDeserializer

call

Instance Method Details

#call(params) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'app/deserializers/command_tower/deserializers/audit/events.rb', line 15

def call(params)
  limit = pagination_integer(fetch_param(params, :limit).value, default: DEFAULT_LIMIT, minimum: 1, maximum: MAX_LIMIT)
  return failure(errors: { message: "invalid_limit" }) if limit.nil?

  offset = pagination_integer(fetch_param(params, :offset).value, default: 0, minimum: 0)
  return failure(errors: { message: "invalid_offset" }) if offset.nil?

  actions = optional_event_names(params)
  return actions if deserializer_result?(actions)

  occurred_after = optional_time(fetch_param(params, :occurredAfter, :occurred_after).value, field: "occurredAfter")
  return occurred_after if deserializer_result?(occurred_after)

  occurred_before = optional_time(fetch_param(params, :occurredBefore, :occurred_before).value, field: "occurredBefore")
  return occurred_before if deserializer_result?(occurred_before)

  subject_types = optional_subject_types(params)
  return subject_types if deserializer_result?(subject_types)

  success(Input.new(limit:, offset:, actions:, occurred_after:, occurred_before:, subject_types:))
end