http 0.7.4 → 0.8.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +0 -1
  3. data/.rubocop.yml +5 -2
  4. data/CHANGES.md +24 -7
  5. data/CONTRIBUTING.md +25 -0
  6. data/Gemfile +24 -22
  7. data/Guardfile +2 -2
  8. data/README.md +34 -4
  9. data/Rakefile +7 -7
  10. data/examples/parallel_requests_with_celluloid.rb +2 -2
  11. data/http.gemspec +12 -12
  12. data/lib/http.rb +11 -10
  13. data/lib/http/cache.rb +146 -0
  14. data/lib/http/cache/headers.rb +100 -0
  15. data/lib/http/cache/null_cache.rb +13 -0
  16. data/lib/http/chainable.rb +14 -3
  17. data/lib/http/client.rb +64 -80
  18. data/lib/http/connection.rb +139 -0
  19. data/lib/http/content_type.rb +2 -2
  20. data/lib/http/errors.rb +7 -1
  21. data/lib/http/headers.rb +21 -8
  22. data/lib/http/headers/mixin.rb +1 -1
  23. data/lib/http/mime_type.rb +2 -2
  24. data/lib/http/mime_type/adapter.rb +2 -2
  25. data/lib/http/mime_type/json.rb +4 -4
  26. data/lib/http/options.rb +65 -74
  27. data/lib/http/redirector.rb +3 -3
  28. data/lib/http/request.rb +20 -13
  29. data/lib/http/request/caching.rb +95 -0
  30. data/lib/http/request/writer.rb +5 -5
  31. data/lib/http/response.rb +15 -9
  32. data/lib/http/response/body.rb +21 -8
  33. data/lib/http/response/caching.rb +142 -0
  34. data/lib/http/response/io_body.rb +63 -0
  35. data/lib/http/response/parser.rb +1 -1
  36. data/lib/http/response/status.rb +4 -12
  37. data/lib/http/response/status/reasons.rb +53 -53
  38. data/lib/http/response/string_body.rb +53 -0
  39. data/lib/http/version.rb +1 -1
  40. data/spec/lib/http/cache/headers_spec.rb +77 -0
  41. data/spec/lib/http/cache_spec.rb +182 -0
  42. data/spec/lib/http/client_spec.rb +123 -95
  43. data/spec/lib/http/content_type_spec.rb +25 -25
  44. data/spec/lib/http/headers/mixin_spec.rb +8 -8
  45. data/spec/lib/http/headers_spec.rb +213 -173
  46. data/spec/lib/http/options/body_spec.rb +5 -5
  47. data/spec/lib/http/options/form_spec.rb +3 -3
  48. data/spec/lib/http/options/headers_spec.rb +7 -7
  49. data/spec/lib/http/options/json_spec.rb +3 -3
  50. data/spec/lib/http/options/merge_spec.rb +26 -22
  51. data/spec/lib/http/options/new_spec.rb +10 -10
  52. data/spec/lib/http/options/proxy_spec.rb +8 -8
  53. data/spec/lib/http/options_spec.rb +2 -2
  54. data/spec/lib/http/redirector_spec.rb +32 -32
  55. data/spec/lib/http/request/caching_spec.rb +133 -0
  56. data/spec/lib/http/request/writer_spec.rb +26 -26
  57. data/spec/lib/http/request_spec.rb +63 -58
  58. data/spec/lib/http/response/body_spec.rb +13 -13
  59. data/spec/lib/http/response/caching_spec.rb +201 -0
  60. data/spec/lib/http/response/io_body_spec.rb +35 -0
  61. data/spec/lib/http/response/status_spec.rb +25 -25
  62. data/spec/lib/http/response/string_body_spec.rb +35 -0
  63. data/spec/lib/http/response_spec.rb +64 -45
  64. data/spec/lib/http_spec.rb +103 -76
  65. data/spec/spec_helper.rb +10 -12
  66. data/spec/support/connection_reuse_shared.rb +100 -0
  67. data/spec/support/create_certs.rb +12 -12
  68. data/spec/support/dummy_server.rb +11 -11
  69. data/spec/support/dummy_server/servlet.rb +43 -31
  70. data/spec/support/proxy_server.rb +31 -25
  71. metadata +57 -8
  72. data/spec/support/example_server.rb +0 -30
  73. data/spec/support/example_server/servlet.rb +0 -102
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.4
4
+ version: 0.8.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tony Arcieri
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-03-31 00:00:00.000000000 Z
13
+ date: 2015-03-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: http_parser.rb
@@ -69,6 +69,7 @@ files:
69
69
  - ".travis.yml"
70
70
  - ".yardopts"
71
71
  - CHANGES.md
72
+ - CONTRIBUTING.md
72
73
  - Gemfile
73
74
  - Guardfile
74
75
  - LICENSE.txt
@@ -77,8 +78,12 @@ files:
77
78
  - examples/parallel_requests_with_celluloid.rb
78
79
  - http.gemspec
79
80
  - lib/http.rb
81
+ - lib/http/cache.rb
82
+ - lib/http/cache/headers.rb
83
+ - lib/http/cache/null_cache.rb
80
84
  - lib/http/chainable.rb
81
85
  - lib/http/client.rb
86
+ - lib/http/connection.rb
82
87
  - lib/http/content_type.rb
83
88
  - lib/http/errors.rb
84
89
  - lib/http/headers.rb
@@ -89,14 +94,20 @@ files:
89
94
  - lib/http/options.rb
90
95
  - lib/http/redirector.rb
91
96
  - lib/http/request.rb
97
+ - lib/http/request/caching.rb
92
98
  - lib/http/request/writer.rb
93
99
  - lib/http/response.rb
94
100
  - lib/http/response/body.rb
101
+ - lib/http/response/caching.rb
102
+ - lib/http/response/io_body.rb
95
103
  - lib/http/response/parser.rb
96
104
  - lib/http/response/status.rb
97
105
  - lib/http/response/status/reasons.rb
106
+ - lib/http/response/string_body.rb
98
107
  - lib/http/version.rb
99
108
  - logo.png
109
+ - spec/lib/http/cache/headers_spec.rb
110
+ - spec/lib/http/cache_spec.rb
100
111
  - spec/lib/http/client_spec.rb
101
112
  - spec/lib/http/content_type_spec.rb
102
113
  - spec/lib/http/headers/mixin_spec.rb
@@ -110,20 +121,23 @@ files:
110
121
  - spec/lib/http/options/proxy_spec.rb
111
122
  - spec/lib/http/options_spec.rb
112
123
  - spec/lib/http/redirector_spec.rb
124
+ - spec/lib/http/request/caching_spec.rb
113
125
  - spec/lib/http/request/writer_spec.rb
114
126
  - spec/lib/http/request_spec.rb
115
127
  - spec/lib/http/response/body_spec.rb
128
+ - spec/lib/http/response/caching_spec.rb
129
+ - spec/lib/http/response/io_body_spec.rb
116
130
  - spec/lib/http/response/status_spec.rb
131
+ - spec/lib/http/response/string_body_spec.rb
117
132
  - spec/lib/http/response_spec.rb
118
133
  - spec/lib/http_spec.rb
119
134
  - spec/spec_helper.rb
120
135
  - spec/support/black_hole.rb
121
136
  - spec/support/capture_warning.rb
137
+ - spec/support/connection_reuse_shared.rb
122
138
  - spec/support/create_certs.rb
123
139
  - spec/support/dummy_server.rb
124
140
  - spec/support/dummy_server/servlet.rb
125
- - spec/support/example_server.rb
126
- - spec/support/example_server/servlet.rb
127
141
  - spec/support/proxy_server.rb
128
142
  - spec/support/servers/config.rb
129
143
  - spec/support/servers/runner.rb
@@ -142,14 +156,49 @@ required_ruby_version: !ruby/object:Gem::Requirement
142
156
  version: '0'
143
157
  required_rubygems_version: !ruby/object:Gem::Requirement
144
158
  requirements:
145
- - - ">="
159
+ - - ">"
146
160
  - !ruby/object:Gem::Version
147
- version: '0'
161
+ version: 1.3.1
148
162
  requirements: []
149
163
  rubyforge_project:
150
- rubygems_version: 2.2.2
164
+ rubygems_version: 2.4.6
151
165
  signing_key:
152
166
  specification_version: 4
153
167
  summary: HTTP should be easy
154
- test_files: []
168
+ test_files:
169
+ - spec/lib/http/cache/headers_spec.rb
170
+ - spec/lib/http/cache_spec.rb
171
+ - spec/lib/http/client_spec.rb
172
+ - spec/lib/http/content_type_spec.rb
173
+ - spec/lib/http/headers/mixin_spec.rb
174
+ - spec/lib/http/headers_spec.rb
175
+ - spec/lib/http/options/body_spec.rb
176
+ - spec/lib/http/options/form_spec.rb
177
+ - spec/lib/http/options/headers_spec.rb
178
+ - spec/lib/http/options/json_spec.rb
179
+ - spec/lib/http/options/merge_spec.rb
180
+ - spec/lib/http/options/new_spec.rb
181
+ - spec/lib/http/options/proxy_spec.rb
182
+ - spec/lib/http/options_spec.rb
183
+ - spec/lib/http/redirector_spec.rb
184
+ - spec/lib/http/request/caching_spec.rb
185
+ - spec/lib/http/request/writer_spec.rb
186
+ - spec/lib/http/request_spec.rb
187
+ - spec/lib/http/response/body_spec.rb
188
+ - spec/lib/http/response/caching_spec.rb
189
+ - spec/lib/http/response/io_body_spec.rb
190
+ - spec/lib/http/response/status_spec.rb
191
+ - spec/lib/http/response/string_body_spec.rb
192
+ - spec/lib/http/response_spec.rb
193
+ - spec/lib/http_spec.rb
194
+ - spec/spec_helper.rb
195
+ - spec/support/black_hole.rb
196
+ - spec/support/capture_warning.rb
197
+ - spec/support/connection_reuse_shared.rb
198
+ - spec/support/create_certs.rb
199
+ - spec/support/dummy_server.rb
200
+ - spec/support/dummy_server/servlet.rb
201
+ - spec/support/proxy_server.rb
202
+ - spec/support/servers/config.rb
203
+ - spec/support/servers/runner.rb
155
204
  has_rdoc:
@@ -1,30 +0,0 @@
1
- require 'webrick'
2
- require 'singleton'
3
- require 'forwardable'
4
-
5
- require 'support/example_server/servlet'
6
-
7
- class ExampleServer
8
- extend Forwardable
9
-
10
- include Singleton
11
-
12
- PORT = 65_432
13
- ADDR = "127.0.0.1:#{PORT}"
14
-
15
- def initialize
16
- @server = WEBrick::HTTPServer.new :Port => PORT, :AccessLog => []
17
- @server.mount '/', Servlet
18
- end
19
-
20
- delegate [:start, :shutdown] => :@server
21
- end
22
-
23
- t = Thread.new { ExampleServer.instance.start }
24
-
25
- trap('INT') do
26
- ExampleServer.instance.shutdown
27
- exit
28
- end
29
-
30
- Thread.pass while t.status && t.status != 'sleep'
@@ -1,102 +0,0 @@
1
- require 'webrick'
2
-
3
- class ExampleServer
4
- class Servlet < WEBrick::HTTPServlet::AbstractServlet
5
- def not_found(_req, res)
6
- res.status = 404
7
- res.body = 'Not Found'
8
- end
9
-
10
- def self.handlers
11
- @handlers ||= {}
12
- end
13
-
14
- %w(get post head).each do |method|
15
- class_eval <<-RUBY, __FILE__, __LINE__
16
- def self.#{method}(path, &block)
17
- handlers["#{method}:\#{path}"] = block
18
- end
19
-
20
- def do_#{method.upcase}(req, res)
21
- handler = self.class.handlers["#{method}:\#{req.path}"]
22
- return instance_exec(req, res, &handler) if handler
23
- not_found
24
- end
25
- RUBY
26
- end
27
-
28
- get '/' do |req, res|
29
- res.status = 200
30
-
31
- case req['Accept']
32
- when 'application/json'
33
- res['Content-Type'] = 'application/json'
34
- res.body = '{"json": true}'
35
- else
36
- res['Content-Type'] = 'text/html'
37
- res.body = '<!doctype html>'
38
- end
39
- end
40
-
41
- get '/params' do |req, res|
42
- next not_found unless 'foo=bar' == req.query_string
43
-
44
- res.status = 200
45
- res.body = 'Params!'
46
- end
47
-
48
- get '/multiple-params' do |req, res|
49
- params = CGI.parse req.query_string
50
-
51
- next not_found unless {'foo' => ['bar'], 'baz' => ['quux']} == params
52
-
53
- res.status = 200
54
- res.body = 'More Params!'
55
- end
56
-
57
- get '/proxy' do |_req, res|
58
- res.status = 200
59
- res.body = 'Proxy!'
60
- end
61
-
62
- get '/not-found' do |_req, res|
63
- res.status = 404
64
- res.body = 'not found'
65
- end
66
-
67
- get '/redirect-301' do |_req, res|
68
- res.status = 301
69
- res['Location'] = "http://#{ExampleServer::ADDR}/"
70
- end
71
-
72
- get '/redirect-302' do |_req, res|
73
- res.status = 302
74
- res['Location'] = "http://#{ExampleServer::ADDR}/"
75
- end
76
-
77
- post '/form' do |req, res|
78
- if 'testing-form' == req.query['example']
79
- res.status = 200
80
- res.body = 'passed :)'
81
- else
82
- res.status = 400
83
- res.body = 'invalid! >:E'
84
- end
85
- end
86
-
87
- post '/body' do |req, res|
88
- if 'testing-body' == req.body
89
- res.status = 200
90
- res.body = 'passed :)'
91
- else
92
- res.status = 400
93
- res.body = 'invalid! >:E'
94
- end
95
- end
96
-
97
- head '/' do |_req, res|
98
- res.status = 200
99
- res['Content-Type'] = 'text/html'
100
- end
101
- end
102
- end