rest 1.1.0 → 1.2.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.
- data/Gemfile.lock +3 -1
- data/README.md +10 -4
- data/lib/rest/client.rb +17 -8
- data/lib/rest/version.rb +1 -1
- data/lib/rest/wrappers/base_wrapper.rb +26 -1
- data/lib/rest/wrappers/net_http_persistent_wrapper.rb +1 -2
- data/lib/rest/wrappers/rest_client_wrapper.rb +2 -2
- data/lib/rest/wrappers/typhoeus_wrapper.rb +2 -2
- data/rest.gemspec +2 -1
- data/test/test_performance.rb +12 -15
- metadata +19 -3
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rest (1.
|
4
|
+
rest (1.1.0)
|
5
5
|
rest-client (>= 0.3.0)
|
6
6
|
|
7
7
|
GEM
|
@@ -10,6 +10,7 @@ GEM
|
|
10
10
|
ffi (1.0.11)
|
11
11
|
mime-types (1.18)
|
12
12
|
net-http-persistent (2.7)
|
13
|
+
quicky (0.0.1)
|
13
14
|
rake (0.9.2.2)
|
14
15
|
rest-client (1.6.7)
|
15
16
|
mime-types (>= 1.16)
|
@@ -24,6 +25,7 @@ PLATFORMS
|
|
24
25
|
|
25
26
|
DEPENDENCIES
|
26
27
|
net-http-persistent
|
28
|
+
quicky
|
27
29
|
rake
|
28
30
|
rest!
|
29
31
|
test-unit
|
data/README.md
CHANGED
@@ -28,7 +28,7 @@ Supported http libraries are:
|
|
28
28
|
Then use it:
|
29
29
|
|
30
30
|
GET
|
31
|
-
|
31
|
+
------
|
32
32
|
|
33
33
|
@rest.get(url, options...)
|
34
34
|
|
@@ -38,7 +38,7 @@ options:
|
|
38
38
|
- :headers => headers
|
39
39
|
|
40
40
|
POST
|
41
|
-
|
41
|
+
-----
|
42
42
|
|
43
43
|
@rest.post(url, options...)
|
44
44
|
|
@@ -48,7 +48,7 @@ options:
|
|
48
48
|
- :headers => headers
|
49
49
|
|
50
50
|
PUT
|
51
|
-
|
51
|
+
------
|
52
52
|
|
53
53
|
@rest.put(url, options...)
|
54
54
|
|
@@ -58,9 +58,15 @@ options:
|
|
58
58
|
- :headers => headers
|
59
59
|
|
60
60
|
DELETE
|
61
|
-
|
61
|
+
--------
|
62
62
|
|
63
63
|
@rest.delete(url, options...)
|
64
64
|
|
65
|
+
Responses
|
66
|
+
=========
|
67
|
+
|
68
|
+
The response object you get back will always be consistent and will have the following functions:
|
65
69
|
|
70
|
+
response.code
|
71
|
+
response.body
|
66
72
|
|
data/lib/rest/client.rb
CHANGED
@@ -19,9 +19,11 @@ module Rest
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
require_relative 'wrappers/base_wrapper'
|
23
|
+
|
24
|
+
#def self.puts(s)
|
25
|
+
# Kernel.puts("rest gem: #{s}")
|
26
|
+
#end
|
25
27
|
|
26
28
|
class Client
|
27
29
|
|
@@ -43,15 +45,15 @@ module Rest
|
|
43
45
|
if @gem == :typhoeus
|
44
46
|
require_relative 'wrappers/typhoeus_wrapper'
|
45
47
|
@wrapper = Rest::Wrappers::TyphoeusWrapper.new
|
46
|
-
|
48
|
+
@logger.debug "Using typhoeus gem."
|
47
49
|
elsif @gem == :net_http_persistent
|
48
50
|
require_relative 'wrappers/net_http_persistent_wrapper'
|
49
51
|
@wrapper = Rest::Wrappers::NetHttpPersistentWrapper.new(self)
|
50
|
-
|
52
|
+
@logger.debug "Using net-http-persistent gem."
|
51
53
|
else
|
52
|
-
require_relative 'wrappers/rest_client_wrapper'
|
53
54
|
@wrapper = Rest::Wrappers::RestClientWrapper.new
|
54
|
-
|
55
|
+
hint = (options[:gem] ? "" : " Please install 'typhoeus' or net-http-persistent gem for best performance.")
|
56
|
+
@logger.debug "Using rest-client gem.#{hint}"
|
55
57
|
end
|
56
58
|
end
|
57
59
|
|
@@ -65,7 +67,6 @@ module Rest
|
|
65
67
|
# try net-http-persistent
|
66
68
|
require 'net/http/persistent'
|
67
69
|
@gem = :net_http_persistent
|
68
|
-
|
69
70
|
rescue LoadError => ex
|
70
71
|
require 'rest_client'
|
71
72
|
@gem = :rest_client
|
@@ -134,6 +135,14 @@ module Rest
|
|
134
135
|
return res
|
135
136
|
end
|
136
137
|
|
138
|
+
def post_file(url, req_hash={})
|
139
|
+
res = nil
|
140
|
+
perform_op do
|
141
|
+
res = @wrapper.post_file(url, req_hash)
|
142
|
+
end
|
143
|
+
return res
|
144
|
+
end
|
145
|
+
|
137
146
|
def close
|
138
147
|
@wrapper.close
|
139
148
|
end
|
data/lib/rest/version.rb
CHANGED
@@ -1,7 +1,32 @@
|
|
1
1
|
class BaseWrapper
|
2
2
|
|
3
|
+
def post_file(url, req_hash={})
|
4
|
+
response = nil
|
5
|
+
begin
|
6
|
+
if req_hash[:body]
|
7
|
+
req_hash = req_hash.merge(req_hash[:body])
|
8
|
+
req_hash.delete(:body)
|
9
|
+
end
|
10
|
+
|
11
|
+
headers = {}
|
12
|
+
if req_hash[:headers]
|
13
|
+
headers = req_hash[:headers]
|
14
|
+
req_hash.delete(:headers)
|
15
|
+
end
|
16
|
+
|
17
|
+
r2 = RestClient.post(url, req_hash, headers)
|
18
|
+
response = Rest::Wrappers::RestClientResponseWrapper.new(r2)
|
19
|
+
rescue RestClient::Exception => ex
|
20
|
+
raise Rest::Wrappers::RestClientExceptionWrapper.new(ex)
|
21
|
+
end
|
22
|
+
response
|
23
|
+
end
|
24
|
+
|
3
25
|
# if wrapper has a close/shutdown, override this
|
4
26
|
def close
|
5
27
|
|
6
28
|
end
|
7
|
-
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# we need it for post_file, ok as gem already depends on it
|
32
|
+
require_relative 'rest_client_wrapper'
|
data/rest.gemspec
CHANGED
@@ -17,12 +17,13 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.required_rubygems_version = ">= 1.3.6"
|
18
18
|
gem.required_ruby_version = Gem::Requirement.new(">= 1.9")
|
19
19
|
gem.add_runtime_dependency "rest-client", ">= 0.3.0"
|
20
|
+
gem.add_runtime_dependency "net-http-persistent"
|
20
21
|
|
21
22
|
gem.add_development_dependency "test-unit"
|
22
23
|
gem.add_development_dependency "rake"
|
23
24
|
gem.add_development_dependency "uber_config"
|
24
25
|
gem.add_development_dependency "typhoeus"
|
25
|
-
gem.add_development_dependency "
|
26
|
+
gem.add_development_dependency "quicky"
|
26
27
|
|
27
28
|
end
|
28
29
|
|
data/test/test_performance.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
# Put config.yml file in ~/Dropbox/configs/ironmq_gem/test/config.yml
|
2
|
-
|
3
1
|
gem 'test-unit'
|
4
2
|
require 'test/unit'
|
5
3
|
require 'yaml'
|
4
|
+
require 'quicky'
|
5
|
+
|
6
6
|
require_relative 'test_base'
|
7
7
|
|
8
8
|
class TestTests < TestBase
|
@@ -13,30 +13,27 @@ class TestTests < TestBase
|
|
13
13
|
|
14
14
|
def test_get_performance
|
15
15
|
|
16
|
-
times =
|
16
|
+
times = 10
|
17
17
|
|
18
|
-
|
18
|
+
quicky = Quicky::Timer.new
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
to_run = [:typhoeus, :rest_client, :net_http_persistent]
|
21
|
+
to_run.each do |gem|
|
22
|
+
run_perf(quicky, times, gem)
|
23
|
+
end
|
23
24
|
|
24
|
-
|
25
|
-
|
25
|
+
quicky.results.each_pair do |k, v|
|
26
|
+
puts "#{k}: #{v.duration}"
|
26
27
|
end
|
27
28
|
|
28
29
|
end
|
29
30
|
|
30
|
-
def run_perf(times, gem)
|
31
|
+
def run_perf(quicky, times, gem)
|
31
32
|
puts "Starting #{gem} test..."
|
32
|
-
t = Time.now
|
33
33
|
client = Rest::Client.new(:gem => gem)
|
34
|
-
|
34
|
+
quicky.loop(gem, times) do
|
35
35
|
client.get("http://requestb.in/ydyd4nyd")
|
36
36
|
end
|
37
|
-
duration = Time.now.to_f - t.to_f
|
38
|
-
puts "#{times} posts took #{duration}"
|
39
|
-
{:gem=>gem, :duration=>duration}
|
40
37
|
end
|
41
38
|
|
42
39
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|
@@ -27,6 +27,22 @@ dependencies:
|
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: 0.3.0
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: net-http-persistent
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
30
46
|
- !ruby/object:Gem::Dependency
|
31
47
|
name: test-unit
|
32
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -92,7 +108,7 @@ dependencies:
|
|
92
108
|
- !ruby/object:Gem::Version
|
93
109
|
version: '0'
|
94
110
|
- !ruby/object:Gem::Dependency
|
95
|
-
name:
|
111
|
+
name: quicky
|
96
112
|
requirement: !ruby/object:Gem::Requirement
|
97
113
|
none: false
|
98
114
|
requirements:
|