Class: CommandTower::Deserializers::Messaging::Inbox::ListDeserializer

Inherits:
ApplicationDeserializer show all
Defined in:
app/deserializers/command_tower/deserializers/messaging/inbox.rb

Defined Under Namespace

Classes: Input

Constant Summary collapse

DEFAULT_LIMIT =
50
MAX_LIMIT =
100
ALLOWED_SCOPES =
%w[inbox archived].freeze

Instance Method Summary collapse

Methods inherited from ApplicationDeserializer

call

Instance Method Details

#call(params) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
# File 'app/deserializers/command_tower/deserializers/messaging/inbox.rb', line 13

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

  offset = integer(params[:offset], default: 0, minimum: 0)
  return failure(errors: { message: "invalid_offset" }) if offset.nil?

  scope = params[:scope].presence || "inbox"
  return failure(errors: { message: "invalid_scope" }) unless scope.is_a?(String) && ALLOWED_SCOPES.include?(scope.strip)

  success(Input.new(limit:, offset:, scope: scope.strip))
end