Class: Praxis::RequestStages::ValidatePayload

Inherits:
RequestStage show all
Defined in:
lib/praxis/request_stages/validate_payload.rb

Instance Attribute Summary collapse

Attributes inherited from Stage

#after_callbacks, #before_callbacks, #context, #name, #stages

Instance Method Summary collapse

Methods inherited from RequestStage

#action, #controller, #execute_controller_callbacks, #execute_with_around, #request, #run, #setup!, #validation_handler

Methods inherited from Stage

#after, #application, #before, #callback_args, #execute_callbacks, #run, #setup!, #setup_deferred_callbacks!

Constructor Details

#initialize(name, context, parent:) ⇒ ValidatePayload

Returns a new instance of ValidatePayload.



8
9
10
11
# File 'lib/praxis/request_stages/validate_payload.rb', line 8

def initialize(name, context, parent:)
  super
  @parent = parent
end

Instance Attribute Details

#parentObject (readonly)

Returns the value of attribute parent.



6
7
8
# File 'lib/praxis/request_stages/validate_payload.rb', line 6

def parent
  @parent
end

Instance Method Details

#executeObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/praxis/request_stages/validate_payload.rb', line 17

def execute
  return unless request.action.payload

  begin
    request.load_payload(CONTEXT_FOR[:payload])
  rescue StandardError => e
    message = "Error loading payload. Used Content-Type: '#{request.content_type}'"
    return validation_handler.handle!(
      exception: e,
      summary: message,
      request: request,
      stage: name
    )
  end

  errors = request.validate_payload(CONTEXT_FOR[:payload])
  return unless errors.any?

  validation_handler.handle!(
    summary: 'Errors validating payload data',
    errors: errors,
    request: request,
    stage: name
  )
end

#pathObject



13
14
15
# File 'lib/praxis/request_stages/validate_payload.rb', line 13

def path
  @path ||= (@parent.path + [name])
end