class Datadome::ValidationResponse

Attributes

pass[RW]
redirect[RW]
redirection_location[RW]
request_headers[RW]
response_body[RW]
response_headers[RW]
response_status[RW]

Public Class Methods

from_faraday_response(response) click to toggle source
# File lib/datadome/validation_response.rb, line 12
def from_faraday_response(response)
  validation_response =
    if response.status == 403
      new(pass: false, redirect: false, response_status: 403, response_body: response.body)
    elsif response.status == 301 || response.status == 302
      new(pass: false, redirect: true, response_status: response.status, redirection_location: response.headers["Location"])
    else
      pass
    end

  parse_headers_list(response.headers["X-DataDome-request-headers"]).each do |key|
    validation_response.request_headers[key] = response.headers[key]
  end

  parse_headers_list(response.headers["X-DataDome-headers"]).each do |key|
    validation_response.response_headers[key] = response.headers[key]
  end

  validation_response
end
new(attrs = {}) click to toggle source
# File lib/datadome/validation_response.rb, line 44
def initialize(attrs = {})
  self.request_headers = {}
  self.response_headers = {}

  attrs.each do |key, value|
    public_send("#{key}=", value)
  end
end
parse_headers_list(list) click to toggle source
# File lib/datadome/validation_response.rb, line 33
def parse_headers_list(list)
  return [] if list.nil? || list == ""

  list.split(" ")
end
pass() click to toggle source
# File lib/datadome/validation_response.rb, line 8
def pass
  new(pass: true, redirect: false)
end

Public Instance Methods

to_rack_response() click to toggle source
# File lib/datadome/validation_response.rb, line 53
def to_rack_response
  response = ::Rack::Response.new(@response_body || [], @response_status, @response_headers)
  response.redirect(@redirection_location, @response_status) if @redirect

  response.finish
end