Class: Pact::MockService::RequestHandlers::Options
- Inherits:
-
BaseRequestHandler
- Object
- BaseRequestHandler
- Pact::MockService::RequestHandlers::Options
- Defined in:
- lib/pact/mock_service/request_handlers/options.rb
Constant Summary
Constants inherited from BaseRequestHandler
BaseRequestHandler::NOT_FOUND_RESPONSE
Constants included from Consumer::RackRequestHelper
Consumer::RackRequestHelper::REQUEST_KEYS
Instance Attribute Summary collapse
-
#cors_enabled ⇒ Object
readonly
Returns the value of attribute cors_enabled.
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
-
#initialize(name, logger, cors_enabled) ⇒ Options
constructor
A new instance of Options.
- #is_administration_request?(env) ⇒ Boolean
- #is_options_request?(env) ⇒ Boolean
- #match?(env) ⇒ Boolean
- #respond(env) ⇒ Object
Methods inherited from BaseRequestHandler
Methods included from Consumer::RackRequestHelper
#params_hash, #request_as_hash_from
Constructor Details
#initialize(name, logger, cors_enabled) ⇒ Options
Returns a new instance of Options.
11 12 13 14 15 |
# File 'lib/pact/mock_service/request_handlers/options.rb', line 11 def initialize name, logger, cors_enabled @name = name @logger = logger @cors_enabled = cors_enabled end |
Instance Attribute Details
#cors_enabled ⇒ Object (readonly)
Returns the value of attribute cors_enabled.
9 10 11 |
# File 'lib/pact/mock_service/request_handlers/options.rb', line 9 def cors_enabled @cors_enabled end |
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
9 10 11 |
# File 'lib/pact/mock_service/request_handlers/options.rb', line 9 def logger @logger end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
9 10 11 |
# File 'lib/pact/mock_service/request_handlers/options.rb', line 9 def name @name end |
Instance Method Details
#is_administration_request?(env) ⇒ Boolean
35 36 37 |
# File 'lib/pact/mock_service/request_handlers/options.rb', line 35 def is_administration_request? env env["HTTP_ACCESS_CONTROL_REQUEST_HEADERS"].match(/x-pact-mock-service/i) end |
#is_options_request?(env) ⇒ Boolean
31 32 33 |
# File 'lib/pact/mock_service/request_handlers/options.rb', line 31 def env env['REQUEST_METHOD'] == 'OPTIONS' end |
#match?(env) ⇒ Boolean
17 18 19 |
# File 'lib/pact/mock_service/request_handlers/options.rb', line 17 def match? env (env) && (cors_enabled || is_administration_request?(env)) end |
#respond(env) ⇒ Object
21 22 23 24 25 26 27 28 29 |
# File 'lib/pact/mock_service/request_handlers/options.rb', line 21 def respond env cors_headers = { 'Access-Control-Allow-Origin' => env.fetch('HTTP_ORIGIN','*'), 'Access-Control-Allow-Headers' => headers_from(env)["Access-Control-Request-Headers"], 'Access-Control-Allow-Methods' => 'DELETE, POST, GET, HEAD, PUT, TRACE, CONNECT, PATCH' } logger.info "Received OPTIONS request for mock service administration endpoint #{env['HTTP_ACCESS_CONTROL_REQUEST_METHOD']} #{env['PATH_INFO']}. Returning CORS headers: #{cors_headers.to_json}." [200, cors_headers, []] end |