httplog 1.1.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -3
- data/CHANGELOG.md +9 -0
- data/Gemfile.lock +39 -35
- data/Guardfile +1 -1
- data/README.md +18 -2
- data/lib/httplog/adapters/ethon.rb +13 -12
- data/lib/httplog/adapters/excon.rb +27 -37
- data/lib/httplog/adapters/http.rb +18 -19
- data/lib/httplog/adapters/httpclient.rb +14 -15
- data/lib/httplog/adapters/net_http.rb +13 -16
- data/lib/httplog/adapters/patron.rb +13 -15
- data/lib/httplog/configuration.rb +3 -1
- data/lib/httplog/http_log.rb +85 -21
- data/lib/httplog/version.rb +1 -1
- data/spec/lib/http_log_spec.rb +190 -211
- data/spec/support/shared_examples.rb +63 -0
- data/spec/support/test.pdf +198 -0
- data/spec/support/test_server.rb +1 -0
- metadata +4 -2
@@ -0,0 +1,63 @@
|
|
1
|
+
RSpec.shared_examples 'logs request' do |method|
|
2
|
+
subject { log }
|
3
|
+
it { is_expected.to include(HttpLog::LOG_PREFIX + "Sending: #{method} http://#{host}:#{port}#{path}") }
|
4
|
+
end
|
5
|
+
|
6
|
+
RSpec.shared_examples 'logs nothing' do |method|
|
7
|
+
subject { log }
|
8
|
+
it { is_expected.to eq('') }
|
9
|
+
end
|
10
|
+
|
11
|
+
RSpec.shared_examples 'logs expected response' do
|
12
|
+
it { is_expected.to include("Response:#{adapter.expected_response_body}") }
|
13
|
+
end
|
14
|
+
|
15
|
+
RSpec.shared_examples 'logs data' do |data|
|
16
|
+
it { is_expected.to include(["Data:", data].compact.join(' ')) }
|
17
|
+
end
|
18
|
+
|
19
|
+
RSpec.shared_examples 'logs status' do |status|
|
20
|
+
it { is_expected.to include(["Status:", status].compact.join(' ')) }
|
21
|
+
end
|
22
|
+
|
23
|
+
RSpec.shared_examples 'logs benchmark' do |data|
|
24
|
+
it { is_expected.to match(/Benchmark: \d+\.\d+ seconds/) }
|
25
|
+
end
|
26
|
+
|
27
|
+
RSpec.shared_examples 'data logging disabled' do
|
28
|
+
let(:log_data) { false }
|
29
|
+
it { is_expected.to_not include('Data:') }
|
30
|
+
end
|
31
|
+
|
32
|
+
RSpec.shared_examples 'response logging disabled' do
|
33
|
+
let(:log_response) { false }
|
34
|
+
it { is_expected.to_not include('Response:') }
|
35
|
+
end
|
36
|
+
|
37
|
+
RSpec.shared_examples 'benchmark logging disabled' do
|
38
|
+
let(:log_benchmark) { false }
|
39
|
+
it { is_expected.to_not include('Benchmark:') }
|
40
|
+
end
|
41
|
+
|
42
|
+
RSpec.shared_examples 'with prefix response lines' do
|
43
|
+
let(:prefix_response_lines) { true }
|
44
|
+
it { is_expected.to include('Response:') }
|
45
|
+
it { is_expected.to include('<html>') }
|
46
|
+
end
|
47
|
+
|
48
|
+
RSpec.shared_examples 'with line numbers' do
|
49
|
+
let(:prefix_response_lines) { true }
|
50
|
+
let(:prefix_line_numbers) { true }
|
51
|
+
it { is_expected.to include('Response:') }
|
52
|
+
it { is_expected.to include('1: <html>') }
|
53
|
+
end
|
54
|
+
|
55
|
+
RSpec.shared_examples 'with request logging disabled' do
|
56
|
+
let(:log_request) { false }
|
57
|
+
it { is_expected.to_not include('Sending: GET') }
|
58
|
+
end
|
59
|
+
|
60
|
+
RSpec.shared_examples 'with connection logging disabled' do
|
61
|
+
let(:log_connect) { false }
|
62
|
+
it { is_expected.to_not include('Connecting:') }
|
63
|
+
end
|
@@ -0,0 +1,198 @@
|
|
1
|
+
%PDF-1.3
|
2
|
+
%����
|
3
|
+
|
4
|
+
1 0 obj
|
5
|
+
<<
|
6
|
+
/Type /Catalog
|
7
|
+
/Outlines 2 0 R
|
8
|
+
/Pages 3 0 R
|
9
|
+
>>
|
10
|
+
endobj
|
11
|
+
|
12
|
+
2 0 obj
|
13
|
+
<<
|
14
|
+
/Type /Outlines
|
15
|
+
/Count 0
|
16
|
+
>>
|
17
|
+
endobj
|
18
|
+
|
19
|
+
3 0 obj
|
20
|
+
<<
|
21
|
+
/Type /Pages
|
22
|
+
/Count 2
|
23
|
+
/Kids [ 4 0 R 6 0 R ]
|
24
|
+
>>
|
25
|
+
endobj
|
26
|
+
|
27
|
+
4 0 obj
|
28
|
+
<<
|
29
|
+
/Type /Page
|
30
|
+
/Parent 3 0 R
|
31
|
+
/Resources <<
|
32
|
+
/Font <<
|
33
|
+
/F1 9 0 R
|
34
|
+
>>
|
35
|
+
/ProcSet 8 0 R
|
36
|
+
>>
|
37
|
+
/MediaBox [0 0 612.0000 792.0000]
|
38
|
+
/Contents 5 0 R
|
39
|
+
>>
|
40
|
+
endobj
|
41
|
+
|
42
|
+
5 0 obj
|
43
|
+
<< /Length 1074 >>
|
44
|
+
stream
|
45
|
+
2 J
|
46
|
+
BT
|
47
|
+
0 0 0 rg
|
48
|
+
/F1 0027 Tf
|
49
|
+
57.3750 722.2800 Td
|
50
|
+
( A Simple PDF File ) Tj
|
51
|
+
ET
|
52
|
+
BT
|
53
|
+
/F1 0010 Tf
|
54
|
+
69.2500 688.6080 Td
|
55
|
+
( This is a small demonstration .pdf file - ) Tj
|
56
|
+
ET
|
57
|
+
BT
|
58
|
+
/F1 0010 Tf
|
59
|
+
69.2500 664.7040 Td
|
60
|
+
( just for use in the Virtual Mechanics tutorials. More text. And more ) Tj
|
61
|
+
ET
|
62
|
+
BT
|
63
|
+
/F1 0010 Tf
|
64
|
+
69.2500 652.7520 Td
|
65
|
+
( text. And more text. And more text. And more text. ) Tj
|
66
|
+
ET
|
67
|
+
BT
|
68
|
+
/F1 0010 Tf
|
69
|
+
69.2500 628.8480 Td
|
70
|
+
( And more text. And more text. And more text. And more text. And more ) Tj
|
71
|
+
ET
|
72
|
+
BT
|
73
|
+
/F1 0010 Tf
|
74
|
+
69.2500 616.8960 Td
|
75
|
+
( text. And more text. Boring, zzzzz. And more text. And more text. And ) Tj
|
76
|
+
ET
|
77
|
+
BT
|
78
|
+
/F1 0010 Tf
|
79
|
+
69.2500 604.9440 Td
|
80
|
+
( more text. And more text. And more text. And more text. And more text. ) Tj
|
81
|
+
ET
|
82
|
+
BT
|
83
|
+
/F1 0010 Tf
|
84
|
+
69.2500 592.9920 Td
|
85
|
+
( And more text. And more text. ) Tj
|
86
|
+
ET
|
87
|
+
BT
|
88
|
+
/F1 0010 Tf
|
89
|
+
69.2500 569.0880 Td
|
90
|
+
( And more text. And more text. And more text. And more text. And more ) Tj
|
91
|
+
ET
|
92
|
+
BT
|
93
|
+
/F1 0010 Tf
|
94
|
+
69.2500 557.1360 Td
|
95
|
+
( text. And more text. And more text. Even more. Continued on page 2 ...) Tj
|
96
|
+
ET
|
97
|
+
endstream
|
98
|
+
endobj
|
99
|
+
|
100
|
+
6 0 obj
|
101
|
+
<<
|
102
|
+
/Type /Page
|
103
|
+
/Parent 3 0 R
|
104
|
+
/Resources <<
|
105
|
+
/Font <<
|
106
|
+
/F1 9 0 R
|
107
|
+
>>
|
108
|
+
/ProcSet 8 0 R
|
109
|
+
>>
|
110
|
+
/MediaBox [0 0 612.0000 792.0000]
|
111
|
+
/Contents 7 0 R
|
112
|
+
>>
|
113
|
+
endobj
|
114
|
+
|
115
|
+
7 0 obj
|
116
|
+
<< /Length 676 >>
|
117
|
+
stream
|
118
|
+
2 J
|
119
|
+
BT
|
120
|
+
0 0 0 rg
|
121
|
+
/F1 0027 Tf
|
122
|
+
57.3750 722.2800 Td
|
123
|
+
( Simple PDF File 2 ) Tj
|
124
|
+
ET
|
125
|
+
BT
|
126
|
+
/F1 0010 Tf
|
127
|
+
69.2500 688.6080 Td
|
128
|
+
( ...continued from page 1. Yet more text. And more text. And more text. ) Tj
|
129
|
+
ET
|
130
|
+
BT
|
131
|
+
/F1 0010 Tf
|
132
|
+
69.2500 676.6560 Td
|
133
|
+
( And more text. And more text. And more text. And more text. And more ) Tj
|
134
|
+
ET
|
135
|
+
BT
|
136
|
+
/F1 0010 Tf
|
137
|
+
69.2500 664.7040 Td
|
138
|
+
( text. Oh, how boring typing this stuff. But not as boring as watching ) Tj
|
139
|
+
ET
|
140
|
+
BT
|
141
|
+
/F1 0010 Tf
|
142
|
+
69.2500 652.7520 Td
|
143
|
+
( paint dry. And more text. And more text. And more text. And more text. ) Tj
|
144
|
+
ET
|
145
|
+
BT
|
146
|
+
/F1 0010 Tf
|
147
|
+
69.2500 640.8000 Td
|
148
|
+
( Boring. More, a little more text. The end, and just as well. ) Tj
|
149
|
+
ET
|
150
|
+
endstream
|
151
|
+
endobj
|
152
|
+
|
153
|
+
8 0 obj
|
154
|
+
[/PDF /Text]
|
155
|
+
endobj
|
156
|
+
|
157
|
+
9 0 obj
|
158
|
+
<<
|
159
|
+
/Type /Font
|
160
|
+
/Subtype /Type1
|
161
|
+
/Name /F1
|
162
|
+
/BaseFont /Helvetica
|
163
|
+
/Encoding /WinAnsiEncoding
|
164
|
+
>>
|
165
|
+
endobj
|
166
|
+
|
167
|
+
10 0 obj
|
168
|
+
<<
|
169
|
+
/Creator (Rave \(http://www.nevrona.com/rave\))
|
170
|
+
/Producer (Nevrona Designs)
|
171
|
+
/CreationDate (D:20060301072826)
|
172
|
+
>>
|
173
|
+
endobj
|
174
|
+
|
175
|
+
xref
|
176
|
+
0 11
|
177
|
+
0000000000 65535 f
|
178
|
+
0000000019 00000 n
|
179
|
+
0000000093 00000 n
|
180
|
+
0000000147 00000 n
|
181
|
+
0000000222 00000 n
|
182
|
+
0000000390 00000 n
|
183
|
+
0000001522 00000 n
|
184
|
+
0000001690 00000 n
|
185
|
+
0000002423 00000 n
|
186
|
+
0000002456 00000 n
|
187
|
+
0000002574 00000 n
|
188
|
+
|
189
|
+
trailer
|
190
|
+
<<
|
191
|
+
/Size 11
|
192
|
+
/Root 1 0 R
|
193
|
+
/Info 10 0 R
|
194
|
+
>>
|
195
|
+
|
196
|
+
startxref
|
197
|
+
2714
|
198
|
+
%%EOF
|
data/spec/support/test_server.rb
CHANGED
@@ -21,6 +21,7 @@ module Httplog
|
|
21
21
|
|
22
22
|
elsif File.exist?(file)
|
23
23
|
headers['Content-Type'] = 'application/octet-stream' if File.extname(file) == '.bin'
|
24
|
+
headers['Content-Type'] = 'application/pdf' if File.extname(file) == '.pdf'
|
24
25
|
headers['Content-Type'] = 'text/html; charset=UTF-8' if path =~ /utf8/
|
25
26
|
headers['Content-Encoding'] = 'gzip' if File.extname(file) == '.gz'
|
26
27
|
[200, headers, File.binread(file)]
|
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: 1.
|
4
|
+
version: 1.2.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: 2018-
|
11
|
+
date: 2018-12-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ethon
|
@@ -277,7 +277,9 @@ files:
|
|
277
277
|
- spec/support/index.html.gz
|
278
278
|
- spec/support/log4r.yml
|
279
279
|
- spec/support/not_gzipped.html.gz
|
280
|
+
- spec/support/shared_examples.rb
|
280
281
|
- spec/support/test.bin
|
282
|
+
- spec/support/test.pdf
|
281
283
|
- spec/support/test_server.rb
|
282
284
|
- spec/support/utf8-invalid.html
|
283
285
|
- spec/support/utf8.html
|