arrest 0.0.69 → 0.0.70

Sign up to get free protection for your applications and to get access to all the features.
@@ -99,15 +99,18 @@ module Arrest
99
99
  end
100
100
 
101
101
  def body_root(response)
102
- if response == nil
103
- raise Errors::DocumentNotFoundError
104
- end
105
- all = JSON.parse(response)
106
- body = all["result"]
107
- if body == nil
108
- raise Errors::DocumentNotFoundError
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)
@@ -19,7 +19,6 @@ module Arrest
19
19
  @sort_hash = {}
20
20
  @query_params = query_params
21
21
 
22
- # FIXME (bk, at) : propagate scopes to instances as well
23
22
  define_filters
24
23
  define_scopes
25
24
  end
@@ -26,42 +26,48 @@ module Arrest
26
26
  end
27
27
 
28
28
  def get_one(context, sub, filter={})
29
- headers = nil
30
- response = self.connection().get do |req|
31
- req.url(sub, filter)
32
- headers = add_headers(context, req.headers)
33
- end
34
- rql = RequestLog.new(:get, "#{sub}#{hash_to_query filter}", nil, headers)
35
- rsl = ResponseLog.new(response.env[:status], response.body)
36
- Arrest::Source.call_logger.log(rql, rsl)
37
- if response.env[:status] == 401
38
- raise Errors::PermissionDeniedError.new(response.body)
39
- elsif response.env[:status] != 200
40
- raise Errors::DocumentNotFoundError
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
- headers = nil
52
- response = self.connection().get do |req|
53
- req.url(sub, filter)
54
- headers = add_headers(context, req.headers)
55
- end
56
- rql = RequestLog.new(:get, "#{sub}#{hash_to_query filter}", nil, headers)
57
- rsl = ResponseLog.new(response.env[:status], response.body)
58
- Arrest::Source.call_logger.log(rql, rsl)
59
- if response.env[:status] == 401
60
- raise Errors::PermissionDeniedError.new(response.body)
61
- elsif response.env[:status] != 200
62
- raise Errors::DocumentNotFoundError
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
- raise "To delete an object it must have an id" unless rest_resource.respond_to?(:id) && rest_resource.id != nil
83
- headers = nil
84
- response = self.connection().delete do |req|
85
- req.url(rest_resource.resource_location)
86
- headers = add_headers(context, req.headers)
87
- end
88
- rql = RequestLog.new(:delete, rest_resource.resource_location, nil, headers)
89
- rsl = ResponseLog.new(response.env[:status], response.body)
90
- Arrest::Source.call_logger.log(rql, rsl)
91
- if response.env[:status] != 200
92
- handle_errors(rest_resource, response.body, response.env[:status])
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
- headers = nil
120
- response = self.connection().put do |req|
121
- req.url(location)
122
- headers = add_headers(rest_resource.context, req.headers)
123
- req.body = body
124
- end
125
- rql = RequestLog.new(:put, location, body, headers)
126
- rsl = ResponseLog.new(response.env[:status], response.body)
127
- Arrest::Source.call_logger.log(rql, rsl)
128
- if response.env[:status] != 200
129
- handle_errors(rest_resource, response.body, response.env[:status])
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
- raise "new object must have setter for id" unless rest_resource.respond_to?(:id=)
145
- raise "new object must not have id" if rest_resource.respond_to?(:id) && rest_resource.id != nil
146
- hash = rest_resource.to_jhash
147
- hash.delete(:id)
148
- hash.delete('id')
149
-
150
- insert_nulls!(rest_resource,hash)
151
-
152
- body = JSON.generate(hash)
153
- headers = nil
154
- response = self.connection().post do |req|
155
- req.url rest_resource.resource_path
156
- headers = add_headers(context, req.headers)
157
- req.body = body
158
- end
159
- rql = RequestLog.new(:post, rest_resource.resource_path, body, headers)
160
- rsl = ResponseLog.new(response.env[:status], response.body)
161
- Arrest::Source.call_logger.log(rql, rsl)
162
- if (response.env[:status] == 201)
163
- location = response.env[:response_headers][:location]
164
- id = location.gsub(/^.*\//, '')
165
- rest_resource.id= id
166
- true
167
- else
168
- handle_errors(rest_resource, response.body, response.env[:status])
169
- false
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
@@ -1,3 +1,3 @@
1
1
  module Arrest
2
- VERSION = "0.0.69"
2
+ VERSION = "0.0.70"
3
3
  end
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.69
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-06-25 00:00:00.000000000Z
12
+ date: 2012-07-03 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
16
- requirement: &13273340 !ruby/object:Gem::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: *13273340
24
+ version_requirements: *2163241480
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: faraday
27
- requirement: &13272840 !ruby/object:Gem::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: *13272840
35
+ version_requirements: *2163239300
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activemodel
38
- requirement: &13272340 !ruby/object:Gem::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: *13272340
46
+ version_requirements: *2163238720
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &13271880 !ruby/object:Gem::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: *13271880
57
+ version_requirements: *2163237620
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rake
60
- requirement: &13271500 !ruby/object:Gem::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: *13271500
68
+ version_requirements: *2163236060
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rdoc
71
- requirement: &13271040 !ruby/object:Gem::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: *13271040
79
+ version_requirements: *2163235140
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rspec
82
- requirement: &13270540 !ruby/object:Gem::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: *13270540
90
+ version_requirements: *2163233880
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rr
93
- requirement: &13270120 !ruby/object:Gem::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: *13270120
101
+ version_requirements: *2163233300
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: simplecov
104
- requirement: &13269660 !ruby/object:Gem::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: *13269660
112
+ version_requirements: *2163231940
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: rack
115
- requirement: &13269240 !ruby/object:Gem::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: *13269240
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