Class: AppMap::Handler::Rails::RequestHandler::HTTPServerRequest

Inherits:
Event::MethodEvent show all
Defined in:
lib/appmap/handler/rails/request_handler.rb

Constant Summary

Constants inherited from Event::MethodEvent

Event::MethodEvent::MAX_ARRAY_ENUMERATION, Event::MethodEvent::MAX_HASH_ENUMERATION, Event::MethodEvent::MAX_STRING_LENGTH

Constants included from ValueInspector

ValueInspector::MAX_ARRAY_ELEMENTS, ValueInspector::MAX_DEPTH

Instance Attribute Summary collapse

Attributes inherited from Event::MethodEventStruct

#event, #id, #thread_id

Instance Method Summary collapse

Methods inherited from Event::MethodEvent

add_schema, add_size, build_from_invocation, custom_display_string, default_display_string, display_string, encode_display_string, #ready?

Methods included from ValueInspector

#best_class_name, #detect_schema, #detect_size

Constructor Details

#initialize(request) ⇒ HTTPServerRequest

Returns a new instance of HTTPServerRequest.



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/appmap/handler/rails/request_handler.rb', line 16

def initialize(request)
  super AppMap::Event.next_id_counter, :call, Thread.current.object_id

  self.request_method = request.request_method
  self.normalized_path_info = normalized_path(request)
  self.headers = AppMap::Util.select_rack_headers(request.env)
  self.path_info = request.path_info.split('?')[0]
  # ActionDispatch::Http::ParameterFilter is deprecated
  parameter_filter_cls = \
    if defined?(ActiveSupport::ParameterFilter)
      ActiveSupport::ParameterFilter
    else
      ActionDispatch::Http::ParameterFilter
    end
  self.params = parameter_filter_cls.new(::Rails.application.config.filter_parameters).filter(request.params)
end

Instance Attribute Details

#call_elapsed_instrumentationObject

Returns the value of attribute call_elapsed_instrumentation.



14
15
16
# File 'lib/appmap/handler/rails/request_handler.rb', line 14

def call_elapsed_instrumentation
  @call_elapsed_instrumentation
end

#headersObject

Returns the value of attribute headers.



14
15
16
# File 'lib/appmap/handler/rails/request_handler.rb', line 14

def headers
  @headers
end

#normalized_path_infoObject

Returns the value of attribute normalized_path_info.



14
15
16
# File 'lib/appmap/handler/rails/request_handler.rb', line 14

def normalized_path_info
  @normalized_path_info
end

#paramsObject

Returns the value of attribute params.



14
15
16
# File 'lib/appmap/handler/rails/request_handler.rb', line 14

def params
  @params
end

#path_infoObject

Returns the value of attribute path_info.



14
15
16
# File 'lib/appmap/handler/rails/request_handler.rb', line 14

def path_info
  @path_info
end

#request_methodObject

Returns the value of attribute request_method.



14
15
16
# File 'lib/appmap/handler/rails/request_handler.rb', line 14

def request_method
  @request_method
end

Instance Method Details

#to_hObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/appmap/handler/rails/request_handler.rb', line 33

def to_h
  super.tap do |h|
    h[:http_server_request] = {
      request_method: request_method,
      path_info: path_info,
      normalized_path_info: normalized_path_info,
      headers: headers,
    }.compact

    unless Util.blank?(params)
      h[:message] = params.keys.map do |key|
        val = params[key]
        {
          name: key,
          class: val.class.name,
          value: self.class.display_string(val),
          object_id: val.__id__,
        }.tap do |message|
          AppMap::Event::MethodEvent.add_schema message, val
        end
      end
    end
  end
end