hoss-agent 1.0.8 → 1.0.9
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 +4 -4
- data/lib/hoss/spies/faraday.rb +47 -43
- data/lib/hoss/spies/http.rb +29 -24
- data/lib/hoss/spies/net_http.rb +32 -28
- data/lib/hoss/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb17fe11c7d97d41c4cb2c5a701286233ea53255092a89a3924793e5d2a6a3c4
|
4
|
+
data.tar.gz: babeee044660be9fcb0f6c4d8a26f6204abfb2f539fa83497bac97d1b461a54b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70b395a9f4e36e3677bbe82148ff0a3ad13844c1a281184148ed22b5f8204414a6e22e0d27f98addeb723e68da4bcf89f97ab3da0248c6bc967baae48691b65e
|
7
|
+
data.tar.gz: d05143b093eab36c8f034fe9e05eae9b863b4fca370f1b7c8e04d28d3eba8a69c770f4c0ef137fedde869761401c7617a74f998caa2e91fc559ae707c44550ac
|
data/lib/hoss/spies/faraday.rb
CHANGED
@@ -39,57 +39,61 @@ module Hoss
|
|
39
39
|
alias run_request_without_apm run_request
|
40
40
|
|
41
41
|
def run_request(method, url, body, headers, &block)
|
42
|
-
|
43
|
-
Hoss
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
42
|
+
begin
|
43
|
+
Hoss.with_event do |event|
|
44
|
+
Hoss::Spies::FaradaySpy.without_net_http do
|
45
|
+
begin
|
46
|
+
uri = URI(build_url(url))
|
47
|
+
result = run_request_without_apm(method, url, body, headers) do |req|
|
48
|
+
if block_given?
|
49
|
+
yield req
|
50
|
+
new_path = req.path
|
51
|
+
new_query = URI.encode_www_form(req.params)
|
52
|
+
if uri.path != new_path || uri.query != new_query
|
53
|
+
test_uri = uri
|
54
|
+
test_uri.query = nil
|
55
|
+
begin
|
56
|
+
test_uri.path = new_path
|
57
|
+
rescue Exception => e
|
58
|
+
end
|
59
|
+
# The original url can be set to path if Faraday.get used
|
60
|
+
if test_uri.to_s != uri.to_s
|
61
|
+
uri.path = new_path
|
62
|
+
end
|
63
|
+
uri.query = new_query
|
57
64
|
end
|
58
|
-
# The original url can be set to path if Faraday.get used
|
59
|
-
if test_uri.to_s != uri.to_s
|
60
|
-
uri.path = new_path
|
61
|
-
end
|
62
|
-
uri.query = new_query
|
63
65
|
end
|
66
|
+
event.request.method = method.to_s.upcase
|
67
|
+
event.request.url = uri.to_s
|
68
|
+
event.request.received_at = DateTime.now.strftime('%Q').to_i
|
69
|
+
event.request.headers['host'] = uri.hostname
|
70
|
+
req.headers.each {|n,v| event.request.headers[n] = v}
|
71
|
+
event.request.url = uri.to_s
|
72
|
+
event.request.body = req.body
|
64
73
|
end
|
65
|
-
event.request.method = method.to_s.upcase
|
66
|
-
event.request.url = uri.to_s
|
67
|
-
event.request.received_at = DateTime.now.strftime('%Q').to_i
|
68
|
-
event.request.headers['host'] = uri.hostname
|
69
|
-
req.headers.each {|n,v| event.request.headers[n] = v}
|
70
|
-
event.request.url = uri.to_s
|
71
|
-
event.request.body = req.body
|
72
|
-
end
|
73
74
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
75
|
+
if result
|
76
|
+
event.response = Hoss::Event::Response.new
|
77
|
+
event.response.received_at = DateTime.now.strftime('%Q').to_i
|
78
|
+
event.response.status_code = result.status.to_i
|
79
|
+
result.headers.each {|n,v| event.response.headers[n] = v}
|
80
|
+
event.response.body = result.body
|
81
|
+
end
|
81
82
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
83
|
+
result
|
84
|
+
rescue Exception => e
|
85
|
+
if e.respond_to?(:wrapped_exception) && e.wrapped_exception.is_a?(Net::OpenTimeout)
|
86
|
+
event.error = Hoss::Event::Error.new(Hoss::Event::Error::ConnectionTimeout)
|
87
|
+
else
|
88
|
+
event.error = Hoss::Event::Error.new(Hoss::Event::Error::ConnectionError)
|
89
|
+
end
|
90
|
+
event.error.received_at = DateTime.now.strftime('%Q').to_i
|
91
|
+
raise
|
88
92
|
end
|
89
|
-
event.error.received_at = DateTime.now.strftime('%Q').to_i
|
90
|
-
raise
|
91
93
|
end
|
92
94
|
end
|
95
|
+
rescue
|
96
|
+
run_request_without_apm(method, url, body, headers, &block)
|
93
97
|
end
|
94
98
|
end
|
95
99
|
end
|
data/lib/hoss/spies/http.rb
CHANGED
@@ -44,32 +44,37 @@ module Hoss
|
|
44
44
|
if req.headers['HOSS-SKIP-INSTRUMENTATION'] == 'true'
|
45
45
|
return perform_without_apm(req, options)
|
46
46
|
end
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
47
|
+
|
48
|
+
begin
|
49
|
+
Hoss.with_event do |event|
|
50
|
+
event.request.headers['host'] = req.uri.host
|
51
|
+
req.headers.each {|n,v| event.request.headers[n] = v}
|
52
|
+
event.request.method = req.verb.to_s.upcase
|
53
|
+
event.request.url = req.uri.to_s
|
54
|
+
event.request.body = Hoss::Spies::HTTPSpy::copy_request_body(req.body)
|
55
|
+
event.request.received_at = DateTime.now.strftime('%Q').to_i
|
56
|
+
begin
|
57
|
+
result = perform_without_apm(req, options)
|
58
|
+
if result
|
59
|
+
event.response = Hoss::Event::Response.new
|
60
|
+
event.response.received_at = DateTime.now.strftime('%Q').to_i
|
61
|
+
event.response.status_code = result.code.to_i
|
62
|
+
result.headers.each {|n,v| event.response.headers[n] = v}
|
63
|
+
event.response.body = result.body.to_s
|
64
|
+
end
|
65
|
+
result
|
66
|
+
rescue HTTP::TimeoutError => e
|
67
|
+
event.error = Hoss::Event::Error.new(Hoss::Event::Error::ConnectionTimeout)
|
68
|
+
event.error.received_at = DateTime.now.strftime('%Q').to_i
|
69
|
+
raise
|
70
|
+
rescue Exception => e
|
71
|
+
event.error = Hoss::Event::Error.new(Hoss::Event::Error::ConnectionError)
|
72
|
+
event.error.received_at = DateTime.now.strftime('%Q').to_i
|
73
|
+
raise
|
62
74
|
end
|
63
|
-
result
|
64
|
-
rescue HTTP::TimeoutError => e
|
65
|
-
event.error = Hoss::Event::Error.new(Hoss::Event::Error::ConnectionTimeout)
|
66
|
-
event.error.received_at = DateTime.now.strftime('%Q').to_i
|
67
|
-
raise
|
68
|
-
rescue Exception => e
|
69
|
-
event.error = Hoss::Event::Error.new(Hoss::Event::Error::ConnectionError)
|
70
|
-
event.error.received_at = DateTime.now.strftime('%Q').to_i
|
71
|
-
raise
|
72
75
|
end
|
76
|
+
rescue
|
77
|
+
return perform_without_apm(req, options)
|
73
78
|
end
|
74
79
|
end
|
75
80
|
end
|
data/lib/hoss/spies/net_http.rb
CHANGED
@@ -56,35 +56,39 @@ module Hoss
|
|
56
56
|
return request_without_apm(req, body, &block)
|
57
57
|
end
|
58
58
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
59
|
+
begin
|
60
|
+
host = req['host']&.split(':')&.first || address
|
61
|
+
method = req.method.to_s.upcase
|
62
|
+
path, query = req.path.split('?')
|
63
|
+
|
64
|
+
url = use_ssl? ? +'https://' : +'http://'
|
65
|
+
url << host
|
66
|
+
url << ":#{port}" if port
|
67
|
+
url << path
|
68
|
+
url << "?#{query}" if query
|
69
|
+
uri = URI(url)
|
70
|
+
|
71
|
+
Hoss.with_event do |event|
|
72
|
+
# Record request
|
73
|
+
event.request.headers['host'] = uri.hostname
|
74
|
+
req.each_header {|n,v| event.request.headers[n] = v}
|
75
|
+
event.request.method = method
|
76
|
+
event.request.url = uri.to_s
|
77
|
+
event.request.body = req.body
|
78
|
+
event.request.received_at = DateTime.now.strftime('%Q').to_i
|
79
|
+
|
80
|
+
result = request_without_apm(req, body, &block)
|
81
|
+
if result
|
82
|
+
event.response = Hoss::Event::Response.new
|
83
|
+
event.response.received_at = DateTime.now.strftime('%Q').to_i
|
84
|
+
event.response.status_code = result.code.to_i
|
85
|
+
result.each_header {|n,v| event.response.headers[n] = v}
|
86
|
+
event.response.body = result.body
|
87
|
+
end
|
88
|
+
result
|
86
89
|
end
|
87
|
-
|
90
|
+
rescue
|
91
|
+
return request_without_apm(req, body, &block)
|
88
92
|
end
|
89
93
|
end
|
90
94
|
end
|
data/lib/hoss/version.rb
CHANGED