minato_error_handler 0.1.2.pre.6 → 0.1.2.pre.8

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: 7035563235faf487222e2a1855529723e471792d6c240d0d330c9c154d588486
4
- data.tar.gz: db60393aee3af5c2e98f1f41b425cbc8a4af4714b1605b5adf28eb847e6bec2a
3
+ metadata.gz: 8ad092b1a46c12bd56ffd9ae182a8daf77e5baa766a6dbecbeed0e5430d5f10c
4
+ data.tar.gz: e734d35f6912c25d654a22800de825c2336c42e6d7dd07d31d3e4a5ccef5b57f
5
5
  SHA512:
6
- metadata.gz: cd80168c81486fe42c3e4a2aa8b33947f07b8eb73afba84be1aba07958db97b17b676e2e5078448e1b39d56c6c6fd1aa2477e44dbf687f36cdecd583eeed799e
7
- data.tar.gz: f010f34b1391d4ba48436546bd1bcc8064f8310e52676769f4daf3721ff7b7436b7db257943215ebfa209737b4bbaf49db48f4a1b4b0d49b1638b285b1441a8f
6
+ metadata.gz: 8f8f88518ce329ed76da0affc06d4c8a873acc5427493b34e3fdc55f8498ff9bcd6fafa933ceb75a645a76c90dc0036def3fdf7a87973146cb6682f2bdb5958e
7
+ data.tar.gz: 2bd4a523d63b23648750628f142b8da8935c25ea02f3e7896efb6a53b1fc1187fc460deca8e5d77330f9c031624f43a16bfc840efced13cca8be6bf255b4ad88
@@ -19,17 +19,31 @@ module MinatoErrorHandler
19
19
  end
20
20
 
21
21
  def parse_error(error)
22
- if error.is_a?(MinatoErrorHandler::Errors::MinatoError)
23
- error.http_request = request if error.http_request.nil?
24
- return error
25
- end
22
+ return parse_minato_error(error) if minato_error?(error)
23
+
24
+ build_minato_error(error)
25
+ end
26
+
27
+ def parse_minato_error(error)
28
+ error.http_request ||= request
29
+ error.http_response ||= response
30
+ error
31
+ end
32
+
33
+ def minato_error?(error)
34
+ error.is_a?(MinatoErrorHandler::Errors::MinatoError)
35
+ end
26
36
 
27
- error_class = self.class.default_error_class || MinatoErrorHandler::Errors::UnknowError
37
+ def error_class
38
+ self.class.default_error_class || MinatoErrorHandler::Errors::UnknowError
39
+ end
28
40
 
41
+ def build_minato_error(error)
29
42
  minato_error = error_class.new
30
43
  minato_error.caused_by = error.full_message
31
44
  minato_error.backtrace = error.backtrace
32
- minato_error.http_request = request
45
+ minato_error.http_request ||= request
46
+ minato_error.http_response ||= response
33
47
  minato_error
34
48
  end
35
49
 
@@ -6,8 +6,8 @@ require "json"
6
6
  module MinatoErrorHandler
7
7
  module Errors
8
8
  class MinatoError < StandardError
9
- attr_accessor :details, :caused_by
10
- attr_reader :http_request
9
+ attr_accessor :caused_by, :details, :debug_details
10
+ attr_reader :http_request, :http_response
11
11
 
12
12
  def message
13
13
  raise_method_not_implemented_error __method__
@@ -49,6 +49,14 @@ module MinatoErrorHandler
49
49
  remote: req.remote_ip, scheme: req.scheme }
50
50
  end
51
51
 
52
+ def http_response=(res)
53
+ return if res.nil?
54
+
55
+ @http_response = { headers: parse_http_response_headers(res.headers),
56
+ status: res.status,
57
+ text_status: res.status_message }
58
+ end
59
+
52
60
  def stack_trace
53
61
  backtrace
54
62
  end
@@ -56,11 +64,12 @@ module MinatoErrorHandler
56
64
  private
57
65
 
58
66
  def serializable_methods_to_log
59
- %i[caused_by code details message http_request status_code unique_identfier stack_trace]
67
+ %i[caused_by code details debug_details message http_request
68
+ http_response status_code unique_identfier stack_trace]
60
69
  end
61
70
 
62
71
  def serializable_methods_to_response
63
- methods_to_exclude = %i[http_request stack_trace]
72
+ methods_to_exclude = %i[http_request http_response stack_trace debug_details]
64
73
  serializable_methods_to_log.reject { |m| methods_to_exclude.include? m }
65
74
  end
66
75
 
@@ -78,6 +87,10 @@ module MinatoErrorHandler
78
87
  selected_headers
79
88
  end
80
89
 
90
+ def parse_http_response_headers(headers)
91
+ headers.transform_keys(&:downcase)
92
+ end
93
+
81
94
  def raise_method_not_implemented_error(method_name)
82
95
  raise "You must define \"#{method_name}\" in your concrete class."
83
96
  end
@@ -3,7 +3,13 @@
3
3
  module MinatoErrorHandler
4
4
  module Errors
5
5
  class NetworkError < MinatoErrorHandler::Errors::MinatoError
6
- attr_accessor :response
6
+ attr_accessor :req, :res
7
+
8
+ def initialize(req: nil, res: nil)
9
+ @req = req
10
+ @res = res
11
+ super()
12
+ end
7
13
 
8
14
  def message
9
15
  "A network error has occurred!"
@@ -12,6 +18,10 @@ module MinatoErrorHandler
12
18
  def status_code
13
19
  503
14
20
  end
21
+
22
+ def debug_details
23
+ { request: req, response: res }
24
+ end
15
25
  end
16
26
  end
17
27
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MinatoErrorHandler
4
- VERSION = "0.1.2-6"
4
+ VERSION = "0.1.2-8"
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.6
4
+ version: 0.1.2.pre.8
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-05 00:00:00.000000000 Z
11
+ date: 2023-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails