minato_error_handler 0.1.2.pre.5 → 0.1.2.pre.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6b7d51b076d30f1d1f1f7001ad4cdcf2655d063fcea829bb3328c3970f48672c
4
- data.tar.gz: '008d796e6d82a663606fde3ae0d84932754e73397bf84fa01abb79c1056e95de'
3
+ metadata.gz: 7035563235faf487222e2a1855529723e471792d6c240d0d330c9c154d588486
4
+ data.tar.gz: db60393aee3af5c2e98f1f41b425cbc8a4af4714b1605b5adf28eb847e6bec2a
5
5
  SHA512:
6
- metadata.gz: 621d41e858a6acdda862990330b7c37c4aeebdc334d571c03e3ea5560920448fc44e5757393c01e22aed3aec9053bff2f30058a819979a58e280f3d859bee463
7
- data.tar.gz: c171472bc6847c753d90ed90ba3007e7568524ca57b7cf057d7d937655521508f4d7cb9d85d25a2b859c63be3832276e8b7aeb2d383a481cab3c6027805d86a9
6
+ metadata.gz: cd80168c81486fe42c3e4a2aa8b33947f07b8eb73afba84be1aba07958db97b17b676e2e5078448e1b39d56c6c6fd1aa2477e44dbf687f36cdecd583eeed799e
7
+ data.tar.gz: f010f34b1391d4ba48436546bd1bcc8064f8310e52676769f4daf3721ff7b7436b7db257943215ebfa209737b4bbaf49db48f4a1b4b0d49b1638b285b1441a8f
@@ -19,13 +19,17 @@ module MinatoErrorHandler
19
19
  end
20
20
 
21
21
  def parse_error(error)
22
- return error if error.is_a?(MinatoErrorHandler::Errors::MinatoError)
22
+ if error.is_a?(MinatoErrorHandler::Errors::MinatoError)
23
+ error.http_request = request if error.http_request.nil?
24
+ return error
25
+ end
23
26
 
24
27
  error_class = self.class.default_error_class || MinatoErrorHandler::Errors::UnknowError
25
28
 
26
29
  minato_error = error_class.new
27
30
  minato_error.caused_by = error.full_message
28
31
  minato_error.backtrace = error.backtrace
32
+ minato_error.http_request = request
29
33
  minato_error
30
34
  end
31
35
 
@@ -6,7 +6,8 @@ require "json"
6
6
  module MinatoErrorHandler
7
7
  module Errors
8
8
  class MinatoError < StandardError
9
- attr_accessor :details, :caused_by, :request
9
+ attr_accessor :details, :caused_by
10
+ attr_reader :http_request
10
11
 
11
12
  def message
12
13
  raise_method_not_implemented_error __method__
@@ -40,14 +41,26 @@ module MinatoErrorHandler
40
41
  serialized_hash(serializable_methods_to_response).as_json
41
42
  end
42
43
 
44
+ def http_request=(req)
45
+ return if req.nil?
46
+
47
+ @http_request = { headers: parse_http_request_headers(req.headers), host: req.host,
48
+ method: req.request_method, path: req.path, query: req.query_parameters,
49
+ remote: req.remote_ip, scheme: req.scheme }
50
+ end
51
+
52
+ def stack_trace
53
+ backtrace
54
+ end
55
+
43
56
  private
44
57
 
45
58
  def serializable_methods_to_log
46
- %i[caused_by code details message request status_code unique_identfier]
59
+ %i[caused_by code details message http_request status_code unique_identfier stack_trace]
47
60
  end
48
61
 
49
62
  def serializable_methods_to_response
50
- methods_to_exclude = %i[request]
63
+ methods_to_exclude = %i[http_request stack_trace]
51
64
  serializable_methods_to_log.reject { |m| methods_to_exclude.include? m }
52
65
  end
53
66
 
@@ -59,6 +72,12 @@ module MinatoErrorHandler
59
72
  data
60
73
  end
61
74
 
75
+ def parse_http_request_headers(headers)
76
+ selected_headers = headers.env.filter { |k, _v| k.upcase.start_with? "HTTP" }
77
+ selected_headers.transform_keys! { |k| k.gsub(/\bHTTP_/, "").downcase }
78
+ selected_headers
79
+ end
80
+
62
81
  def raise_method_not_implemented_error(method_name)
63
82
  raise "You must define \"#{method_name}\" in your concrete class."
64
83
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MinatoErrorHandler
4
- VERSION = "0.1.2-5"
4
+ VERSION = "0.1.2-6"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minato_error_handler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2.pre.5
4
+ version: 0.1.2.pre.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ferreri
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-12-04 00:00:00.000000000 Z
11
+ date: 2023-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails