odata 0.6.6 → 0.6.7
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.md +6 -0
- data/lib/odata/entity.rb +7 -0
- data/lib/odata/entity_set.rb +23 -4
- data/lib/odata/service.rb +8 -0
- data/lib/odata/version.rb +1 -1
- data/spec/odata/entity_set_spec.rb +10 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c8d4272413289a30d35a4b09f817f3d7686c3dc
|
4
|
+
data.tar.gz: 0d07830dbda9b044c740ec0cd3d879cbe7844276
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e3308fd2fdc7ad523dc2b6f64015cee6467d8d00cc26dbf759b23c0aa68b28c918b87846944cb084a2b4bc09368051a1c2e1d24093027b3d0972068b2a97ca4
|
7
|
+
data.tar.gz: 7177e7a0995e6323cf2e0a929b8a3e9547552f8c8cf01c1e6d94eb5b4b718a3c98598b8dd1bae34518d4ecca2e60904862aa1a6eaccf118e4b63482b198794ba
|
data/CHANGELOG.md
CHANGED
data/lib/odata/entity.rb
CHANGED
@@ -13,6 +13,8 @@ module OData
|
|
13
13
|
attr_reader :service_name
|
14
14
|
# Links to other OData entitites
|
15
15
|
attr_reader :links
|
16
|
+
# List of errors on entity
|
17
|
+
attr_reader :errors
|
16
18
|
|
17
19
|
# Initializes a bare Entity
|
18
20
|
# @param options [Hash]
|
@@ -21,6 +23,7 @@ module OData
|
|
21
23
|
@namespace = options[:namespace]
|
22
24
|
@service_name = options[:service_name]
|
23
25
|
@links = options[:links] || {}
|
26
|
+
@errors = []
|
24
27
|
end
|
25
28
|
|
26
29
|
# Returns name of Entity from Service specified type.
|
@@ -124,6 +127,10 @@ module OData
|
|
124
127
|
self[primary_key].nil?
|
125
128
|
end
|
126
129
|
|
130
|
+
def any_errors?
|
131
|
+
!errors.empty?
|
132
|
+
end
|
133
|
+
|
127
134
|
private
|
128
135
|
|
129
136
|
def instantiate_property(property_name, value)
|
data/lib/odata/entity_set.rb
CHANGED
@@ -105,9 +105,15 @@ module OData
|
|
105
105
|
url_chunk, options = setup_entity_post_request(entity)
|
106
106
|
result = execute_entity_post_request(options, url_chunk)
|
107
107
|
if entity.is_new?
|
108
|
-
doc = ::Nokogiri::XML(result).remove_namespaces!
|
109
|
-
|
108
|
+
doc = ::Nokogiri::XML(result.body).remove_namespaces!
|
109
|
+
primary_key_node = doc.xpath("//content/properties/#{entity.primary_key}").first
|
110
|
+
entity[entity.primary_key] = primary_key_node.content unless primary_key_node.nil?
|
110
111
|
end
|
112
|
+
|
113
|
+
unless result.code.to_s =~ /^2[0-9][0-9]$/
|
114
|
+
entity.errors << ['could not commit entity']
|
115
|
+
end
|
116
|
+
|
111
117
|
entity
|
112
118
|
end
|
113
119
|
|
@@ -143,9 +149,22 @@ module OData
|
|
143
149
|
def execute_entity_post_request(options, url_chunk)
|
144
150
|
result = service.execute(url_chunk, options)
|
145
151
|
unless result.code.to_s =~ /^2[0-9][0-9]$/
|
146
|
-
|
152
|
+
service.logger.debug <<-EOS
|
153
|
+
[ODATA: #{service_name}]
|
154
|
+
An error was encountered committing your entity:
|
155
|
+
|
156
|
+
POSTed URL:
|
157
|
+
#{url_chunk}
|
158
|
+
|
159
|
+
POSTed Entity:
|
160
|
+
#{options[:body]}
|
161
|
+
|
162
|
+
Result Body:
|
163
|
+
#{result.body}
|
164
|
+
EOS
|
165
|
+
service.logger.info "[ODATA: #{service_name}] Unable to commit data to #{url_chunk}"
|
147
166
|
end
|
148
|
-
result
|
167
|
+
result
|
149
168
|
end
|
150
169
|
|
151
170
|
def setup_entity_post_request(entity)
|
data/lib/odata/service.rb
CHANGED
@@ -218,6 +218,14 @@ module OData
|
|
218
218
|
properties_to_return
|
219
219
|
end
|
220
220
|
|
221
|
+
def logger
|
222
|
+
@logger ||= defined?(Rails) ? Rails.logger : Logger.new(STDOUT)
|
223
|
+
end
|
224
|
+
|
225
|
+
def logger=(custom_logger)
|
226
|
+
@logger = custom_logger
|
227
|
+
end
|
228
|
+
|
221
229
|
private
|
222
230
|
|
223
231
|
def default_options
|
data/lib/odata/version.rb
CHANGED
@@ -95,7 +95,11 @@ describe OData::EntitySet, vcr: {cassette_name: 'entity_set_specs'} do
|
|
95
95
|
} }
|
96
96
|
|
97
97
|
describe 'with an existing entity', vcr: {cassette_name: 'entity_set_specs/existing_entry'} do
|
98
|
-
|
98
|
+
before(:each) do
|
99
|
+
subject << existing_entity
|
100
|
+
end
|
101
|
+
|
102
|
+
it { expect(existing_entity.any_errors?).to eq(false) }
|
99
103
|
end
|
100
104
|
|
101
105
|
describe 'with a new entity', vcr: {cassette_name: 'entity_set_specs/new_entry'} do
|
@@ -108,7 +112,11 @@ describe OData::EntitySet, vcr: {cassette_name: 'entity_set_specs'} do
|
|
108
112
|
end
|
109
113
|
|
110
114
|
describe 'with a bad entity', vcr: {cassette_name: 'entity_set_specs/bad_entry'} do
|
111
|
-
|
115
|
+
before(:each) do
|
116
|
+
subject << bad_entity
|
117
|
+
end
|
118
|
+
|
119
|
+
it { expect(bad_entity.any_errors?).to eq(true) }
|
112
120
|
end
|
113
121
|
end
|
114
122
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: odata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Thompson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|