httplog 0.2.3 → 0.2.4
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.
- data/README.md +1 -1
- data/lib/httplog/adapters/excon.rb +30 -15
- data/lib/httplog/adapters/net_http.rb +2 -1
- data/lib/httplog/http_log.rb +8 -2
- data/lib/httplog/version.rb +1 -1
- metadata +5 -10
data/README.md
CHANGED
@@ -8,7 +8,7 @@ So far this gem works with the following ruby modules and libraries:
|
|
8
8
|
|
9
9
|
* [Net::HTTP](http://www.ruby-doc.org/stdlib-1.9.3/libdoc/net/http/rdoc/index.html)
|
10
10
|
* [Ethon](https://github.com/typhoeus/ethon)
|
11
|
-
* [Excon](https://github.com/geemus/excon)
|
11
|
+
* [Excon](https://github.com/geemus/excon) (for excon >= v18.0, httplog >= 0.2.4 is required)
|
12
12
|
* [OpenURI](http://www.ruby-doc.org/stdlib-1.9.3/libdoc/open-uri/rdoc/index.html)
|
13
13
|
* [Patron](https://github.com/toland/patron)
|
14
14
|
* [HTTPClient](https://github.com/nahi/httpclient)
|
@@ -3,8 +3,8 @@ if defined?(Excon)
|
|
3
3
|
class Socket
|
4
4
|
alias_method :orig_connect, :connect
|
5
5
|
def connect
|
6
|
-
host = @proxy ? @proxy[:host] : @
|
7
|
-
port = @proxy ? @proxy[:port] : @
|
6
|
+
host = @data[:proxy] ? @data[:proxy][:host] : @data[:host]
|
7
|
+
port = @data[:proxy] ? @data[:proxy][:port] : @data[:port]
|
8
8
|
HttpLog.log_connection(host, port)
|
9
9
|
orig_connect
|
10
10
|
end
|
@@ -12,24 +12,39 @@ if defined?(Excon)
|
|
12
12
|
end
|
13
13
|
|
14
14
|
class Connection
|
15
|
-
alias_method :orig_request_kernel, :request_kernel
|
16
|
-
def request_kernel(params)
|
17
|
-
url = "#{params[:scheme]}://#{params[:host]}:#{params[:port]}#{params[:path]}#{params[:query]}"
|
18
|
-
HttpLog.log_request(params[:method], url)
|
19
|
-
HttpLog.log_headers(params[:headers])
|
20
|
-
HttpLog.log_data(params[:body]) if params[:method] == :post
|
21
15
|
|
22
|
-
|
16
|
+
def _httplog_url(datum)
|
17
|
+
"#{datum[:scheme]}://#{datum[:host]}:#{datum[:port]}#{datum[:path]}#{datum[:query]}"
|
18
|
+
end
|
19
|
+
|
20
|
+
alias_method :orig_request, :request
|
21
|
+
def request(params, &block)
|
22
|
+
datum = nil
|
23
23
|
bm = Benchmark.realtime do
|
24
|
-
|
24
|
+
datum = orig_request(params, &block)
|
25
25
|
end
|
26
|
-
|
27
|
-
HttpLog.log_compact(params[:method], url, response.status, bm)
|
28
|
-
HttpLog.log_status(response.status)
|
26
|
+
HttpLog.log_compact(datum[:method], _httplog_url(datum), datum[:status], bm)
|
29
27
|
HttpLog.log_benchmark(bm)
|
30
|
-
|
28
|
+
datum
|
29
|
+
end
|
31
30
|
|
32
|
-
|
31
|
+
alias_method :orig_request_call, :request_call
|
32
|
+
def request_call(datum)
|
33
|
+
HttpLog.log_request(datum[:method], _httplog_url(datum))
|
34
|
+
HttpLog.log_headers(datum[:headers])
|
35
|
+
HttpLog.log_data(datum[:body]) if datum[:method] == :post
|
36
|
+
orig_request_call(datum)
|
37
|
+
end
|
38
|
+
|
39
|
+
alias_method :orig_response, :response
|
40
|
+
def response(datum={})
|
41
|
+
bm = Benchmark.realtime do
|
42
|
+
datum = orig_response(datum)
|
43
|
+
end
|
44
|
+
response = datum[:response]
|
45
|
+
HttpLog.log_status(response[:status])
|
46
|
+
HttpLog.log_body(response[:body])
|
47
|
+
datum
|
33
48
|
end
|
34
49
|
end
|
35
50
|
end
|
@@ -23,7 +23,8 @@ module Net
|
|
23
23
|
HttpLog.log_compact(req.method, url, @response.code, bm)
|
24
24
|
HttpLog.log_status(@response.code)
|
25
25
|
HttpLog.log_benchmark(bm)
|
26
|
-
HttpLog.
|
26
|
+
HttpLog.log_headers(@response.each_header.collect)
|
27
|
+
HttpLog.log_body(@response.body, @response.header["Content-Encoding"])
|
27
28
|
end
|
28
29
|
|
29
30
|
@response
|
data/lib/httplog/http_log.rb
CHANGED
@@ -57,14 +57,20 @@ module HttpLog
|
|
57
57
|
log("Benchmark: #{seconds} seconds")
|
58
58
|
end
|
59
59
|
|
60
|
-
def log_body(body)
|
60
|
+
def log_body(body, encoding = nil)
|
61
61
|
return if options[:compact_log] || !options[:log_response]
|
62
62
|
if body.is_a?(Net::ReadAdapter)
|
63
63
|
# open-uri wraps the response in a Net::ReadAdapter that defers reading
|
64
64
|
# the content, so the reponse body is not available here.
|
65
65
|
log("Response: (not available yet)")
|
66
66
|
else
|
67
|
-
|
67
|
+
if encoding =~ /gzip/
|
68
|
+
sio = StringIO.new( body.to_s )
|
69
|
+
gz = Zlib::GzipReader.new( sio )
|
70
|
+
log("Response: (deflated)\n#{gz.read}")
|
71
|
+
else
|
72
|
+
log("Response:\n#{body.to_s}")
|
73
|
+
end
|
68
74
|
end
|
69
75
|
end
|
70
76
|
|
data/lib/httplog/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-03-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -114,7 +114,7 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - ! '>='
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
117
|
+
version: 0.18.0
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -122,7 +122,7 @@ dependencies:
|
|
122
122
|
requirements:
|
123
123
|
- - ! '>='
|
124
124
|
- !ruby/object:Gem::Version
|
125
|
-
version:
|
125
|
+
version: 0.18.0
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
127
|
name: typhoeus
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
@@ -202,18 +202,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
202
202
|
- - ! '>='
|
203
203
|
- !ruby/object:Gem::Version
|
204
204
|
version: '0'
|
205
|
-
segments:
|
206
|
-
- 0
|
207
|
-
hash: 1928624489278995380
|
208
205
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
209
206
|
none: false
|
210
207
|
requirements:
|
211
208
|
- - ! '>='
|
212
209
|
- !ruby/object:Gem::Version
|
213
210
|
version: '0'
|
214
|
-
segments:
|
215
|
-
- 0
|
216
|
-
hash: 1928624489278995380
|
217
211
|
requirements: []
|
218
212
|
rubyforge_project:
|
219
213
|
rubygems_version: 1.8.24
|
@@ -221,3 +215,4 @@ signing_key:
|
|
221
215
|
specification_version: 3
|
222
216
|
summary: Logs outgoing HTTP requests.
|
223
217
|
test_files: []
|
218
|
+
has_rdoc:
|