httplog 0.99.7 → 1.0.0
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/README.md +1 -3
- data/lib/httplog/adapters/ethon.rb +8 -2
- data/lib/httplog/adapters/excon.rb +2 -2
- data/lib/httplog/adapters/httpclient.rb +2 -1
- data/lib/httplog/adapters/patron.rb +1 -0
- data/lib/httplog/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4603f2bab3809871813bd149f2356ea700f89b3d
|
4
|
+
data.tar.gz: 37d78609e492343c5c1153bb4c92bca7ec38de22
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00c37ed11badf49dc23722834b42994be41e7e0f01ccc44cfb57997eac08ad56d558fd0d1ad932aeed44e8ab131cdc7e2284efca526788a3885c47b9f629262c
|
7
|
+
data.tar.gz: f82837fba14d48ff65f5df5c89a34ed50e6d2b8401306756aada44fe5f3cef823369ea95b732b48bf4e9690a06f0999c4b49d2f047e75442fd4c177dd6ca9a82
|
data/README.md
CHANGED
@@ -2,8 +2,6 @@
|
|
2
2
|
|
3
3
|
[](http://badge.fury.io/rb/httplog) [](https://travis-ci.org/trusche/httplog) [](https://codeclimate.com/github/trusche/httplog)
|
4
4
|
|
5
|
-
**+++ This is the README for version 0.99.0 and higher. If you're on previous versions, please refer to [this README version](https://github.com/trusche/httplog/tree/v0.3.3), since the configuration syntax has changed.+++**
|
6
|
-
|
7
5
|
Log outgoing HTTP requests made from your application. Helps with debugging pesky API error responses, or just generally understanding what's going on under the hood.
|
8
6
|
|
9
7
|
**+++Requires ruby 2.2 or higher. If you're stuck with an older version of ruby for some reason, you're stuck with httplog v0.3.3.+++**
|
@@ -27,7 +25,7 @@ These libraries are at least partially supported, where they use one of the abov
|
|
27
25
|
In theory, it should also work with any library built on top of these. But the difference between theory and practice is bigger in practice than in theory.
|
28
26
|
|
29
27
|
This is very much a development and debugging tool; it is **not recommended** to
|
30
|
-
use this in a production environment as it is
|
28
|
+
use this in a production environment as it is monkey-patching the respective HTTP implementations.
|
31
29
|
You have been warned - use at your own risk.
|
32
30
|
|
33
31
|
### Installation
|
@@ -7,7 +7,7 @@ if defined?(Ethon)
|
|
7
7
|
module Http
|
8
8
|
alias_method :orig_http_request, :http_request
|
9
9
|
def http_request(url, action_name, options = {})
|
10
|
-
@action_name = action_name # remember this for compact logging
|
10
|
+
@action_name = action_name # remember this for compact logging
|
11
11
|
if HttpLog.url_approved?(url)
|
12
12
|
HttpLog.log_request(action_name, url)
|
13
13
|
HttpLog.log_headers(options[:headers])
|
@@ -28,14 +28,20 @@ if defined?(Ethon)
|
|
28
28
|
reponse_code = orig_perform
|
29
29
|
end
|
30
30
|
|
31
|
-
# Not sure where the
|
31
|
+
# Not sure where the actual status code is stored - so let's
|
32
32
|
# extract it from the response header.
|
33
33
|
status = response_headers.scan(/HTTP\/... (\d{3})/).flatten.first
|
34
34
|
encoding = response_headers.scan(/Content-Encoding: (\S+)/).flatten.first
|
35
35
|
content_type = response_headers.scan(/Content-Type: (\S+(; charset=\S+)?)/).flatten.first
|
36
|
+
|
37
|
+
# Hard to believe that Ethon wouldn't parse out the headers into
|
38
|
+
# an array; probably overlooked it. Anyway, let's do it ourselves:
|
39
|
+
headers = response_headers.split(/\r?\n/)[1..-1]
|
40
|
+
|
36
41
|
HttpLog.log_compact(@action_name, @url, @return_code, bm)
|
37
42
|
HttpLog.log_status(status)
|
38
43
|
HttpLog.log_benchmark(bm)
|
44
|
+
HttpLog.log_headers(headers)
|
39
45
|
HttpLog.log_body(response_body, encoding, content_type)
|
40
46
|
return_code
|
41
47
|
end
|
@@ -27,7 +27,7 @@ if defined?(Excon)
|
|
27
27
|
datum = @data.merge(params)
|
28
28
|
datum[:headers] = @data[:headers].merge(datum[:headers] || {})
|
29
29
|
url = _httplog_url(datum)
|
30
|
-
|
30
|
+
|
31
31
|
if HttpLog.url_approved?(url)
|
32
32
|
HttpLog.log_compact(datum[:method], url, datum[:status] || result.status, bm)
|
33
33
|
HttpLog.log_benchmark(bm)
|
@@ -56,8 +56,8 @@ if defined?(Excon)
|
|
56
56
|
end
|
57
57
|
response = datum[:response]
|
58
58
|
headers = response[:headers] || {}
|
59
|
-
content_type =
|
60
59
|
HttpLog.log_status(response[:status])
|
60
|
+
HttpLog.log_headers(headers)
|
61
61
|
HttpLog.log_body(response[:body], headers['Content-Encoding'], headers['Content-Type'])
|
62
62
|
datum
|
63
63
|
end
|
@@ -27,6 +27,7 @@ if defined?(::HTTPClient)
|
|
27
27
|
HttpLog.log_compact(req.header.request_method, req.header.request_uri, res.status_code, bm)
|
28
28
|
HttpLog.log_status(res.status_code)
|
29
29
|
HttpLog.log_benchmark(bm)
|
30
|
+
HttpLog.log_headers(headers)
|
30
31
|
HttpLog.log_body(res.body, headers['Content-Encoding'], headers['Content-Type'])
|
31
32
|
conn.push(res)
|
32
33
|
end
|
@@ -46,7 +47,7 @@ if defined?(::HTTPClient)
|
|
46
47
|
end
|
47
48
|
orig_create_socket(site)
|
48
49
|
end
|
49
|
-
|
50
|
+
|
50
51
|
else
|
51
52
|
def create_socket(host, port)
|
52
53
|
if HttpLog.url_approved?("#{host}:#{port}")
|
@@ -20,6 +20,7 @@ if defined?(Patron)
|
|
20
20
|
HttpLog.log_compact(action_name, url, @response.status, bm)
|
21
21
|
HttpLog.log_status(@response.status)
|
22
22
|
HttpLog.log_benchmark(bm)
|
23
|
+
HttpLog.log_headers(headers)
|
23
24
|
HttpLog.log_body(@response.body, headers['Content-Encoding'], headers['Content-Type'])
|
24
25
|
end
|
25
26
|
|
data/lib/httplog/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: httplog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thilo Rusche
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|