arrest 0.0.69 → 0.0.70
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/lib/arrest/abstract_resource.rb +11 -8
- data/lib/arrest/helper/ordered_collection.rb +0 -1
- data/lib/arrest/http_source.rb +100 -81
- data/lib/arrest/version.rb +1 -1
- metadata +38 -23
@@ -99,15 +99,18 @@ module Arrest
|
|
99
99
|
end
|
100
100
|
|
101
101
|
def body_root(response)
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
102
|
+
::ActiveSupport::Notifications.instrument("parse.sgdb",
|
103
|
+
:length => response.length) do
|
104
|
+
if response == nil
|
105
|
+
raise Errors::DocumentNotFoundError
|
106
|
+
end
|
107
|
+
all = JSON.parse(response)
|
108
|
+
body = all["result"]
|
109
|
+
if body == nil
|
110
|
+
raise Errors::DocumentNotFoundError
|
111
|
+
end
|
112
|
+
body
|
109
113
|
end
|
110
|
-
body
|
111
114
|
end
|
112
115
|
|
113
116
|
def build(context, hash)
|
data/lib/arrest/http_source.rb
CHANGED
@@ -26,42 +26,48 @@ module Arrest
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def get_one(context, sub, filter={})
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
headers =
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
29
|
+
profiler_status_str = ""
|
30
|
+
::ActiveSupport::Notifications.instrument("http.sgdb",
|
31
|
+
:method => :get, :url => sub, :status => profiler_status_str) do
|
32
|
+
headers = nil
|
33
|
+
response = self.connection().get do |req|
|
34
|
+
req.url(sub, filter)
|
35
|
+
headers = add_headers(context, req.headers)
|
36
|
+
end
|
37
|
+
rql = RequestLog.new(:get, "#{sub}#{hash_to_query filter}", nil, headers)
|
38
|
+
rsl = ResponseLog.new(response.env[:status], response.body)
|
39
|
+
Arrest::Source.call_logger.log(rql, rsl)
|
40
|
+
if response.env[:status] == 401
|
41
|
+
raise Errors::PermissionDeniedError.new(response.body)
|
42
|
+
elsif response.env[:status] != 200
|
43
|
+
raise Errors::DocumentNotFoundError
|
44
|
+
end
|
45
|
+
profiler_status_str << response.env[:status].to_s
|
46
|
+
response.body
|
41
47
|
end
|
42
|
-
response.body
|
43
|
-
end
|
44
|
-
|
45
|
-
def get_many_other_ids(context, path)
|
46
|
-
get_one(context, path)
|
47
48
|
end
|
48
49
|
|
49
50
|
# FIXME (bk, at) : seems to be identical to get_one - prepare to refactor
|
50
51
|
def get_many(context, sub, filter={})
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
headers =
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
52
|
+
profiler_status_str = ""
|
53
|
+
::ActiveSupport::Notifications.instrument("http.sgdb",
|
54
|
+
:method => :get, :url => sub, :status => profiler_status_str) do
|
55
|
+
headers = nil
|
56
|
+
response = self.connection().get do |req|
|
57
|
+
req.url(sub, filter)
|
58
|
+
headers = add_headers(context, req.headers)
|
59
|
+
end
|
60
|
+
rql = RequestLog.new(:get, "#{sub}#{hash_to_query filter}", nil, headers)
|
61
|
+
rsl = ResponseLog.new(response.env[:status], response.body)
|
62
|
+
Arrest::Source.call_logger.log(rql, rsl)
|
63
|
+
if response.env[:status] == 401
|
64
|
+
raise Errors::PermissionDeniedError.new(response.body)
|
65
|
+
elsif response.env[:status] != 200
|
66
|
+
raise Errors::DocumentNotFoundError
|
67
|
+
end
|
68
|
+
profiler_status_str << response.env[:status].to_s
|
69
|
+
response.body
|
63
70
|
end
|
64
|
-
response.body
|
65
71
|
end
|
66
72
|
|
67
73
|
|
@@ -79,19 +85,24 @@ module Arrest
|
|
79
85
|
end
|
80
86
|
|
81
87
|
def delete(context, rest_resource)
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
headers =
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
88
|
+
profiler_status_str = ""
|
89
|
+
::ActiveSupport::Notifications.instrument("http.sgdb",
|
90
|
+
:method => :delete, :url => rest_resource.resource_location, :status => profiler_status_str) do
|
91
|
+
raise "To delete an object it must have an id" unless rest_resource.respond_to?(:id) && rest_resource.id != nil
|
92
|
+
headers = nil
|
93
|
+
response = self.connection().delete do |req|
|
94
|
+
req.url(rest_resource.resource_location)
|
95
|
+
headers = add_headers(context, req.headers)
|
96
|
+
end
|
97
|
+
rql = RequestLog.new(:delete, rest_resource.resource_location, nil, headers)
|
98
|
+
rsl = ResponseLog.new(response.env[:status], response.body)
|
99
|
+
Arrest::Source.call_logger.log(rql, rsl)
|
100
|
+
if response.env[:status] != 200
|
101
|
+
handle_errors(rest_resource, response.body, response.env[:status])
|
102
|
+
end
|
103
|
+
profiler_status_str << response.env[:status].to_s
|
104
|
+
response.env[:status] == 200
|
93
105
|
end
|
94
|
-
response.env[:status] == 200
|
95
106
|
end
|
96
107
|
|
97
108
|
def put_sub_resource(rest_resource, sub_url, ids)
|
@@ -116,19 +127,24 @@ module Arrest
|
|
116
127
|
|
117
128
|
|
118
129
|
def internal_put(rest_resource, location, body)
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
headers =
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
+
profiler_status_str = ""
|
131
|
+
::ActiveSupport::Notifications.instrument("http.sgdb",
|
132
|
+
:method => :delete, :url => rest_resource.resource_location, :status => profiler_status_str) do
|
133
|
+
headers = nil
|
134
|
+
response = self.connection().put do |req|
|
135
|
+
req.url(location)
|
136
|
+
headers = add_headers(rest_resource.context, req.headers)
|
137
|
+
req.body = body
|
138
|
+
end
|
139
|
+
rql = RequestLog.new(:put, location, body, headers)
|
140
|
+
rsl = ResponseLog.new(response.env[:status], response.body)
|
141
|
+
Arrest::Source.call_logger.log(rql, rsl)
|
142
|
+
if response.env[:status] != 200
|
143
|
+
handle_errors(rest_resource, response.body, response.env[:status])
|
144
|
+
end
|
145
|
+
profiler_status_str << response.env[:status].to_s
|
146
|
+
response.env[:status] == 200
|
130
147
|
end
|
131
|
-
response.env[:status] == 200
|
132
148
|
end
|
133
149
|
|
134
150
|
def insert_nulls!(rest_resource, hash)
|
@@ -141,34 +157,37 @@ module Arrest
|
|
141
157
|
end
|
142
158
|
|
143
159
|
def post(context, rest_resource)
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
headers =
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
160
|
+
profiler_status_str = ""
|
161
|
+
::ActiveSupport::Notifications.instrument("http.sgdb",
|
162
|
+
:method => :post, :url => rest_resource.resource_path, :status => profiler_status_str) do
|
163
|
+
raise "new object must have setter for id" unless rest_resource.respond_to?(:id=)
|
164
|
+
raise "new object must not have id" if rest_resource.respond_to?(:id) && rest_resource.id != nil
|
165
|
+
hash = rest_resource.to_jhash
|
166
|
+
hash.delete(:id)
|
167
|
+
hash.delete('id')
|
168
|
+
|
169
|
+
insert_nulls!(rest_resource,hash)
|
170
|
+
|
171
|
+
body = JSON.generate(hash)
|
172
|
+
headers = nil
|
173
|
+
response = self.connection().post do |req|
|
174
|
+
req.url rest_resource.resource_path
|
175
|
+
headers = add_headers(context, req.headers)
|
176
|
+
req.body = body
|
177
|
+
end
|
178
|
+
rql = RequestLog.new(:post, rest_resource.resource_path, body, headers)
|
179
|
+
rsl = ResponseLog.new(response.env[:status], response.body)
|
180
|
+
Arrest::Source.call_logger.log(rql, rsl)
|
181
|
+
if (response.env[:status] == 201)
|
182
|
+
location = response.env[:response_headers][:location]
|
183
|
+
id = location.gsub(/^.*\//, '')
|
184
|
+
rest_resource.id= id
|
185
|
+
true
|
186
|
+
else
|
187
|
+
handle_errors(rest_resource, response.body, response.env[:status])
|
188
|
+
false
|
189
|
+
end
|
170
190
|
end
|
171
|
-
|
172
191
|
end
|
173
192
|
|
174
193
|
def connection
|
data/lib/arrest/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arrest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.70
|
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: 2012-
|
12
|
+
date: 2012-07-03 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
16
|
-
requirement: &
|
16
|
+
requirement: &2163241480 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2163241480
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: faraday
|
27
|
-
requirement: &
|
27
|
+
requirement: &2163239300 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.7.5
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2163239300
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: activemodel
|
38
|
-
requirement: &
|
38
|
+
requirement: &2163238720 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '3'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2163238720
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
|
-
requirement: &
|
49
|
+
requirement: &2163237620 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.0.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2163237620
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rake
|
60
|
-
requirement: &
|
60
|
+
requirement: &2163236060 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2163236060
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rdoc
|
71
|
-
requirement: &
|
71
|
+
requirement: &2163235140 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2163235140
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rspec
|
82
|
-
requirement: &
|
82
|
+
requirement: &2163233880 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '2'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *2163233880
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: rr
|
93
|
-
requirement: &
|
93
|
+
requirement: &2163233300 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *2163233300
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: simplecov
|
104
|
-
requirement: &
|
104
|
+
requirement: &2163231940 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *2163231940
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: rack
|
115
|
-
requirement: &
|
115
|
+
requirement: &2163231480 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ! '>='
|
@@ -120,7 +120,7 @@ dependencies:
|
|
120
120
|
version: '0'
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *2163231480
|
124
124
|
description: Consume a rest API in a AR like fashion
|
125
125
|
email:
|
126
126
|
- axel.tetzlaff@fortytools.com
|
@@ -185,16 +185,31 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
185
185
|
- - ! '>='
|
186
186
|
- !ruby/object:Gem::Version
|
187
187
|
version: '0'
|
188
|
+
segments:
|
189
|
+
- 0
|
190
|
+
hash: -28150964762661169
|
188
191
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
189
192
|
none: false
|
190
193
|
requirements:
|
191
194
|
- - ! '>='
|
192
195
|
- !ruby/object:Gem::Version
|
193
196
|
version: '0'
|
197
|
+
segments:
|
198
|
+
- 0
|
199
|
+
hash: -28150964762661169
|
194
200
|
requirements: []
|
195
201
|
rubyforge_project: arrest
|
196
202
|
rubygems_version: 1.8.10
|
197
203
|
signing_key:
|
198
204
|
specification_version: 3
|
199
205
|
summary: Another ruby rest client
|
200
|
-
test_files:
|
206
|
+
test_files:
|
207
|
+
- spec/arrest_spec.rb
|
208
|
+
- spec/spec_helper.rb
|
209
|
+
- spec/support/models/user.rb
|
210
|
+
- test/context.rb
|
211
|
+
- test/has_attributed.rb
|
212
|
+
- test/models.rb
|
213
|
+
- test/nested_resource.rb
|
214
|
+
- test/unit.rb
|
215
|
+
- test/validations.rb
|