http-client 0.3.0 → 0.4.0
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 +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
|