requests 1.0.0 → 1.0.1
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/lib/requests.rb +9 -4
- data/requests.gemspec +1 -1
- data/tests/proxy_test.rb +32 -0
- data/tests/requests_test.rb +34 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 41390f6d44a892d862b7d1ea50926da5770ba58c
|
4
|
+
data.tar.gz: 6ee4ee954976e8d56e1d0f9646faa8993c6fe2fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 217e21d6a5372943c548434d2c4d8684760083a152eefdceff959d97b42857de3d261a11fd3ef04a34e4e43315861f453ec63dd1f16552c7e98b1ace0584cab0
|
7
|
+
data.tar.gz: de74c5f4c50bcc593247bba8dd412df9afbb267a8d8ee0d2c4dfe8ebd79930839f3ba2cef00e3312ae4cb7efc525f65450bd2a9bd87c78304749d9ec809cade4
|
data/lib/requests.rb
CHANGED
@@ -21,7 +21,9 @@ module Requests
|
|
21
21
|
headers: {},
|
22
22
|
data: nil,
|
23
23
|
params: nil,
|
24
|
-
auth: nil
|
24
|
+
auth: nil,
|
25
|
+
proxy: nil,
|
26
|
+
options: {})
|
25
27
|
|
26
28
|
uri = URI.parse(url)
|
27
29
|
uri.query = encode_www_form(params) if params
|
@@ -30,7 +32,8 @@ module Requests
|
|
30
32
|
|
31
33
|
basic_auth(headers, *auth) if auth
|
32
34
|
|
33
|
-
|
35
|
+
proxy = proxy.to_h.values_at(:host, :port, :user, :password)
|
36
|
+
response = Net::HTTP.start(uri.host, uri.port, *proxy, opts(uri, options)) do |http|
|
34
37
|
http.send_request(method, uri, body, headers)
|
35
38
|
end
|
36
39
|
|
@@ -46,11 +49,13 @@ private
|
|
46
49
|
URI.encode_www_form(params)
|
47
50
|
end
|
48
51
|
|
49
|
-
def self.opts(uri)
|
52
|
+
def self.opts(uri, options)
|
50
53
|
if uri.scheme == 'https'
|
51
54
|
{ use_ssl: true,
|
52
55
|
verify_mode: OpenSSL::SSL::VERIFY_PEER,
|
53
|
-
ca_file: CA_FILE
|
56
|
+
ca_file: CA_FILE,
|
57
|
+
read_timeout: options[:read_timeout],
|
58
|
+
open_timeout: options[:open_timeout],
|
54
59
|
}
|
55
60
|
end
|
56
61
|
end
|
data/requests.gemspec
CHANGED
data/tests/proxy_test.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'requests/sugar'
|
2
|
+
require 'webrick'
|
3
|
+
require 'webrick/httpproxy'
|
4
|
+
require 'thread'
|
5
|
+
require 'logger'
|
6
|
+
|
7
|
+
port = ENV.fetch("PROXY_PORT", 8000)
|
8
|
+
|
9
|
+
setup do
|
10
|
+
WEBrick::HTTPProxyServer.new(
|
11
|
+
ServerName: "0.0.0.0",
|
12
|
+
Port: port,
|
13
|
+
Logger: Logger.new("/dev/null"),
|
14
|
+
AccessLog: []
|
15
|
+
)
|
16
|
+
end
|
17
|
+
|
18
|
+
test 'request via proxy' do |proxy|
|
19
|
+
Thread.new { proxy.start }
|
20
|
+
|
21
|
+
r = Requests.get('http://httpbin.org/get', params: { foo: 'bar' }, proxy: {
|
22
|
+
host: '0.0.0.0', port: port
|
23
|
+
})
|
24
|
+
|
25
|
+
assert_equal 200, r.status
|
26
|
+
assert_equal ['application/json'], r.headers['content-type']
|
27
|
+
assert(r.json['args'] && r.json['args']['foo'] == 'bar')
|
28
|
+
|
29
|
+
assert_equal ["1.1 vegur, 1.1 0.0.0.0:#{port}"], r.headers['via']
|
30
|
+
|
31
|
+
proxy.shutdown
|
32
|
+
end
|
data/tests/requests_test.rb
CHANGED
@@ -57,3 +57,37 @@ test 'Error' do
|
|
57
57
|
assert_equal Net::HTTPNotFound, e.response.class
|
58
58
|
end
|
59
59
|
end
|
60
|
+
|
61
|
+
test 'read timeout' do
|
62
|
+
begin
|
63
|
+
Requests.get('http://httpbin.org:10000', options: { read_timeout: 1 })
|
64
|
+
rescue => err
|
65
|
+
assert err.kind_of?(Errno::ECONNREFUSED)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
test 'read timeout not failing' do
|
70
|
+
begin
|
71
|
+
Requests.get('http://httpbin.org/get', options: { read_timeout: 30 })
|
72
|
+
rescue => err
|
73
|
+
flunk(err)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
test 'open timeout' do
|
78
|
+
begin
|
79
|
+
Requests.get('http://httpbin.org:10000', options: { open_timeout: 1 })
|
80
|
+
rescue => err
|
81
|
+
assert err.kind_of?(Errno::ECONNREFUSED)
|
82
|
+
else
|
83
|
+
flunk("expected exception")
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
test 'open timeout not failing' do
|
88
|
+
begin
|
89
|
+
Requests.get('http://httpbin.org/get', options: { open_timeout: 30 })
|
90
|
+
rescue => err
|
91
|
+
flunk(err)
|
92
|
+
end
|
93
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: requests
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cyril David
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cutest
|
@@ -37,6 +37,7 @@ files:
|
|
37
37
|
- lib/requests/sugar.rb
|
38
38
|
- makefile
|
39
39
|
- requests.gemspec
|
40
|
+
- tests/proxy_test.rb
|
40
41
|
- tests/requests_test.rb
|
41
42
|
- tests/ssl_test.rb
|
42
43
|
homepage: http://github.com/cyx/requests
|
@@ -59,7 +60,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
59
60
|
version: '0'
|
60
61
|
requirements: []
|
61
62
|
rubyforge_project:
|
62
|
-
rubygems_version: 2.
|
63
|
+
rubygems_version: 2.5.1
|
63
64
|
signing_key:
|
64
65
|
specification_version: 4
|
65
66
|
summary: 'Requests: HTTP for Humans (Ruby port)'
|