httplog 1.3.1 → 1.3.2
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/CHANGELOG.md +4 -0
- data/httplog.gemspec +2 -1
- data/lib/httplog/version.rb +1 -1
- metadata +2 -44
- data/.gitignore +0 -7
- data/.rspec +0 -2
- data/.rubocop.yml +0 -55
- data/.rubocop_todo.yml +0 -36
- data/.ruby-version +0 -1
- data/.travis.yml +0 -17
- data/Gemfile +0 -4
- data/Gemfile.lock +0 -130
- data/Guardfile +0 -25
- data/MIT-LICENSE +0 -20
- data/Rakefile +0 -46
- data/gemfiles/http3.gemfile +0 -7
- data/gemfiles/http4.gemfile +0 -7
- data/gemfiles/http5.gemfile +0 -7
- data/gemfiles/rack1.gemfile +0 -7
- data/gemfiles/rack2.gemfile +0 -7
- data/spec/adapters/ethon_adapter.rb +0 -26
- data/spec/adapters/excon_adapter.rb +0 -16
- data/spec/adapters/faraday_adapter.rb +0 -59
- data/spec/adapters/http_adapter.rb +0 -27
- data/spec/adapters/http_base_adapter.rb +0 -39
- data/spec/adapters/httparty_adapter.rb +0 -16
- data/spec/adapters/httpclient_adapter.rb +0 -31
- data/spec/adapters/net_http_adapter.rb +0 -21
- data/spec/adapters/open_uri_adapter.rb +0 -19
- data/spec/adapters/patron_adapter.rb +0 -36
- data/spec/adapters/typhoeus_adapter.rb +0 -28
- data/spec/configuration_spec.rb +0 -22
- data/spec/lib/http_client_spec.rb +0 -15
- data/spec/lib/http_log_spec.rb +0 -320
- data/spec/log/.gitkeep +0 -0
- data/spec/spec_helper.rb +0 -45
- data/spec/support/index.html +0 -8
- data/spec/support/index.html.gz +0 -0
- data/spec/support/log4r.yml +0 -17
- data/spec/support/not_gzipped.html.gz +0 -8
- data/spec/support/shared_examples.rb +0 -79
- data/spec/support/test.bin +0 -0
- data/spec/support/test.pdf +0 -198
- data/spec/support/test_server.rb +0 -34
- data/spec/support/utf8-invalid.html +0 -0
- data/spec/support/utf8.html +0 -8
data/spec/log/.gitkeep
DELETED
File without changes
|
data/spec/spec_helper.rb
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
4
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
5
|
-
require 'rspec'
|
6
|
-
require 'httpclient'
|
7
|
-
require 'excon'
|
8
|
-
# require 'typhoeus'
|
9
|
-
require 'ethon'
|
10
|
-
require 'patron'
|
11
|
-
require 'http'
|
12
|
-
require 'simplecov'
|
13
|
-
|
14
|
-
SimpleCov.start
|
15
|
-
|
16
|
-
require 'httplog'
|
17
|
-
|
18
|
-
require 'adapters/http_base_adapter'
|
19
|
-
Dir[File.dirname(__FILE__) + '/adapters/*.rb'].each { |f| require f }
|
20
|
-
Dir['./spec/support/**/*.rb'].each { |f| require f }
|
21
|
-
|
22
|
-
# Start a local rack server to serve up test pages.
|
23
|
-
@server_thread = Thread.new do
|
24
|
-
Rack::Handler::Thin.run Httplog::Test::Server.new, Port: 9292
|
25
|
-
end
|
26
|
-
sleep(3) # wait a moment for the server to be booted
|
27
|
-
|
28
|
-
RSpec.configure do |config|
|
29
|
-
config.before(:each) do
|
30
|
-
require 'stringio'
|
31
|
-
|
32
|
-
@log = StringIO.new
|
33
|
-
@logger = Logger.new @log
|
34
|
-
|
35
|
-
HttpLog.configure { |c| c.logger = @logger }
|
36
|
-
end
|
37
|
-
|
38
|
-
config.after(:each) do
|
39
|
-
HttpLog.reset!
|
40
|
-
end
|
41
|
-
|
42
|
-
def log
|
43
|
-
@log.string
|
44
|
-
end
|
45
|
-
end
|
data/spec/support/index.html
DELETED
data/spec/support/index.html.gz
DELETED
Binary file
|
data/spec/support/log4r.yml
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
log4r_config:
|
2
|
-
loggers:
|
3
|
-
- name : test
|
4
|
-
level : DEBUG
|
5
|
-
trace : 'true'
|
6
|
-
outputters :
|
7
|
-
- datefile
|
8
|
-
|
9
|
-
outputters:
|
10
|
-
- type: DateFileOutputter
|
11
|
-
name: datefile
|
12
|
-
dirname: "./spec/log"
|
13
|
-
filename: "log4r.log"
|
14
|
-
formatter:
|
15
|
-
date_pattern: '%H:%M:%S'
|
16
|
-
pattern : '%d %l: %m '
|
17
|
-
type : PatternFormatter
|
@@ -1,79 +0,0 @@
|
|
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
|
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
|
16
|
-
# Some adapters (YOU, Faraday!) re-order the keys for no bloody
|
17
|
-
# reason whatsover. So we need to check them individually. And some
|
18
|
-
# (guess who?) use non-standard URL encoding for spaces...
|
19
|
-
it do
|
20
|
-
data.split('&').each do |param|
|
21
|
-
is_expected.to match(Regexp.new(param.gsub(' ', '( |%20|\\\+)')))
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
RSpec.shared_examples 'logs status' do |status|
|
27
|
-
it { is_expected.to include(["Status:", status].compact.join(' ')) }
|
28
|
-
end
|
29
|
-
|
30
|
-
RSpec.shared_examples 'logs benchmark' do
|
31
|
-
it { is_expected.to match(/Benchmark: \d+\.\d+ seconds/) }
|
32
|
-
end
|
33
|
-
|
34
|
-
RSpec.shared_examples 'data logging disabled' do
|
35
|
-
let(:log_data) { false }
|
36
|
-
it { is_expected.to_not include('Data:') }
|
37
|
-
end
|
38
|
-
|
39
|
-
RSpec.shared_examples 'response logging disabled' do
|
40
|
-
let(:log_response) { false }
|
41
|
-
it { is_expected.to_not include('Response:') }
|
42
|
-
end
|
43
|
-
|
44
|
-
RSpec.shared_examples 'benchmark logging disabled' do
|
45
|
-
let(:log_benchmark) { false }
|
46
|
-
it { is_expected.to_not include('Benchmark:') }
|
47
|
-
end
|
48
|
-
|
49
|
-
RSpec.shared_examples 'with prefix response lines' do
|
50
|
-
let(:prefix_response_lines) { true }
|
51
|
-
it { is_expected.to include('Response:') }
|
52
|
-
it { is_expected.to include('<html>') }
|
53
|
-
end
|
54
|
-
|
55
|
-
RSpec.shared_examples 'with line numbers' do
|
56
|
-
let(:prefix_response_lines) { true }
|
57
|
-
let(:prefix_line_numbers) { true }
|
58
|
-
it { is_expected.to include('Response:') }
|
59
|
-
it { is_expected.to include('1: <html>') }
|
60
|
-
end
|
61
|
-
|
62
|
-
RSpec.shared_examples 'with request logging disabled' do
|
63
|
-
let(:log_request) { false }
|
64
|
-
it { is_expected.to_not include('Sending: GET') }
|
65
|
-
end
|
66
|
-
|
67
|
-
RSpec.shared_examples 'with connection logging disabled' do
|
68
|
-
let(:log_connect) { false }
|
69
|
-
it { is_expected.to_not include('Connecting:') }
|
70
|
-
end
|
71
|
-
|
72
|
-
RSpec.shared_examples 'filtered parameters' do
|
73
|
-
let(:filter_parameters) { %w(foo) }
|
74
|
-
|
75
|
-
it 'masks the filtered value' do
|
76
|
-
# is_expected.to include('foo=[FILTERED]&').or exclude('foo')
|
77
|
-
is_expected.to_not include('secret')
|
78
|
-
end
|
79
|
-
end
|
data/spec/support/test.bin
DELETED
Binary file
|
data/spec/support/test.pdf
DELETED
@@ -1,198 +0,0 @@
|
|
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
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
require 'rack'
|
5
|
-
|
6
|
-
module Httplog
|
7
|
-
module Test
|
8
|
-
class Server
|
9
|
-
def call(env)
|
10
|
-
@root = __dir__
|
11
|
-
path = Rack::Utils.unescape(env['PATH_INFO'])
|
12
|
-
path += 'index.html' if path == '/'
|
13
|
-
file = @root + path.to_s
|
14
|
-
|
15
|
-
params = Rack::Utils.parse_nested_query(env['QUERY_STRING'])
|
16
|
-
|
17
|
-
headers = { 'Content-Type' => 'text/html' }
|
18
|
-
|
19
|
-
if params['redirect']
|
20
|
-
[301, { 'Location' => '/index.html' }, '']
|
21
|
-
|
22
|
-
elsif File.exist?(file)
|
23
|
-
headers['Content-Type'] = 'application/octet-stream' if File.extname(file) == '.bin'
|
24
|
-
headers['Content-Type'] = 'application/pdf' if File.extname(file) == '.pdf'
|
25
|
-
headers['Content-Type'] = 'text/html; charset=UTF-8' if path =~ /utf8/
|
26
|
-
headers['Content-Encoding'] = 'gzip' if File.extname(file) == '.gz'
|
27
|
-
[200, headers, File.binread(file)]
|
28
|
-
else
|
29
|
-
[404, { 'Content-Type' => 'text/plain' }, 'file not found']
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
Binary file
|