Class: DataDomeModule
- Inherits:
-
Object
- Object
- DataDomeModule
- Includes:
- Configurable
- Defined in:
- lib/datadome_module.rb
Constant Summary
Constants included from Configurable
Configurable::ALL_ENDPOINT_INCLUSION_REGEXP, Configurable::STATIC_PAGE_EXCLUSION_REGEXP
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app) ⇒ DataDomeModule
constructor
A new instance of DataDomeModule.
Methods included from Configurable
Constructor Details
#initialize(app) ⇒ DataDomeModule
Returns a new instance of DataDomeModule.
14 15 16 17 |
# File 'lib/datadome_module.rb', line 14 def initialize(app) @app = app @configuration = self.class.configuration end |
Instance Method Details
#call(env) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/datadome_module.rb', line 19 def call(env) request = ActionDispatch::Request.new(env) assessment_result = datadome_assessment(request) return @app.call(env) unless assessment_result return assessment_result.response_array unless assessment_result.legitimate_request? enrich_request_headers(env, assessment_result.request_headers) status, headers, payload = @app.call(env) # Merge the headers from DataDome with the original headers headers = headers.merge(assessment_result.headers) do |key, request_header_val, datadome_header_val| if key.downcase == "set-cookie" && request_header_val # Handle the merge for cookies when the protected request has at least one cookie # If the original request contains one cookie, ensure it's in an array format for uniform handling request_header_val = [request_header_val] unless request_header_val.is_a?(Array) # Remove any cookies that start with 'datadome=' from the original request's cookies request_header_val.reject! { || .downcase.start_with?("datadome=") } # Return the cookies merged with the new value of the datadome cookie [datadome_header_val, *request_header_val] else # For DataDome headers other than 'Set-Cookie', return the value. datadome_header_val end end [status, headers, payload] end |