Sha256: e98cd9c6832f8f2f718b0fa4a598ae60c63a602471e074811a0513e3cd0391a2

Contents?: true

Size: 957 Bytes

Versions: 4

Compression:

Stored size: 957 Bytes

Contents

module Praxis
  module RequestStages

    class ValidatePayload < RequestStage

      attr_reader :parent

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

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

      def execute
        if request.action.payload
          begin
            request.load_payload(CONTEXT_FOR[:payload])
          rescue Attributor::AttributorException => e
            message = e.message
            message << ". For request Content-Type: '#{request.content_type}'"
            return Responses::ValidationError.new(exception: e, message: message)
          end
          Attributor::AttributeResolver.current.register("payload",request.payload)

          errors = request.validate_payload(CONTEXT_FOR[:payload])
          if errors.any?
            return Responses::ValidationError.new(errors: errors)
          end
        end
      end

    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
praxis-0.16.1 lib/praxis/request_stages/validate_payload.rb
praxis-0.16.0 lib/praxis/request_stages/validate_payload.rb
praxis-0.15.0 lib/praxis/request_stages/validate_payload.rb
praxis-0.14.0 lib/praxis/request_stages/validate_payload.rb