Sha256: 198b1ef9669c77bcf63aec5470859c3d77ebc9bb9deaca4b0a9a3506263925ff

Contents?: true

Size: 1.59 KB

Versions: 27

Compression:

Stored size: 1.59 KB

Contents

module Praxis
  module RequestStages

    class ValidateParamsAndHeaders < RequestStage
      attr_reader :parent

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

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

      def execute
        begin
          request.load_headers(CONTEXT_FOR[:headers])
        rescue => e
          message = "Error loading headers."
          return validation_handler.handle!(
            exception: e,
            summary: message,
            request: request,
            stage: name
          )
        end

        begin
          request.load_params(CONTEXT_FOR[:params])
        rescue Attributor::AttributorException => e
          message = "Error loading params."
          return validation_handler.handle!(
            exception: e,
            summary: message,
            request: request,
            stage: name
          )
        end

        attribute_resolver = Attributor::AttributeResolver.new
        Attributor::AttributeResolver.current = attribute_resolver

        attribute_resolver.register("headers",request.headers)
        attribute_resolver.register("params",request.params)

        errors = request.validate_headers(CONTEXT_FOR[:headers])
        errors += request.validate_params(CONTEXT_FOR[:params])
        if errors.any?
          message = "Error validating request data."
          return validation_handler.handle!(
            summary: message,
            errors: errors,
            request: request,
            stage: name
          )
        end
      end

    end

  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
praxis-2.0.pre.17 lib/praxis/request_stages/validate_params_and_headers.rb
praxis-2.0.pre.16 lib/praxis/request_stages/validate_params_and_headers.rb
praxis-2.0.pre.15 lib/praxis/request_stages/validate_params_and_headers.rb
praxis-2.0.pre.14 lib/praxis/request_stages/validate_params_and_headers.rb
praxis-2.0.pre.13 lib/praxis/request_stages/validate_params_and_headers.rb
praxis-2.0.pre.12 lib/praxis/request_stages/validate_params_and_headers.rb
praxis-2.0.pre.11 lib/praxis/request_stages/validate_params_and_headers.rb
praxis-2.0.pre.10 lib/praxis/request_stages/validate_params_and_headers.rb
praxis-2.0.pre.9 lib/praxis/request_stages/validate_params_and_headers.rb
praxis-2.0.pre.8 lib/praxis/request_stages/validate_params_and_headers.rb
praxis-2.0.pre.7 lib/praxis/request_stages/validate_params_and_headers.rb
praxis-2.0.pre.6 lib/praxis/request_stages/validate_params_and_headers.rb
praxis-2.0.pre.5 lib/praxis/request_stages/validate_params_and_headers.rb
praxis-2.0.pre.4 lib/praxis/request_stages/validate_params_and_headers.rb
praxis-2.0.pre.3 lib/praxis/request_stages/validate_params_and_headers.rb
praxis-2.0.pre.2 lib/praxis/request_stages/validate_params_and_headers.rb
praxis-2.0.pre.1 lib/praxis/request_stages/validate_params_and_headers.rb
praxis-0.22.pre.2 lib/praxis/request_stages/validate_params_and_headers.rb
praxis-0.22.pre.1 lib/praxis/request_stages/validate_params_and_headers.rb
praxis-0.21 lib/praxis/request_stages/validate_params_and_headers.rb