activeresource-response 0.5.1 → 0.5.3
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/.travis.yml +3 -2
- data/README.rdoc +3 -9
- data/lib/active_resource_response.rb +3 -4
- data/lib/active_resource_response/custom_methods.rb +0 -2
- data/lib/active_resource_response/{response.rb → http_mock.rb} +11 -10
- data/lib/active_resource_response/response_method.rb +9 -19
- data/lib/active_resource_response/version.rb +1 -1
- data/test/active_resource_response_test.rb +9 -37
- metadata +10 -9
data/.travis.yml
CHANGED
data/README.rdoc
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
= Activeresource-response
|
2
|
-
This gem adds possibility to access http response object from result (single object or collection) of activeresource call (methods : find, all, first, last, get )
|
2
|
+
This gem adds possibility to access http response (Net::HTTPResponse) object from result (single object or collection) of activeresource call (methods : find, all, first, last, get )
|
3
3
|
|
4
4
|
== Build status {<img src="https://secure.travis-ci.org/Fivell/activeresource-response.png" />}[http://travis-ci.org/Fivell/activeresource-response]
|
5
5
|
|
@@ -74,11 +74,12 @@ Example
|
|
74
74
|
class Order < ActiveResource::Base
|
75
75
|
self.site = 'http://0.0.0.0:3000/'
|
76
76
|
self.element_name = "order"
|
77
|
-
add_response_method :my_response # our new method
|
77
|
+
add_response_method :my_response # our new method
|
78
78
|
end
|
79
79
|
|
80
80
|
orders = Order.all
|
81
81
|
first_order = Order.find(1)
|
82
|
+
#see Net::HTTPResponse#[] method
|
82
83
|
orders.my_response['content-length']
|
83
84
|
# => "3831"
|
84
85
|
first_order.my_response['content-length']
|
@@ -121,12 +122,5 @@ http response is object of Net::HTTPOK, Net::HTTPClientError or one of other sub
|
|
121
122
|
of Net::HTTPResponse class. For more information see documentation http://www.ruby-doc.org/stdlib-1.9.3/libdoc/net/http/rdoc/Net/HTTPResponse.html
|
122
123
|
|
123
124
|
|
124
|
-
== Inspirators
|
125
|
-
|
126
|
-
http://phpblog.com.ua/2012/01/rails-activeresource-i-zagolovki/
|
127
|
-
|
128
|
-
http://stackoverflow.com/questions/5972429/active-resource-responses-how-to-get-them
|
129
|
-
|
130
|
-
|
131
125
|
== Please, feel free to contact me if you have any questions
|
132
126
|
fedoronchuk(at)gmail.com
|
@@ -30,8 +30,7 @@ require "active_resource_response/custom_methods"
|
|
30
30
|
ActiveResource::Connection.send :include, ActiveResourceResponse::Connection
|
31
31
|
ActiveResource::Base.send :include, ActiveResourceResponse::ResponseMethod
|
32
32
|
ActiveResource::Base.send :include, ActiveResourceResponse::CustomMethods
|
33
|
-
if defined? ActiveResource::Response
|
34
|
-
require "active_resource_response/response"
|
35
|
-
ActiveResource::Response.send :include, ActiveResourceResponse::Response
|
36
33
|
|
37
|
-
|
34
|
+
if defined?(Rails) and Rails.env.test?
|
35
|
+
require "active_resource_response/http_mock"
|
36
|
+
end
|
@@ -20,19 +20,20 @@
|
|
20
20
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
21
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
22
|
#++
|
23
|
+
require 'active_resource/http_mock'
|
23
24
|
module ActiveResourceResponse
|
24
|
-
module
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
def [](key)
|
33
|
-
@headers[key]
|
25
|
+
module HttpMock
|
26
|
+
module Response
|
27
|
+
#to avoid methods conflict with Net:HttpResponse and ActiveResource::Response (HttpMock)
|
28
|
+
def self.included(base)
|
29
|
+
base.class_eval do
|
30
|
+
def to_hash
|
31
|
+
@headers
|
32
|
+
end
|
34
33
|
end
|
35
34
|
end
|
36
35
|
end
|
37
36
|
end
|
38
37
|
end
|
38
|
+
|
39
|
+
ActiveResource::Response.send :include, ActiveResourceResponse::HttpMock::Response
|
@@ -26,7 +26,6 @@ module ActiveResourceResponse
|
|
26
26
|
|
27
27
|
def self.included(base)
|
28
28
|
base.extend ClassMethods
|
29
|
-
|
30
29
|
end
|
31
30
|
|
32
31
|
module ClassMethods
|
@@ -36,26 +35,18 @@ module ActiveResourceResponse
|
|
36
35
|
end
|
37
36
|
|
38
37
|
def add_response_method(method_name = :http_response)
|
39
|
-
|
40
38
|
class_attribute :http_response_method
|
41
|
-
self.http_response_method = method_name
|
42
|
-
|
43
|
-
|
44
|
-
|
39
|
+
self.http_response_method = method_name
|
45
40
|
class << self
|
46
41
|
alias :find_without_http_response :find
|
47
42
|
|
48
43
|
def find(*arguments)
|
49
44
|
result = find_without_http_response(*arguments)
|
50
45
|
self.merge_response_to_result(result)
|
51
|
-
|
52
46
|
end
|
53
47
|
end unless methods.map(&:to_sym).include?(:find_without_http_response)
|
54
|
-
|
55
48
|
end
|
56
|
-
|
57
|
-
|
58
|
-
|
49
|
+
|
59
50
|
def remove_response_method
|
60
51
|
class << self
|
61
52
|
undef :find
|
@@ -63,20 +54,19 @@ module ActiveResourceResponse
|
|
63
54
|
undef :find_without_http_response
|
64
55
|
undef :http_response_method
|
65
56
|
undef :http_response_method=
|
66
|
-
|
67
57
|
end
|
68
58
|
end
|
69
59
|
|
70
60
|
def merge_response_to_result(result)
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
61
|
+
begin
|
62
|
+
result.instance_variable_set(:@http_response, connection.http_response)
|
63
|
+
(class << result; self; end).send(:define_method, self.http_response_method) do
|
64
|
+
@http_response
|
65
|
+
end
|
66
|
+
rescue StandardError
|
67
|
+
end
|
76
68
|
result
|
77
69
|
end
|
78
|
-
|
79
|
-
|
80
70
|
end
|
81
71
|
end
|
82
72
|
end
|
@@ -27,26 +27,23 @@ $:.unshift(lib)
|
|
27
27
|
$:.unshift(unit_tests)
|
28
28
|
|
29
29
|
require 'test/unit'
|
30
|
-
require 'active_resource'
|
31
|
-
require 'active_resource/http_mock'
|
32
30
|
require 'active_resource_response'
|
33
31
|
require "fixtures/country"
|
34
32
|
require "fixtures/city"
|
35
33
|
require "fixtures/region"
|
36
34
|
require "fixtures/street"
|
37
|
-
|
35
|
+
require "active_resource_response/http_mock"
|
38
36
|
class ActiveResourceResponseTest < Test::Unit::TestCase
|
39
37
|
|
40
38
|
|
41
39
|
def setup
|
42
|
-
|
43
40
|
@country = {:country => {:id => 1, :name => "Ukraine", :iso=>"UA"}}
|
41
|
+
@country_create_error = {"errors"=>{:base => ["Country exists"]}}
|
44
42
|
@city = {:city => {:id => 1, :name => "Odessa", :population => 2500000}}
|
45
43
|
@region = {:region => {:id => 1, :name => "Odessa region", :population => 4500000}}
|
46
44
|
@street = {:street => {:id => 1, :name => "Deribasovskaya", :population => 2300}}
|
45
|
+
|
47
46
|
ActiveResource::HttpMock.respond_to do |mock|
|
48
|
-
|
49
|
-
|
50
47
|
mock.get "/countries.json", {}, [@country].to_json, 200, {"X-total"=>'1'}
|
51
48
|
mock.get "/regions.json", {}, [@region].to_json, 200, {"X-total"=>'1'}
|
52
49
|
mock.get "/regions/1.json", {}, @region.to_json, 200, {"X-total"=>'1'}
|
@@ -64,8 +61,6 @@ class ActiveResourceResponseTest < Test::Unit::TestCase
|
|
64
61
|
mock.get "/streets/1/city.json", {}, @city.to_json, 200, {"X-total"=>'1'}
|
65
62
|
mock.get "/streets/1.json", {}, @street.to_json, 200, {"X-total"=>'1'}
|
66
63
|
end
|
67
|
-
|
68
|
-
|
69
64
|
end
|
70
65
|
|
71
66
|
|
@@ -75,46 +70,34 @@ class ActiveResourceResponseTest < Test::Unit::TestCase
|
|
75
70
|
assert countries.http.respond_to?(:cookies)
|
76
71
|
assert countries.http.respond_to?(:headers)
|
77
72
|
assert Country.respond_to?(:http_response)
|
78
|
-
|
79
73
|
regions = Region.all
|
80
74
|
assert regions.respond_to?(:http_response)
|
81
|
-
|
82
75
|
end
|
83
76
|
|
84
77
|
def test_get_headers_from_all
|
85
78
|
countries = Country.all
|
86
79
|
assert_kind_of Country, countries.first
|
87
80
|
assert_equal "UA", countries.first.iso
|
88
|
-
|
89
|
-
assert_equal countries.http['X-total'].to_i, 1
|
90
81
|
assert_equal countries.http.headers[:x_total].to_i, 1
|
91
|
-
|
92
82
|
end
|
93
83
|
|
94
84
|
|
95
85
|
def test_get_headers_from_custom_methods
|
96
86
|
cities = Region.get("cities")
|
97
|
-
|
98
87
|
assert cities.respond_to?(:http_response)
|
99
|
-
assert_equal cities.http_response[
|
100
|
-
|
101
|
-
|
88
|
+
assert_equal cities.http_response.headers[:x_total].to_i, 2
|
102
89
|
count = Country.find(1).get("population")
|
103
90
|
assert_equal count.to_i, 45000000
|
104
|
-
assert_equal Country.connection.http_response['X-total'].to_i, 1
|
105
91
|
assert_equal Country.connection.http_response.headers[:x_total].to_i, 1
|
106
|
-
assert_equal Country.http_response[
|
92
|
+
assert_equal Country.http_response.headers[:x_total].to_i, 1
|
107
93
|
cities = Country.find(1).get("cities")
|
108
94
|
assert cities.respond_to?(:http), "Cities should respond to http"
|
109
|
-
assert_equal cities.http[
|
110
|
-
|
95
|
+
assert_equal cities.http.headers[:x_total].to_i, 1, "Cities total value should be 1"
|
111
96
|
regions_population = Region.get("population")
|
112
97
|
assert_equal regions_population.to_i, 45000000
|
113
|
-
|
114
98
|
cities = Region.find(1).get("cities")
|
115
99
|
assert cities.respond_to?(:http_response)
|
116
|
-
assert_equal cities.http_response[
|
117
|
-
|
100
|
+
assert_equal cities.http_response.headers[:x_total].to_i, 1
|
118
101
|
|
119
102
|
end
|
120
103
|
|
@@ -124,18 +107,13 @@ class ActiveResourceResponseTest < Test::Unit::TestCase
|
|
124
107
|
assert_kind_of City, cities.first
|
125
108
|
count = cities.first.get("population")
|
126
109
|
assert_equal count.to_i, 2500000
|
127
|
-
|
128
110
|
end
|
129
111
|
|
130
|
-
|
131
112
|
def test_get_headers_from_find
|
132
113
|
country = Country.find(1)
|
133
|
-
assert_equal country.http['X-total'].to_i, 1
|
134
114
|
assert_equal country.http.headers[:x_total].to_i, 1
|
135
|
-
|
136
115
|
end
|
137
116
|
|
138
|
-
|
139
117
|
def test_get_cookies
|
140
118
|
country = Country.find(1)
|
141
119
|
assert_equal country.http.cookies['foo'], 'bar'
|
@@ -146,16 +124,13 @@ class ActiveResourceResponseTest < Test::Unit::TestCase
|
|
146
124
|
|
147
125
|
end
|
148
126
|
|
149
|
-
|
150
127
|
def test_get_headers_after_exception
|
151
|
-
Country.create(@country[:country])
|
152
|
-
assert_equal Country.http_response[
|
128
|
+
country = Country.create(@country[:country])
|
129
|
+
assert_equal Country.http_response.headers[:x_total].to_i, 1
|
153
130
|
assert_equal Country.http_response.code, 422
|
154
131
|
end
|
155
132
|
|
156
|
-
|
157
133
|
def test_remove_method
|
158
|
-
|
159
134
|
street = Street.find(:first)
|
160
135
|
assert !(street.respond_to?(ActiveResourceResponseBase.http_response_method))
|
161
136
|
city = Street.find(1).get('city')
|
@@ -165,9 +140,6 @@ class ActiveResourceResponseTest < Test::Unit::TestCase
|
|
165
140
|
assert country.respond_to?(Country.http_response_method)
|
166
141
|
region = Region.find(1)
|
167
142
|
assert region.respond_to?(ActiveResourceResponseBase.http_response_method)
|
168
|
-
|
169
|
-
|
170
143
|
end
|
171
144
|
|
172
|
-
|
173
145
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activeresource-response
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-04-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activeresource
|
16
|
-
requirement: &
|
16
|
+
requirement: &70124761807700 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70124761807700
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: test-unit
|
27
|
-
requirement: &
|
27
|
+
requirement: &70124761805760 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70124761805760
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &70124758023700 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70124758023700
|
47
47
|
description: ! 'This gem adds possibility to access http response object from result
|
48
48
|
of ActiveResource::Base find method '
|
49
49
|
email:
|
@@ -62,8 +62,8 @@ files:
|
|
62
62
|
- lib/active_resource_response.rb
|
63
63
|
- lib/active_resource_response/connection.rb
|
64
64
|
- lib/active_resource_response/custom_methods.rb
|
65
|
+
- lib/active_resource_response/http_mock.rb
|
65
66
|
- lib/active_resource_response/http_response.rb
|
66
|
-
- lib/active_resource_response/response.rb
|
67
67
|
- lib/active_resource_response/response_method.rb
|
68
68
|
- lib/active_resource_response/version.rb
|
69
69
|
- lib/activeresource-response.rb
|
@@ -104,3 +104,4 @@ test_files:
|
|
104
104
|
- test/fixtures/country.rb
|
105
105
|
- test/fixtures/region.rb
|
106
106
|
- test/fixtures/street.rb
|
107
|
+
has_rdoc:
|