Module: Julewire::Rails::RequestAttributes

Defined in:
lib/julewire/rails/request_attributes.rb

Class Method Summary collapse

Class Method Details

.context_fields(request) ⇒ Object



7
8
9
10
11
12
13
14
15
16
# File 'lib/julewire/rails/request_attributes.rb', line 7

def context_fields(request)
  request = request_fields(request)
  values = Core::Integration::Values::Shape
  {}.tap do |fields|
    values.append_field(fields, :request_id, request.id)
    values.append_field(fields, :http_method, request.request_method)
    values.append_field(fields, :path, request.path)
    values.append_field(fields, :remote_ip, request.remote_ip)
  end
end

.error_details(error, wrapper:) ⇒ Object



40
41
42
43
44
45
# File 'lib/julewire/rails/request_attributes.rb', line 40

def error_details(error, wrapper:)
  {
    attributes: { rails: rails_exception_attributes(error, wrapper: wrapper) },
    neutral: {}
  }
end

.error_summary(request, error, status:, wrapper:) ⇒ Object



33
34
35
36
37
38
# File 'lib/julewire/rails/request_attributes.rb', line 33

def error_summary(request, error, status:, wrapper:)
  {
    attributes: { rails: rails_error_attributes(request, error, status: status, wrapper: wrapper) },
    neutral: neutral_fields(Core::Fields::AttributeKeys::HTTP_RESPONSE_STATUS_CODE => status)
  }
end

.normalize_user_fields(fields) ⇒ Object

Rack headers and parsed bodies are user input. Normalize them before passing adapter-owned records to the core integration boundary.



53
54
55
# File 'lib/julewire/rails/request_attributes.rb', line 53

def normalize_user_fields(fields)
  Core::Fields::FieldSet.deep_symbolize_keys(fields)
end

.rendered_error_details(rendered_error) ⇒ Object



29
30
31
# File 'lib/julewire/rails/request_attributes.rb', line 29

def rendered_error_details(rendered_error)
  (error_details(rendered_error.fetch(:error), wrapper: nil), rendered_error)
end

.request(request) ⇒ Object



18
19
20
# File 'lib/julewire/rails/request_attributes.rb', line 18

def request(request)
  request_neutral_attributes(request)
end

.request_id(request) ⇒ Object



47
48
49
# File 'lib/julewire/rails/request_attributes.rb', line 47

def request_id(request)
  request_fields(request).id
end

.response_summary(request, status, headers) ⇒ Object



22
23
24
25
26
27
# File 'lib/julewire/rails/request_attributes.rb', line 22

def response_summary(request, status, headers)
  {
    attributes: { rails: rails_response_attributes(request, status, headers) },
    neutral: neutral_fields(Core::Fields::AttributeKeys::HTTP_RESPONSE_STATUS_CODE => status)
  }
end