Class: ProcessAssessment

Inherits:
Object
  • Object
show all
Defined in:
lib/process_assessment.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request) ⇒ ProcessAssessment

Returns a new instance of ProcessAssessment.



7
8
9
# File 'lib/process_assessment.rb', line 7

def initialize(request)
  @request = request
end

Instance Attribute Details

#requestObject (readonly)

Returns the value of attribute request.



5
6
7
# File 'lib/process_assessment.rb', line 5

def request
  @request
end

Class Method Details

.for(request) ⇒ Object



11
12
13
# File 'lib/process_assessment.rb', line 11

def self.for(request)
  new(request).run
end

Instance Method Details

#runObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/process_assessment.rb', line 15

def run
  return successful_response if datadome_server_side_key_blank?

  body = RequestData.for(request, datadome_server_side_key)

  dd_response = client.post(VALIDATE_REQUEST_PATH, body)

  return successful_response unless POSSIBLE_STATUS_CODES.include?(dd_response.status)
  return successful_response if dd_response.status != dd_response.headers['X-DataDomeResponse'].to_i

  Response.new(
    status: dd_response.status,
    headers: headers_hash(dd_response),
    payload: dd_response.body
  )
rescue Faraday::TimeoutError
  MD.logger.error("#{self.class}: Protection API request timed out")
  successful_response
rescue Faraday::ConnectionFailed => e
  MD.logger.error("#{self.class}: Protection API request connection failed: #{e.message}")
  successful_response
end