Class: TCellAgent::MetaData
- Inherits:
-
Object
- Object
- TCellAgent::MetaData
- Defined in:
- lib/tcell_agent/tcell_context.rb
Instance Attribute Summary collapse
-
#content_type ⇒ Object
Returns the value of attribute content_type.
-
#csrf_exception_name ⇒ Object
Returns the value of attribute csrf_exception_name.
-
#database_result_sizes ⇒ Object
Returns the value of attribute database_result_sizes.
-
#flattened_body_dict ⇒ Object
readonly
Returns the value of attribute flattened_body_dict.
-
#flattened_cookie_dict ⇒ Object
readonly
Returns the value of attribute flattened_cookie_dict.
-
#flattened_get_dict ⇒ Object
readonly
Returns the value of attribute flattened_get_dict.
-
#flattened_headers_dict ⇒ Object
readonly
Returns the value of attribute flattened_headers_dict.
-
#flattened_path_parameters ⇒ Object
readonly
Returns the value of attribute flattened_path_parameters.
-
#flattened_post_dict ⇒ Object
readonly
Returns the value of attribute flattened_post_dict.
-
#location ⇒ Object
Returns the value of attribute location.
-
#method ⇒ Object
Returns the value of attribute method.
-
#path ⇒ Object
Returns the value of attribute path.
-
#raw_request_body ⇒ Object
Returns the value of attribute raw_request_body.
-
#remote_address ⇒ Object
Returns the value of attribute remote_address.
-
#request_content_bytes_len ⇒ Object
Returns the value of attribute request_content_bytes_len.
-
#response_code ⇒ Object
Returns the value of attribute response_code.
-
#response_content_bytes_len ⇒ Object
Returns the value of attribute response_content_bytes_len.
-
#response_headers ⇒ Object
Returns the value of attribute response_headers.
-
#route_id ⇒ Object
Returns the value of attribute route_id.
-
#session_id ⇒ Object
Returns the value of attribute session_id.
-
#sql_exceptions ⇒ Object
Returns the value of attribute sql_exceptions.
-
#transaction_id ⇒ Object
Returns the value of attribute transaction_id.
-
#user_agent ⇒ Object
Returns the value of attribute user_agent.
-
#user_id ⇒ Object
Returns the value of attribute user_id.
Class Method Summary collapse
- .for_appfirewall(request, response_content_length, response_code, response_headers) ⇒ Object
- .for_patches(request) ⇒ Object
Instance Method Summary collapse
- #charset ⇒ Object
- #cookie_dict=(value) ⇒ Object
- #get_dict=(value) ⇒ Object
- #get_raw_post_data(request) ⇒ Object
- #headers_dict=(value) ⇒ Object
-
#initialize(method, remote_address, route_id, session_id, user_id, transaction_id, location) ⇒ MetaData
constructor
A new instance of MetaData.
- #path_parameters=(value) ⇒ Object
- #post_dict=(value) ⇒ Object
- #set_parameter_dicts(request) ⇒ Object
Constructor Details
#initialize(method, remote_address, route_id, session_id, user_id, transaction_id, location) ⇒ MetaData
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/tcell_agent/tcell_context.rb', line 82 def initialize(method, remote_address, route_id, session_id, user_id, transaction_id, location) @method = method @remote_address = remote_address @route_id = route_id @session_id = session_id @user_id = user_id @transaction_id = transaction_id @location = location @path = path @flattened_get_dict = {} = {} @flattened_path_parameters = {} # POST/body dict can contain files, so always flatten it # to get rid of those and to make this model serializable @flattened_post_dict = {} @flattened_body_dict = {} @request_content_bytes_len = 0 @response_content_bytes_len = 0 @user_agent = nil end |
Instance Attribute Details
#content_type ⇒ Object
Returns the value of attribute content_type.
56 57 58 |
# File 'lib/tcell_agent/tcell_context.rb', line 56 def content_type @content_type end |
#csrf_exception_name ⇒ Object
Returns the value of attribute csrf_exception_name.
56 57 58 |
# File 'lib/tcell_agent/tcell_context.rb', line 56 def csrf_exception_name @csrf_exception_name end |
#database_result_sizes ⇒ Object
Returns the value of attribute database_result_sizes.
56 57 58 |
# File 'lib/tcell_agent/tcell_context.rb', line 56 def database_result_sizes @database_result_sizes end |
#flattened_body_dict ⇒ Object (readonly)
Returns the value of attribute flattened_body_dict.
75 76 77 |
# File 'lib/tcell_agent/tcell_context.rb', line 75 def flattened_body_dict @flattened_body_dict end |
#flattened_cookie_dict ⇒ Object (readonly)
Returns the value of attribute flattened_cookie_dict.
75 76 77 |
# File 'lib/tcell_agent/tcell_context.rb', line 75 def end |
#flattened_get_dict ⇒ Object (readonly)
Returns the value of attribute flattened_get_dict.
75 76 77 |
# File 'lib/tcell_agent/tcell_context.rb', line 75 def flattened_get_dict @flattened_get_dict end |
#flattened_headers_dict ⇒ Object (readonly)
Returns the value of attribute flattened_headers_dict.
75 76 77 |
# File 'lib/tcell_agent/tcell_context.rb', line 75 def flattened_headers_dict @flattened_headers_dict end |
#flattened_path_parameters ⇒ Object (readonly)
Returns the value of attribute flattened_path_parameters.
75 76 77 |
# File 'lib/tcell_agent/tcell_context.rb', line 75 def flattened_path_parameters @flattened_path_parameters end |
#flattened_post_dict ⇒ Object (readonly)
Returns the value of attribute flattened_post_dict.
75 76 77 |
# File 'lib/tcell_agent/tcell_context.rb', line 75 def flattened_post_dict @flattened_post_dict end |
#location ⇒ Object
Returns the value of attribute location.
56 57 58 |
# File 'lib/tcell_agent/tcell_context.rb', line 56 def location @location end |
#method ⇒ Object
Returns the value of attribute method.
56 57 58 |
# File 'lib/tcell_agent/tcell_context.rb', line 56 def method @method end |
#path ⇒ Object
Returns the value of attribute path.
56 57 58 |
# File 'lib/tcell_agent/tcell_context.rb', line 56 def path @path end |
#raw_request_body ⇒ Object
Returns the value of attribute raw_request_body.
56 57 58 |
# File 'lib/tcell_agent/tcell_context.rb', line 56 def raw_request_body @raw_request_body end |
#remote_address ⇒ Object
Returns the value of attribute remote_address.
56 57 58 |
# File 'lib/tcell_agent/tcell_context.rb', line 56 def remote_address @remote_address end |
#request_content_bytes_len ⇒ Object
Returns the value of attribute request_content_bytes_len.
56 57 58 |
# File 'lib/tcell_agent/tcell_context.rb', line 56 def request_content_bytes_len @request_content_bytes_len end |
#response_code ⇒ Object
Returns the value of attribute response_code.
56 57 58 |
# File 'lib/tcell_agent/tcell_context.rb', line 56 def response_code @response_code end |
#response_content_bytes_len ⇒ Object
Returns the value of attribute response_content_bytes_len.
56 57 58 |
# File 'lib/tcell_agent/tcell_context.rb', line 56 def response_content_bytes_len @response_content_bytes_len end |
#response_headers ⇒ Object
Returns the value of attribute response_headers.
56 57 58 |
# File 'lib/tcell_agent/tcell_context.rb', line 56 def response_headers @response_headers end |
#route_id ⇒ Object
Returns the value of attribute route_id.
56 57 58 |
# File 'lib/tcell_agent/tcell_context.rb', line 56 def route_id @route_id end |
#session_id ⇒ Object
Returns the value of attribute session_id.
56 57 58 |
# File 'lib/tcell_agent/tcell_context.rb', line 56 def session_id @session_id end |
#sql_exceptions ⇒ Object
Returns the value of attribute sql_exceptions.
56 57 58 |
# File 'lib/tcell_agent/tcell_context.rb', line 56 def sql_exceptions @sql_exceptions end |
#transaction_id ⇒ Object
Returns the value of attribute transaction_id.
56 57 58 |
# File 'lib/tcell_agent/tcell_context.rb', line 56 def transaction_id @transaction_id end |
#user_agent ⇒ Object
Returns the value of attribute user_agent.
56 57 58 |
# File 'lib/tcell_agent/tcell_context.rb', line 56 def user_agent @user_agent end |
#user_id ⇒ Object
Returns the value of attribute user_id.
56 57 58 |
# File 'lib/tcell_agent/tcell_context.rb', line 56 def user_id @user_id end |
Class Method Details
.for_appfirewall(request, response_content_length, response_code, response_headers) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/tcell_agent/tcell_context.rb', line 15 def for_appfirewall(request, response_content_length, response_code, response_headers) = TCellAgent::MetaData.for_patches(request) tcell_context = request.env[TCellAgent::Instrumentation::TCELL_ID] .csrf_exception_name = tcell_context.csrf_exception_name .user_agent = tcell_context.user_agent .path_parameters = tcell_context.path_parameters .sql_exceptions = tcell_context.sql_exceptions .database_result_sizes = tcell_context.database_result_sizes .response_content_bytes_len = response_content_length .response_code = response_code .response_headers = response_headers end |
.for_patches(request) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/tcell_agent/tcell_context.rb', line 33 def for_patches(request) tcell_context = request.env[TCellAgent::Instrumentation::TCELL_ID] # use uri stored in tcell_context because # rails modifies original request.url # to always return /404 (or whatever error code # it encountered) = MetaData.new( tcell_context.request_method, tcell_context.remote_address, tcell_context.route_id, tcell_context.hmac_session_id, tcell_context.user_id, tcell_context.transaction_id, tcell_context.uri ) .path = tcell_context.path .set_parameter_dicts(request) end |
Instance Method Details
#charset ⇒ Object
140 141 142 143 144 |
# File 'lib/tcell_agent/tcell_context.rb', line 140 def charset Rack::MediaType.params(@content_type)['charset'] || Encoding.default_external rescue StandardError Encoding.default_external end |
#cookie_dict=(value) ⇒ Object
116 117 118 |
# File 'lib/tcell_agent/tcell_context.rb', line 116 def (value) = TCellAgent::Utils::Params.flatten(value) end |
#get_dict=(value) ⇒ Object
112 113 114 |
# File 'lib/tcell_agent/tcell_context.rb', line 112 def get_dict=(value) @flattened_get_dict = TCellAgent::Utils::Params.flatten(value) end |
#get_raw_post_data(request) ⇒ Object
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
# File 'lib/tcell_agent/tcell_context.rb', line 146 def get_raw_post_data(request) content_length = request.content_length.to_i if request.content_length if !content_length.nil? && content_length > TCELL_MAX_BODY_LENGTH || request.content_type.nil? return nil end raw_post_data = nil # Positions strio to the beginning of input, resetting lineno to zero. # rails 4.1 seems to read the stringIO directly and so body.gets is empty # this is called body = request.body body.rewind if body.respond_to?(:rewind) raw_post_data = body.read(request.content_length.to_i) if request.content_length body.rewind if body.respond_to?(:rewind) raw_post_data.force_encoding(charset) unless raw_post_data.nil? end |
#headers_dict=(value) ⇒ Object
120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/tcell_agent/tcell_context.rb', line 120 def headers_dict=(value) headers_dict = value.select do |header_key, _v| (header_key != 'HTTP_COOKIE' && header_key.start_with?('HTTP_')) || %w[CONTENT_TYPE CONTENT_LENGTH].include?(header_key) end headers_dict = headers_dict.each_with_object({}) do |(k, v), memo| memo[k.sub(/^HTTP_/, '').tr('_', '-').downcase] = v end @flattened_headers_dict = TCellAgent::Utils::Params.flatten(headers_dict) end |
#path_parameters=(value) ⇒ Object
136 137 138 |
# File 'lib/tcell_agent/tcell_context.rb', line 136 def path_parameters=(value) @flattened_path_parameters = TCellAgent::Utils::Params.flatten(value) end |
#post_dict=(value) ⇒ Object
132 133 134 |
# File 'lib/tcell_agent/tcell_context.rb', line 132 def post_dict=(value) @flattened_post_dict = TCellAgent::Utils::Params.flatten(value) end |
#set_parameter_dicts(request) ⇒ Object
164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 |
# File 'lib/tcell_agent/tcell_context.rb', line 164 def set_parameter_dicts(request) @flattened_body_dict = {} # deprecated @content_type = request.content_type || '' @raw_request_body = get_raw_post_data(request) unless @content_type.start_with?('application/octet-stream', 'multipart/form-data') @request_content_bytes_len = (request.content_length || 0).to_i self.get_dict = request.GET self. = request. self.post_dict = if @content_type.start_with?('application/json', 'application/xml') {} else request.POST end self.headers_dict = request.env end |