http-client 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +5 -1
- data/README.md +1 -0
- data/lib/http/client.rb +16 -17
- data/test/test_request.rb +5 -5
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d546e0cdecec14e9d20d4b95c21bd149602b3c12
|
4
|
+
data.tar.gz: c564d50a791ce9244b199276c9e7b7b55e843127
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d76ba488f562a71c3335f87b59848f8ab51a5e179e9cdbd682b5e075ebf72361736aa34f620677602d8f7fda62738cbd1dd774c7d310a87839507fbd82b55c27
|
7
|
+
data.tar.gz: fd787d6c479ae7acf074a88a493e38c5ed6bf975a91954d1ed50772bd84c568ea2a029337a5c41c5dd912a8c9d9728f6301b7d36d4bfcc4b303ac31e1db696aa
|
data/CHANGELOG
CHANGED
data/README.md
CHANGED
data/lib/http/client.rb
CHANGED
@@ -9,7 +9,7 @@ require 'zlib'
|
|
9
9
|
|
10
10
|
module HTTP
|
11
11
|
module Client
|
12
|
-
VERSION = '0.
|
12
|
+
VERSION = '0.4.0'
|
13
13
|
|
14
14
|
GET = Net::HTTP::Get
|
15
15
|
HEAD = Net::HTTP::Head
|
@@ -22,12 +22,6 @@ module HTTP
|
|
22
22
|
SSL_VERIFY_NONE = OpenSSL::SSL::VERIFY_NONE
|
23
23
|
SSL_VERIFY_PEER = OpenSSL::SSL::VERIFY_PEER
|
24
24
|
|
25
|
-
class Error < StandardError;
|
26
|
-
end
|
27
|
-
|
28
|
-
class ArgumentError < Error;
|
29
|
-
end
|
30
|
-
|
31
25
|
class Request
|
32
26
|
VALID_PARAMETERS = %w(headers files query body auth timeout open_timeout ssl_timeout read_timeout max_redirects ssl_verify jar)
|
33
27
|
DEFAULT_HEADERS = {'User-Agent' => 'HTTP Client API/1.0'}
|
@@ -54,7 +48,7 @@ module HTTP
|
|
54
48
|
# @option args [Integer] read_timeout Read timeout in seconds.
|
55
49
|
# @option args [Integer] ssl_timeout SSL handshake timeout in seconds.
|
56
50
|
# @option args [Integer] max_redirects Max redirect follow, default: 0
|
57
|
-
# @option args [Integer] ssl_verify OpenSSL verification, SSL_VERIFY_PEER or SSL_VERIFY_NONE
|
51
|
+
# @option args [Integer] ssl_verify OpenSSL verification, SSL_VERIFY_PEER (default) or SSL_VERIFY_NONE.
|
58
52
|
# @option args [HTTP::CookieJar] jar Optional cookie jar to use. Relies on HTTP::CookieJar from http-cookie gem.
|
59
53
|
#
|
60
54
|
# @return [HTTP::Client::Request]
|
@@ -71,7 +65,11 @@ module HTTP
|
|
71
65
|
# response = HTTP::Client.get("http://www.example.org/", max_redirects: 3)
|
72
66
|
#
|
73
67
|
# @example Upload a few files in a POST request.
|
74
|
-
# request = HTTP::Client::Request.new(
|
68
|
+
# request = HTTP::Client::Request.new(
|
69
|
+
# :post, "http://www.example.org/",
|
70
|
+
# files: {"cats" => "cats.jpg", "dogs" => "dogs.jpg"},
|
71
|
+
# query: {title: "cute pics"}
|
72
|
+
# )
|
75
73
|
# response = request.execute
|
76
74
|
#
|
77
75
|
# @example Pass in an external cookie jar.
|
@@ -81,14 +79,14 @@ module HTTP
|
|
81
79
|
#
|
82
80
|
def initialize verb, uri, args = {}
|
83
81
|
args.each do |k, v|
|
84
|
-
raise
|
82
|
+
raise Error::Argument, "unknown argument #{k}" unless VALID_PARAMETERS.include?(k.to_s)
|
85
83
|
end
|
86
84
|
|
87
85
|
uri = parse_uri!(uri)
|
88
86
|
@delegate = create_request_delegate(verb, uri, args)
|
89
87
|
|
90
88
|
if body = args[:body]
|
91
|
-
raise
|
89
|
+
raise Error::Argument, "#{verb} cannot have body" unless @delegate.class.const_get(:REQUEST_HAS_BODY)
|
92
90
|
@delegate.body = body
|
93
91
|
end
|
94
92
|
|
@@ -155,19 +153,19 @@ module HTTP
|
|
155
153
|
uri = uri.kind_of?(URI) ? uri : URI.parse(uri)
|
156
154
|
case uri
|
157
155
|
when URI::HTTP, URI::HTTPS
|
158
|
-
raise
|
156
|
+
raise Error::URI, "Invalid URI #{uri}" if uri.host.nil?
|
159
157
|
uri
|
160
158
|
when URI::Generic
|
161
159
|
if @delegate && @delegate.uri
|
162
160
|
@delegate.uri.dup.tap {|s| s += uri }
|
163
161
|
else
|
164
|
-
raise
|
162
|
+
raise Error::URI, "Invalid URI #{uri}"
|
165
163
|
end
|
166
164
|
else
|
167
|
-
raise
|
165
|
+
raise Error::URI, "Invalid URI #{uri}"
|
168
166
|
end
|
169
167
|
rescue URI::InvalidURIError => e
|
170
|
-
raise
|
168
|
+
raise Error::URI, "Invalid URI #{uri}"
|
171
169
|
end
|
172
170
|
|
173
171
|
def create_request_delegate verb, uri, args
|
@@ -180,7 +178,7 @@ module HTTP
|
|
180
178
|
delegate = nil
|
181
179
|
|
182
180
|
if files
|
183
|
-
raise
|
181
|
+
raise Error::Argument, "#{verb} cannot have body" unless klass.const_get(:REQUEST_HAS_BODY)
|
184
182
|
multipart = Multipart.new(files, qs)
|
185
183
|
delegate = klass.new(uri, headers)
|
186
184
|
delegate.content_type = multipart.content_type
|
@@ -264,7 +262,7 @@ module HTTP
|
|
264
262
|
when /^post$/i then POST
|
265
263
|
when /^delete$/i then DELETE
|
266
264
|
else
|
267
|
-
raise
|
265
|
+
raise Error::Argument, "Invalid verb #{string}"
|
268
266
|
end
|
269
267
|
end
|
270
268
|
end # Request
|
@@ -439,6 +437,7 @@ module HTTP
|
|
439
437
|
class Zlib < Error; end
|
440
438
|
class Timeout < Error; end
|
441
439
|
class Transport < Error; end
|
440
|
+
class Argument < Error; end
|
442
441
|
end # Error
|
443
442
|
end # Client
|
444
443
|
end # HTTP
|
data/test/test_request.rb
CHANGED
@@ -4,17 +4,17 @@ require_relative 'helper'
|
|
4
4
|
|
5
5
|
describe 'HTTP Client Request' do
|
6
6
|
it 'should reject invalid arguments' do
|
7
|
-
assert_raises(HTTP::Client::
|
8
|
-
assert_raises(HTTP::Client::
|
9
|
-
assert_raises(HTTP::Client::
|
7
|
+
assert_raises(HTTP::Client::Error::Argument, 'invalid verb') {HTTP::Client::Request.new(:foo, 'http://example.org/')}
|
8
|
+
assert_raises(HTTP::Client::Error::URI, 'invalid uri') {HTTP::Client::Request.new(:get, 'http://')}
|
9
|
+
assert_raises(HTTP::Client::Error::URI, 'invalid uri') {HTTP::Client::Request.new(:get, '/hello')}
|
10
10
|
|
11
|
-
assert_raises(HTTP::Client::
|
11
|
+
assert_raises(HTTP::Client::Error::Argument, 'invalid argument') do
|
12
12
|
HTTP::Client::Request.new(:get, 'http://example.org/', foo: 1)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'validates body based on request verb' do
|
17
|
-
assert_raises(HTTP::Client::
|
17
|
+
assert_raises(HTTP::Client::Error::Argument, 'get cannot have body') do
|
18
18
|
HTTP::Client::Request.new(:get, 'http://a.c', files: {test: __FILE__})
|
19
19
|
end
|
20
20
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: http-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bharanee Rathna
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-07-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mime-types
|
@@ -124,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
124
|
version: '0'
|
125
125
|
requirements: []
|
126
126
|
rubyforge_project:
|
127
|
-
rubygems_version: 2.6.
|
127
|
+
rubygems_version: 2.6.11
|
128
128
|
signing_key:
|
129
129
|
specification_version: 4
|
130
130
|
summary: A client wrapper around Net::HTTP
|