http 0.8.4 → 0.8.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9b829e0c5ca1c70ca3f55b33080088ab248c52fc
4
- data.tar.gz: 248df6f0b8df5a75bfa872d5f24a263568f63e5a
3
+ metadata.gz: c22451fa65c5d83ca271a7ac53671dd039f66f6a
4
+ data.tar.gz: ceea0aa11f428af8569bd18de9b188bce8cf65c1
5
5
  SHA512:
6
- metadata.gz: b4e37035a7a6b692d103a24e6f75a30509a5d2a92aa1b4c21a2c0a393886c648c5b28df3e36779aa274430243dbde29af69ea4eaff25c5ff4aecd3c880bc0068
7
- data.tar.gz: 76fae19bd0b8f31e9825a3514e21f83f006bc205c2e118ec4fec8ebd644900d3bbbf2f7119dc800ac4782b4ba9665be64a588083585d9bf12bae36e97188c69b
6
+ metadata.gz: 624d636385c6eac2b23ac9c1d11b631b676120344db7904381a85b02f4d19e977d6adfc9d3b42a862ea0567052a3ecac19df8818479ff4922a955847c672f0dd
7
+ data.tar.gz: 5721fc63432acfc6969bc6c6267d2c54565001b09d60e610113a89ebdf84890ef51a2a5ed3e8bdf2bf9a2c6db699fc364b23a666e3e438555edca5b1ad783445
data/CHANGES.md CHANGED
@@ -1,5 +1,13 @@
1
1
  ## master (unreleased)
2
2
 
3
+ * _the future is unwritten_
4
+
5
+
6
+ ## 0.8.5 (2015-05-06)
7
+
8
+ * Add simple timeouts configuration API. See #205. (@ixti)
9
+ * Deprecate `Request#request_header`. Use `Request#headline` instead. (@ixti)
10
+
3
11
 
4
12
  ## 0.8.4 (2015-04-23)
5
13
 
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011-15 Tony Arcieri, Erik Michaels-Ober, Aleksey V. Zapparov
1
+ Copyright (c) 2011-2015 Tony Arcieri, Erik Michaels-Ober, Alexey V. Zapparov, Zachary Anker
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,12 +1,12 @@
1
- ![http.rb](https://raw.github.com/httprb/http.rb/master/logo.png)
2
- ==============
1
+ # ![http.rb](https://raw.github.com/httprb/http.rb/master/logo.png)
2
+
3
3
  [![Gem Version](https://badge.fury.io/rb/http.svg)](http://rubygems.org/gems/http)
4
4
  [![Build Status](https://secure.travis-ci.org/httprb/http.rb.svg?branch=master)](http://travis-ci.org/httprb/http.rb)
5
5
  [![Code Climate](https://codeclimate.com/github/httprb/http.rb.svg?branch=master)](https://codeclimate.com/github/httprb/http.rb)
6
6
  [![Coverage Status](https://coveralls.io/repos/httprb/http.rb/badge.svg?branch=master)](https://coveralls.io/r/httprb/http.rb)
7
7
 
8
- About
9
- -----
8
+
9
+ ## About
10
10
 
11
11
  http.rb is an easy-to-use client library for making requests from Ruby. It uses
12
12
  a simple method chaining system for building requests, similar to Python's [Requests].
@@ -19,8 +19,8 @@ natively and outsources the parsing to native extensions.
19
19
  [requests]: http://docs.python-requests.org/en/latest/
20
20
  [http_parser.rb]: https://github.com/tmm1/http_parser.rb
21
21
 
22
- Help and Discussion
23
- -------------------
22
+
23
+ ## Help and Discussion
24
24
 
25
25
  If you need help or just want to talk about the http.rb,
26
26
  visit the http.rb Google Group:
@@ -35,8 +35,8 @@ If you believe you've found a bug, please report it at:
35
35
 
36
36
  https://github.com/httprb/http.rb/issues
37
37
 
38
- Installation
39
- ------------
38
+
39
+ ## Installation
40
40
 
41
41
  Add this line to your application's Gemfile:
42
42
 
@@ -56,17 +56,18 @@ Inside of your Ruby program do:
56
56
 
57
57
  ...to pull it in as a dependency.
58
58
 
59
- Documentation
60
- -------------
59
+
60
+ ## Documentation
61
61
 
62
62
  [Please see the http.rb wiki](https://github.com/httprb/http.rb/wiki)
63
63
  for more detailed documentation and usage notes.
64
64
 
65
- Basic Usage
66
- -----------
65
+
66
+ ## Basic Usage
67
67
 
68
68
  Here's some simple examples to get you started:
69
69
 
70
+
70
71
  ### GET requests
71
72
 
72
73
  ```ruby
@@ -100,6 +101,7 @@ The response body can be streamed with `HTTP::Response::Body#readpartial`:
100
101
  In practice you'll want to bind the HTTP::Response::Body to a local variable (e.g.
101
102
  "body") and call readpartial on it repeatedly until it returns `nil`.
102
103
 
104
+
103
105
  ### POST requests
104
106
 
105
107
  Making POST requests is simple too. Want to POST a form?
@@ -136,6 +138,7 @@ HTTP.post("http://examplc.com/resource", :form => {
136
138
 
137
139
  It's easy!
138
140
 
141
+
139
142
  ### Proxy Support
140
143
 
141
144
  Making request behind proxy is as simple as making them directly. Just specify
@@ -153,6 +156,7 @@ HTTP.via("proxy-hostname.local", 8080, "username", "password")
153
156
  .get("http://example.com/resource")
154
157
  ```
155
158
 
159
+
156
160
  ### Adding Headers
157
161
 
158
162
  The HTTP gem uses the concept of chaining to simplify requests. Let's say
@@ -184,6 +188,7 @@ HTTP[:accept => "application/json"]
184
188
  .get("https://github.com/httprb/http.rb/commit/HEAD")
185
189
  ```
186
190
 
191
+
187
192
  ### Authorization Header
188
193
 
189
194
  With [HTTP Basic Authentication](http://tools.ietf.org/html/rfc2617) using
@@ -209,6 +214,7 @@ HTTP.basic_auth(:user => "user", :pass => "pass")
209
214
  .get("https://example.com")
210
215
  ```
211
216
 
217
+
212
218
  ### Content Negotiation
213
219
 
214
220
  As important a concept as content negotiation is to HTTP, it sure should be easy,
@@ -222,6 +228,7 @@ HTTP.accept(:json).get("https://github.com/httprb/http.rb/commit/HEAD")
222
228
  This adds the appropriate Accept header for retrieving a JSON response for the
223
229
  given resource.
224
230
 
231
+
225
232
  ### Celluloid::IO Support
226
233
 
227
234
  http.rb makes it simple to make multiple concurrent HTTP requests from a
@@ -246,6 +253,7 @@ There's a little more to it, but that's the core idea!
246
253
  * [Full parallel HTTP fetcher example](https://github.com/httprb/http.rb/wiki/Parallel-requests-with-Celluloid%3A%3AIO)
247
254
  * See also: [Celluloid::IO](https://github.com/celluloid/celluloid-io)
248
255
 
256
+
249
257
  ### Caching
250
258
 
251
259
  http.rb provides caching of HTTP request (per
@@ -267,8 +275,18 @@ http.rb's caching is backed by
267
275
  [rack-cache's excellent storage subsystem](http://rtomayko.github.io/rack-cache/storage.html). Any
268
276
  storage URL supported by rack-cache is supported by http.rb's cache.
269
277
 
270
- Supported Ruby Versions
271
- -----------------------
278
+
279
+ ### Timeouts
280
+
281
+ You can configure http.rb to fail if request (connect / read / write) takes too
282
+ long:
283
+
284
+ ``` ruby
285
+ HTTP.timeout(:connect => 5, :read => 10).get "http://example.com"
286
+ ```
287
+
288
+
289
+ ## Supported Ruby Versions
272
290
 
273
291
  This library aims to support and is [tested against][travis] the following Ruby
274
292
  versions:
@@ -294,8 +312,8 @@ dropped.
294
312
 
295
313
  [travis]: http://travis-ci.org/httprb/http.rb
296
314
 
297
- Contributing to http.rb
298
- -----------------------
315
+
316
+ ## Contributing to http.rb
299
317
 
300
318
  * Fork http.rb on GitHub
301
319
  * Make your changes
@@ -304,8 +322,8 @@ Contributing to http.rb
304
322
  * If we like them we'll merge them
305
323
  * If we've accepted a patch, feel free to ask for commit access!
306
324
 
307
- Copyright
308
- ---------
309
325
 
310
- Copyright (c) 2011-15 Tony Arcieri, Erik Michaels-Ober, Aleksey V. Zapparov.
326
+ ## Copyright
327
+
328
+ Copyright (c) 2011-2015 Tony Arcieri, Erik Michaels-Ober, Alexey V. Zapparov, Zachary Anker
311
329
  See LICENSE.txt for further details.
data/http.gemspec CHANGED
@@ -1,8 +1,9 @@
1
- # -*- encoding: utf-8 -*-
2
- require File.expand_path("../lib/http/version", __FILE__)
1
+ lib = File.expand_path("../lib", __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require "http/version"
3
4
 
4
5
  Gem::Specification.new do |gem|
5
- gem.authors = ["Tony Arcieri", "Erik Michaels-Ober", "Aleksey V. Zapparov"]
6
+ gem.authors = ["Tony Arcieri", "Erik Michaels-Ober", "Alexey V. Zapparov", "Zachary Anker"]
6
7
  gem.email = ["bascule@gmail.com"]
7
8
 
8
9
  gem.description = <<-DESCRIPTION.strip.gsub(/\s+/, " ")
@@ -72,6 +72,32 @@ module HTTP
72
72
  branch(options).request verb, uri
73
73
  end
74
74
 
75
+ # @overload(options = {})
76
+ # Syntax sugar for `timeout(:per_operation, options)`
77
+ # @overload(klass, options = {})
78
+ # @param [#to_sym] klass
79
+ # @param [Hash] options
80
+ # @option options [Float] :read Read timeout
81
+ # @option options [Float] :write Write timeout
82
+ # @option options [Float] :connect Connect timeout
83
+ def timeout(klass, options = {})
84
+ klass, options = options, {} if klass.is_a? Hash
85
+
86
+ klass = case klass.to_sym
87
+ when :null then HTTP::Timeout::Null
88
+ when :global then HTTP::Timeout::Global
89
+ when :per_operation then HTTP::Timeout::PerOperation
90
+ else fail Error, "Unsupported Timeout class: #{klass}"
91
+ end
92
+
93
+ [:read, :write, :connect].each do |k|
94
+ next unless options.key? k
95
+ options["#{k}_timeout".to_sym] = options.delete k
96
+ end
97
+
98
+ branch :timeout_class => klass, :timeout_options => options
99
+ end
100
+
75
101
  # @overload persistent(host)
76
102
  # Flags as persistent
77
103
  # @param [String] host
@@ -127,11 +153,6 @@ module HTTP
127
153
  end
128
154
  alias_method :through, :via
129
155
 
130
- # Alias for with_response(:object)
131
- def stream
132
- with_response(:object)
133
- end
134
-
135
156
  # Make client follow redirects.
136
157
  # @param opts
137
158
  # @return [HTTP::Client]
data/lib/http/request.rb CHANGED
@@ -91,7 +91,7 @@ module HTTP
91
91
  # Stream the request to a socket
92
92
  def stream(socket)
93
93
  include_proxy_authorization_header if using_authenticated_proxy? && !@uri.https?
94
- Request::Writer.new(socket, body, headers, request_header).stream
94
+ Request::Writer.new(socket, body, headers, headline).stream
95
95
  end
96
96
 
97
97
  # Is this request using a proxy?
@@ -120,11 +120,14 @@ module HTTP
120
120
  end
121
121
 
122
122
  # Compute HTTP request header for direct or proxy request
123
- def request_header
123
+ def headline
124
124
  request_uri = using_proxy? ? uri : uri.omit(:scheme, :authority)
125
125
  "#{verb.to_s.upcase} #{request_uri} HTTP/#{version}"
126
126
  end
127
127
 
128
+ # @deprecated Will be removed in 1.0.0
129
+ alias_method :request_header, :headline
130
+
128
131
  # Compute HTTP request header SSL proxy connection
129
132
  def proxy_connect_header
130
133
  "CONNECT #{@uri.host}:#{@uri.port} HTTP/#{version}"
@@ -7,11 +7,11 @@ module HTTP
7
7
  # Types valid to be used as body source
8
8
  VALID_BODY_TYPES = [String, NilClass, Enumerable]
9
9
 
10
- def initialize(socket, body, headers, headerstart) # rubocop:disable ParameterLists
10
+ def initialize(socket, body, headers, headline) # rubocop:disable ParameterLists
11
11
  @body = body
12
12
  @socket = socket
13
13
  @headers = headers
14
- @request_header = [headerstart]
14
+ @request_header = [headline]
15
15
 
16
16
  validate_body_type!
17
17
  end
data/lib/http/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module HTTP
2
- VERSION = "0.8.4"
2
+ VERSION = "0.8.5"
3
3
  end
@@ -138,8 +138,8 @@ RSpec.describe HTTP::Request do
138
138
  it { is_expected.to be_a HTTP::Request::Caching }
139
139
  end
140
140
 
141
- describe "#request_header" do
142
- subject { request.request_header }
141
+ describe "#headline" do
142
+ subject { request.headline }
143
143
 
144
144
  it { is_expected.to eq "GET /foo?bar=baz#moo HTTP/1.1" }
145
145
 
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.4
4
+ version: 0.8.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tony Arcieri
8
8
  - Erik Michaels-Ober
9
- - Aleksey V. Zapparov
9
+ - Alexey V. Zapparov
10
+ - Zachary Anker
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 2015-04-23 00:00:00.000000000 Z
14
+ date: 2015-05-06 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: http_parser.rb
@@ -180,45 +181,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
180
181
  version: '0'
181
182
  requirements: []
182
183
  rubyforge_project:
183
- rubygems_version: 2.4.5
184
+ rubygems_version: 2.2.2
184
185
  signing_key:
185
186
  specification_version: 4
186
187
  summary: HTTP should be easy
187
- test_files:
188
- - spec/lib/http/cache/headers_spec.rb
189
- - spec/lib/http/cache_spec.rb
190
- - spec/lib/http/client_spec.rb
191
- - spec/lib/http/content_type_spec.rb
192
- - spec/lib/http/headers/mixin_spec.rb
193
- - spec/lib/http/headers_spec.rb
194
- - spec/lib/http/options/body_spec.rb
195
- - spec/lib/http/options/form_spec.rb
196
- - spec/lib/http/options/headers_spec.rb
197
- - spec/lib/http/options/json_spec.rb
198
- - spec/lib/http/options/merge_spec.rb
199
- - spec/lib/http/options/new_spec.rb
200
- - spec/lib/http/options/proxy_spec.rb
201
- - spec/lib/http/options_spec.rb
202
- - spec/lib/http/redirector_spec.rb
203
- - spec/lib/http/request/caching_spec.rb
204
- - spec/lib/http/request/writer_spec.rb
205
- - spec/lib/http/request_spec.rb
206
- - spec/lib/http/response/body_spec.rb
207
- - spec/lib/http/response/caching_spec.rb
208
- - spec/lib/http/response/io_body_spec.rb
209
- - spec/lib/http/response/status_spec.rb
210
- - spec/lib/http/response/string_body_spec.rb
211
- - spec/lib/http/response_spec.rb
212
- - spec/lib/http_spec.rb
213
- - spec/spec_helper.rb
214
- - spec/support/black_hole.rb
215
- - spec/support/capture_warning.rb
216
- - spec/support/connection_reuse_shared.rb
217
- - spec/support/dummy_server.rb
218
- - spec/support/dummy_server/servlet.rb
219
- - spec/support/http_handling_shared.rb
220
- - spec/support/proxy_server.rb
221
- - spec/support/servers/config.rb
222
- - spec/support/servers/runner.rb
223
- - spec/support/ssl_helper.rb
188
+ test_files: []
224
189
  has_rdoc: