httplog 0.2.7 → 0.2.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +6 -2
- data/lib/httplog.rb +1 -0
- data/lib/httplog/adapters/http.rb +44 -0
- data/lib/httplog/version.rb +1 -1
- metadata +18 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc801e5fc39b6c93832bbadaa2c1204e2d969339
|
4
|
+
data.tar.gz: 3e040bc3c9bda9eb1ae93bf66c3828dd5df4482d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a25911aaa39b63cf038adf005c47d2c5793f171e3ad6d37d72ca54535b38243870a6508c825e7fb5ea4628121d371aee3025d357ed835cbc38b37c15a3e98b09
|
7
|
+
data.tar.gz: 28955f8848345352693e58227659977db677739c9cf11e2a34dbdaf075a8c245fad92cbe0b8ab8ac1d129b48bde312d0ff25c9fac46e5501d0b1b0f271b8bbed
|
data/README.md
CHANGED
@@ -15,6 +15,7 @@ So far this gem works with the following ruby modules and libraries:
|
|
15
15
|
* [Patron](https://github.com/toland/patron)
|
16
16
|
* [HTTPClient](https://github.com/nahi/httpclient)
|
17
17
|
* [HTTParty](https://github.com/jnunemaker/httparty)
|
18
|
+
* [HTTP](http://rubygems.org/gems/http)
|
18
19
|
|
19
20
|
These libraries are at least partially supported, where they use one of the above as adapters:
|
20
21
|
|
@@ -54,8 +55,8 @@ You can override the following default options:
|
|
54
55
|
|
55
56
|
# only log requests made to specified hosts (URLs)
|
56
57
|
HttpLog.options[:url_whitelist_pattern] = /.*/
|
57
|
-
# overrides whitelist
|
58
|
-
HttpLog.options[:url_blacklist_pattern] = nil
|
58
|
+
# overrides whitelist
|
59
|
+
HttpLog.options[:url_blacklist_pattern] = nil
|
59
60
|
|
60
61
|
So if you want to use this in a Rails app:
|
61
62
|
|
@@ -109,6 +110,8 @@ With the default configuration, the log output might look like this:
|
|
109
110
|
* When using Ethon or Patron, and any library based on them (such as Typhoeus),
|
110
111
|
the TCP connection is not logged (since it's established by libcurl).
|
111
112
|
|
113
|
+
* Benchmarking only covers the time between starting the HTTP request and receiving the response. It does *not* cover the time it takes to establish the TCP connection.
|
114
|
+
|
112
115
|
### Running the specs
|
113
116
|
|
114
117
|
Make sure you have the necessary dependencies installed by running `bundle install`.
|
@@ -132,3 +135,4 @@ Thanks to these fine folks for contributing pull requests:
|
|
132
135
|
* [Nikos Dimitrakopoulos](https://github.com/nikosd)
|
133
136
|
* [Marcos Hack](https://github.com/marcoshack)
|
134
137
|
* [Andrew Hammond](https://github.com/andrhamm)
|
138
|
+
* [Chris Keele](https://github.com/christhekeele)
|
data/lib/httplog.rb
CHANGED
@@ -0,0 +1,44 @@
|
|
1
|
+
if defined?(::HTTP::Client) and defined?(::HTTP::Connection)
|
2
|
+
module ::HTTP
|
3
|
+
class Client
|
4
|
+
alias_method(:orig_make_request, :make_request) unless method_defined?(:orig_make_request)
|
5
|
+
|
6
|
+
def make_request(req, options)
|
7
|
+
|
8
|
+
log_enabled = HttpLog.url_approved?(req.uri)
|
9
|
+
|
10
|
+
if log_enabled
|
11
|
+
HttpLog.log_request(req.verb, req.uri)
|
12
|
+
HttpLog.log_headers(req.headers.to_h)
|
13
|
+
HttpLog.log_data(req.body) if req.verb == :post
|
14
|
+
end
|
15
|
+
|
16
|
+
bm = Benchmark.realtime do
|
17
|
+
@response = orig_make_request(req, options)
|
18
|
+
end
|
19
|
+
|
20
|
+
if log_enabled
|
21
|
+
HttpLog.log_compact(req.verb, req.uri, @response.code, bm)
|
22
|
+
HttpLog.log_status(@response.code)
|
23
|
+
HttpLog.log_benchmark(bm)
|
24
|
+
HttpLog.log_headers(@response.headers.to_h)
|
25
|
+
HttpLog.log_body(@response.body, @response.headers["Content-Encoding"])
|
26
|
+
end
|
27
|
+
|
28
|
+
@response
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
class Connection
|
34
|
+
alias_method(:orig_initialize, :initialize) unless method_defined?(:orig_initialize)
|
35
|
+
|
36
|
+
def initialize(req, options)
|
37
|
+
|
38
|
+
HttpLog.log_connection(req.uri.host, req.uri.port) if HttpLog.url_approved?(req.uri)
|
39
|
+
|
40
|
+
orig_initialize(req, options)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
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.2.
|
4
|
+
version: 0.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thilo Rusche
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -164,6 +164,20 @@ dependencies:
|
|
164
164
|
- - '>='
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: http
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - '>='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - '>='
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
182
|
name: simplecov
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -220,6 +234,7 @@ files:
|
|
220
234
|
- lib/httplog.rb
|
221
235
|
- lib/httplog/adapters/ethon.rb
|
222
236
|
- lib/httplog/adapters/excon.rb
|
237
|
+
- lib/httplog/adapters/http.rb
|
223
238
|
- lib/httplog/adapters/httpclient.rb
|
224
239
|
- lib/httplog/adapters/net_http.rb
|
225
240
|
- lib/httplog/adapters/patron.rb
|
@@ -244,7 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
244
259
|
version: '0'
|
245
260
|
requirements: []
|
246
261
|
rubyforge_project:
|
247
|
-
rubygems_version: 2.
|
262
|
+
rubygems_version: 2.4.4
|
248
263
|
signing_key:
|
249
264
|
specification_version: 4
|
250
265
|
summary: Logs outgoing HTTP requests.
|