Class: Coach::RequestSerializer

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request) ⇒ RequestSerializer

Returns a new instance of RequestSerializer.



25
26
27
# File 'lib/coach/request_serializer.rb', line 25

def initialize(request)
  @request = request
end

Class Method Details

.apply_header_rule(header, value) ⇒ Object

Applies sanitizing rules. Expects ‘header` to be in ’http_header_name’ form.



15
16
17
18
# File 'lib/coach/request_serializer.rb', line 15

def self.apply_header_rule(header, value)
  return value if header_rules[header].nil?
  header_rules[header].call(value)
end

.clear_header_rules!Object

Resets all header sanitizing



21
22
23
# File 'lib/coach/request_serializer.rb', line 21

def self.clear_header_rules!
  @header_rules = {}
end

.header_rulesObject



3
4
5
# File 'lib/coach/request_serializer.rb', line 3

def self.header_rules
  @header_rules ||= {}
end

.sanitize_header(header, &rule) ⇒ Object

Sets global rules on how to sanitize headers. An optional block can be supplied that will determine how to transform the original header value, otherwise a default string is used.



10
11
12
# File 'lib/coach/request_serializer.rb', line 10

def self.sanitize_header(header, &rule)
  header_rules[header] = rule || ->(value) { '[FILTERED]' }
end

Instance Method Details

#serializeObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/coach/request_serializer.rb', line 29

def serialize
  {
    # Identification
    request_id: @request.uuid,

    # Request details
    method: @request.method,
    path: request_path,
    format: @request.format.try(:ref),
    params: @request.filtered_parameters,  # uses config.filter_parameters

    # Extra request info
    headers: filtered_headers,
    session_id: @request.remote_ip
  }
end