naranya_ecm-sdk 0.0.59 → 0.0.61
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/lib/aasm/persistence/{rest_persistence.rb → ncontent_rest_persistence.rb} +55 -63
- data/lib/naranya_ecm-sdk/version.rb +1 -1
- data/lib/naranya_ecm/models/content.rb +10 -6
- data/lib/naranya_ecm/models/content_version.rb +8 -8
- data/lib/naranya_ecm/models/media_resource.rb +12 -0
- data/lib/naranya_ecm/rest/model.rb +4 -0
- data/lib/naranya_ecm/rest/notifications.rb +38 -0
- data/lib/naranya_ecm/rest/persistence.rb +34 -24
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1181f4986de39fadb4461af21904a7e6a7909e0f
|
|
4
|
+
data.tar.gz: a0b0b0ecafeb47e0d5107c477f3c937ae7274998
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2479a6d36d005d8e95861c794da10b8ac50c1be35b14e48362bad62a833daf5736c33cf140bb9f86d24b1ba9e8ff2e6c4549ff5601478210b05bc68b3253a51a
|
|
7
|
+
data.tar.gz: de993f6677215f8fdc0b75631723892fb33c1db89f24adaa8b730bafc3a3a85c1c660fe98304eb17d56f400cb4bd659e56f77faec81f04f6ac6f7e4676fe0a74
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module AASM
|
|
2
2
|
module Persistence
|
|
3
|
-
module
|
|
3
|
+
module NContentRestPersistence
|
|
4
4
|
# This method:
|
|
5
5
|
#
|
|
6
6
|
# * extends the model with ClassMethods
|
|
@@ -28,8 +28,8 @@ module AASM
|
|
|
28
28
|
#
|
|
29
29
|
def self.included(base)
|
|
30
30
|
base.send(:include, AASM::Persistence::Base)
|
|
31
|
-
base.extend AASM::Persistence::
|
|
32
|
-
base.send(:include, AASM::Persistence::
|
|
31
|
+
base.extend AASM::Persistence::NContentRestPersistence::ClassMethods
|
|
32
|
+
base.send(:include, AASM::Persistence::NContentRestPersistence::InstanceMethods)
|
|
33
33
|
|
|
34
34
|
base.before_validation(:aasm_ensure_initial_state, :on => :create)
|
|
35
35
|
|
|
@@ -70,55 +70,23 @@ module AASM
|
|
|
70
70
|
|
|
71
71
|
module InstanceMethods
|
|
72
72
|
|
|
73
|
-
#
|
|
74
|
-
#
|
|
75
|
-
#
|
|
76
|
-
#
|
|
77
|
-
#
|
|
78
|
-
#
|
|
79
|
-
#
|
|
80
|
-
#
|
|
81
|
-
#
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
# return false
|
|
89
|
-
# end
|
|
90
|
-
|
|
91
|
-
# true
|
|
92
|
-
# end
|
|
93
|
-
|
|
94
|
-
# # Writes <tt>state</tt> to the state column, but does not persist it to the database
|
|
95
|
-
# #
|
|
96
|
-
# # foo = Foo.find(1)
|
|
97
|
-
# # foo.aasm.current_state # => :opened
|
|
98
|
-
# # foo.close
|
|
99
|
-
# # foo.aasm.current_state # => :closed
|
|
100
|
-
# # Foo.find(1).aasm.current_state # => :opened
|
|
101
|
-
# # foo.save
|
|
102
|
-
# # foo.aasm.current_state # => :closed
|
|
103
|
-
# # Foo.find(1).aasm.current_state # => :closed
|
|
104
|
-
# #
|
|
105
|
-
# # NOTE: intended to be called from an event
|
|
106
|
-
# def aasm_write_state_without_persistence(state)
|
|
107
|
-
# self.off_band_changes["#{self.class.aasm.attribute_name}_event"] = transition.event
|
|
108
|
-
# end
|
|
109
|
-
|
|
110
|
-
private
|
|
111
|
-
|
|
112
|
-
def aasm_ensure_initial_state
|
|
113
|
-
send("#{self.class.aasm.attribute_name}=", aasm.enter_initial_state.to_s) \
|
|
114
|
-
if send(self.class.aasm.attribute_name).blank?
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
def aasm_fire_event(name, options, *args, &block)
|
|
118
|
-
local_success = super
|
|
119
|
-
remote_success = if local_success
|
|
73
|
+
# Writes <tt>state</tt> to the state column and persists it to the server
|
|
74
|
+
#
|
|
75
|
+
# foo = Foo.find(1)
|
|
76
|
+
# foo.aasm.current_state # => :opened
|
|
77
|
+
# foo.close!
|
|
78
|
+
# foo.aasm.current_state # => :closed
|
|
79
|
+
# Foo.find(1).aasm.current_state # => :closed
|
|
80
|
+
#
|
|
81
|
+
# NOTE: intended to be called from an event
|
|
82
|
+
def aasm_write_state(new_state)
|
|
83
|
+
|
|
84
|
+
previous_state = self.public_send self.class.aasm.attribute_name
|
|
85
|
+
self.public_send "#{self.class.aasm.attribute_name}=", new_state
|
|
86
|
+
|
|
87
|
+
success = begin
|
|
120
88
|
data = {
|
|
121
|
-
name:
|
|
89
|
+
name: aasm.current_event.to_s.tr('!',''),
|
|
122
90
|
target_type: self.class.name.demodulize,
|
|
123
91
|
target_id: self.id
|
|
124
92
|
}
|
|
@@ -134,25 +102,49 @@ module AASM
|
|
|
134
102
|
req.body = ActiveSupport::JSON.encode(state_event: data)
|
|
135
103
|
end
|
|
136
104
|
|
|
137
|
-
state_attribute = self.class.aasm.attribute_name
|
|
138
|
-
state_before_reload = self.send(state_attribute)
|
|
139
|
-
|
|
140
105
|
reload
|
|
141
|
-
state_after_reload = self.send(state_attribute)
|
|
142
106
|
|
|
143
|
-
|
|
144
|
-
|
|
107
|
+
# Return true if the actual state is the same as the expected state:
|
|
108
|
+
self.public_send(self.class.aasm.attribute_name) == new_state.to_s
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
unless success
|
|
112
|
+
self.public_send "#{self.class.aasm.attribute_name}=", previous_state
|
|
113
|
+
return false
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
true
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def aasm_write_state_without_persistence(new_state)
|
|
120
|
+
self.public_send(self.class.aasm.attribute_name) == new_state.to_s
|
|
121
|
+
true
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
private
|
|
145
125
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
126
|
+
def aasm_fire_event(name, options, *args, &block)
|
|
127
|
+
success = super
|
|
128
|
+
|
|
129
|
+
if success
|
|
130
|
+
if options[:persist]
|
|
131
|
+
event = self.class.aasm.state_machine.events[name]
|
|
132
|
+
event.fire_callbacks(:after_commit, self, *args)
|
|
133
|
+
else
|
|
134
|
+
# TODO: Implement a "state change queue" to make .save send the state changes
|
|
135
|
+
# to the server when no bang (options[:persist] == false) was given...
|
|
136
|
+
end
|
|
150
137
|
end
|
|
151
138
|
|
|
152
|
-
|
|
139
|
+
success
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def aasm_ensure_initial_state
|
|
143
|
+
send("#{self.class.aasm.attribute_name}=", aasm.enter_initial_state.to_s) \
|
|
144
|
+
if send(self.class.aasm.attribute_name).blank?
|
|
153
145
|
end
|
|
154
146
|
|
|
155
|
-
end
|
|
147
|
+
end
|
|
156
148
|
|
|
157
149
|
end
|
|
158
150
|
end
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
require 'aasm'
|
|
2
|
+
require 'aasm/persistence/base'
|
|
3
|
+
require 'aasm/persistence/ncontent_rest_persistence'
|
|
4
|
+
|
|
1
5
|
module NaranyaEcm
|
|
2
6
|
|
|
3
7
|
##
|
|
@@ -164,7 +168,7 @@ module NaranyaEcm
|
|
|
164
168
|
###############################################################
|
|
165
169
|
# StateMachine:
|
|
166
170
|
include AASM
|
|
167
|
-
include AASM::Persistence::
|
|
171
|
+
include AASM::Persistence::NContentRestPersistence
|
|
168
172
|
|
|
169
173
|
##
|
|
170
174
|
# :method: request_an_acceptance_review
|
|
@@ -248,29 +252,29 @@ module NaranyaEcm
|
|
|
248
252
|
#########################################
|
|
249
253
|
# Eventos:
|
|
250
254
|
|
|
251
|
-
event :request_an_acceptance_review do
|
|
255
|
+
event :request_an_acceptance_review, before: :start_notify_state_change!, after_commit: :finish_notify_state_change! do
|
|
252
256
|
# Iniciar la transición de :draft a :awaiting_acceptance,
|
|
253
257
|
transitions from: :draft, to: :awaiting_acceptance, guard: :validatable_lifecycle?
|
|
254
258
|
end
|
|
255
259
|
|
|
256
|
-
event :accept do
|
|
260
|
+
event :accept, before: :start_notify_state_change!, after_commit: :finish_notify_state_change! do
|
|
257
261
|
# Iniciar la transición de :awaiting_acceptance a :accepted:
|
|
258
262
|
transitions from: :awaiting_acceptance, to: :accepted
|
|
259
263
|
end
|
|
260
264
|
|
|
261
|
-
event :reject do
|
|
265
|
+
event :reject, before: :start_notify_state_change!, after_commit: :finish_notify_state_change! do
|
|
262
266
|
# Iniciar la transición de :awaiting_acceptance a :rejected:
|
|
263
267
|
transitions from: :awaiting_acceptance, to: :rejected
|
|
264
268
|
end
|
|
265
269
|
|
|
266
|
-
event :publish do
|
|
270
|
+
event :publish, before: :start_notify_state_change!, after_commit: :finish_notify_state_change! do
|
|
267
271
|
# Iniciar la transición de :draft a :published,
|
|
268
272
|
# si el lifecycle es sencillo:
|
|
269
273
|
transitions from: :draft, to: :published, guard: :simple_lifecycle?
|
|
270
274
|
transitions from: :validated, to: :published, guard: :validatable_lifecycle?
|
|
271
275
|
end
|
|
272
276
|
|
|
273
|
-
event :deactivate do
|
|
277
|
+
event :deactivate, before: :start_notify_state_change!, after_commit: :finish_notify_state_change! do
|
|
274
278
|
# Iniciar la transición de :published a :deactivated:
|
|
275
279
|
transitions from: :published, to: :deactivated
|
|
276
280
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require 'aasm'
|
|
2
2
|
require 'aasm/persistence/base'
|
|
3
|
-
require 'aasm/persistence/
|
|
3
|
+
require 'aasm/persistence/ncontent_rest_persistence'
|
|
4
4
|
|
|
5
5
|
module NaranyaEcm
|
|
6
6
|
class ContentVersion
|
|
@@ -57,7 +57,7 @@ module NaranyaEcm
|
|
|
57
57
|
###############################################################
|
|
58
58
|
# StateMachine:
|
|
59
59
|
include AASM
|
|
60
|
-
include AASM::Persistence::
|
|
60
|
+
include AASM::Persistence::NContentRestPersistence
|
|
61
61
|
|
|
62
62
|
aasm column: :lifecycle_state do
|
|
63
63
|
|
|
@@ -72,22 +72,22 @@ module NaranyaEcm
|
|
|
72
72
|
#########################################
|
|
73
73
|
# Eventos:
|
|
74
74
|
|
|
75
|
-
event :request_an_acceptance_review do
|
|
75
|
+
event :request_an_acceptance_review, before: :start_notify_state_change!, after_commit: :finish_notify_state_change! do
|
|
76
76
|
# Iniciar la transición de :draft a :awaiting_acceptance,
|
|
77
77
|
transitions from: :draft, to: :awaiting_acceptance, guard: :validatable_lifecycle?
|
|
78
78
|
end
|
|
79
79
|
|
|
80
|
-
event :accept do
|
|
80
|
+
event :accept, before: :start_notify_state_change!, after_commit: :finish_notify_state_change! do
|
|
81
81
|
# Iniciar la transición de :awaiting_acceptance a :accepted:
|
|
82
82
|
transitions from: :awaiting_acceptance, to: :accepted
|
|
83
83
|
end
|
|
84
84
|
|
|
85
|
-
event :reject do
|
|
85
|
+
event :reject, before: :start_notify_state_change!, after_commit: :finish_notify_state_change! do
|
|
86
86
|
# Iniciar la transición de :awaiting_acceptance a :rejected:
|
|
87
87
|
transitions from: :awaiting_acceptance, to: :rejected
|
|
88
88
|
end
|
|
89
89
|
|
|
90
|
-
event :publish do
|
|
90
|
+
event :publish, before: :start_notify_state_change!, after_commit: :finish_notify_state_change! do
|
|
91
91
|
# Iniciar la transición de :draft a :published,
|
|
92
92
|
# si el lifecycle es sencillo:
|
|
93
93
|
transitions from: :draft, to: :published, guard: :simple_lifecycle?
|
|
@@ -95,12 +95,12 @@ module NaranyaEcm
|
|
|
95
95
|
transitions from: :deactivated, to: :published
|
|
96
96
|
end
|
|
97
97
|
|
|
98
|
-
event :supersede do
|
|
98
|
+
event :supersede, before: :start_notify_state_change!, after_commit: :finish_notify_state_change! do
|
|
99
99
|
# Iniciar la transición de :published a :superseded:
|
|
100
100
|
transitions from: :published, to: :superseded
|
|
101
101
|
end
|
|
102
102
|
|
|
103
|
-
event :deactivate do
|
|
103
|
+
event :deactivate, before: :start_notify_state_change!, after_commit: :finish_notify_state_change! do
|
|
104
104
|
# Iniciar la transición de :published a :deactivated:
|
|
105
105
|
transitions from: :published, to: :deactivated
|
|
106
106
|
end
|
|
@@ -33,6 +33,18 @@ module NaranyaEcm
|
|
|
33
33
|
has_many :media_resources, class_name: :MediaResource, inverse_of: :media_resource
|
|
34
34
|
|
|
35
35
|
#belongs_to :parent_document
|
|
36
|
+
field :parent_document_id, type: String
|
|
37
|
+
field :parent_document_type, type: String
|
|
38
|
+
def as_notification_payload
|
|
39
|
+
instance_payload = super.merge(roles: self.roles)
|
|
40
|
+
|
|
41
|
+
if self.parent_document_id.present? && self.parent_document_type.present?
|
|
42
|
+
instance_payload[:parent_id] = self.parent_document_id
|
|
43
|
+
instance_payload[:parent_class] = "NaranyaEcm::#{self.parent_document_type}"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
instance_payload
|
|
47
|
+
end
|
|
36
48
|
|
|
37
49
|
# Returns true if the Media Resource is private
|
|
38
50
|
def private?
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
require 'active_model'
|
|
2
2
|
|
|
3
|
+
require 'naranya_ecm/rest/notifications'
|
|
4
|
+
|
|
3
5
|
module NaranyaEcm::Rest
|
|
4
6
|
module Model
|
|
5
7
|
|
|
@@ -62,6 +64,8 @@ module NaranyaEcm::Rest
|
|
|
62
64
|
# Ignore the server resource's url attribute:
|
|
63
65
|
attr_accessor :url
|
|
64
66
|
|
|
67
|
+
include NaranyaEcm::Rest::Notifications
|
|
68
|
+
|
|
65
69
|
include NaranyaEcm::Rest::Associations
|
|
66
70
|
include NaranyaEcm::Rest::Persistence
|
|
67
71
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require 'active_support/notifications'
|
|
2
|
+
|
|
3
|
+
module NaranyaEcm
|
|
4
|
+
module Rest
|
|
5
|
+
module Notifications
|
|
6
|
+
extend ActiveSupport::Concern
|
|
7
|
+
|
|
8
|
+
module ClassMethods
|
|
9
|
+
def as_notification_payload
|
|
10
|
+
{ class: self.name }
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def as_notification_payload
|
|
15
|
+
instance_payload = self.class.as_notification_payload.merge({ id: self.id })
|
|
16
|
+
|
|
17
|
+
# Include belongs_to references:
|
|
18
|
+
self.class.reflect_on_all_associations.values.select do |association|
|
|
19
|
+
association.class.name.demodulize == 'BelongsTo'
|
|
20
|
+
end.map(&:foreign_key).each do |reference_name|
|
|
21
|
+
instance_payload[reference_name] = self.public_send reference_name
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
instance_payload
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def start_notify_state_change!
|
|
28
|
+
ActiveSupport::Notifications.instrumenter
|
|
29
|
+
.start("ncontent_sdk.#{aasm.current_event.to_s.tr('!', '').underscore}", self.as_notification_payload)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def finish_notify_state_change!
|
|
33
|
+
ActiveSupport::Notifications.instrumenter
|
|
34
|
+
.finish("ncontent_sdk.#{aasm.current_event.to_s.tr('!', '').underscore}", self.as_notification_payload)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -56,7 +56,10 @@ module NaranyaEcm::Rest
|
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
def delete(id, options={})
|
|
59
|
-
|
|
59
|
+
ActiveSupport::Notifications.instrument('ncontent_sdk.destroy') do |notification_payload|
|
|
60
|
+
response = NContent::SDK::RESTClient.delete("#{self.path}/#{id}.json")
|
|
61
|
+
notification_payload.merge!({ id: id }.merge(self.as_notification_payload))
|
|
62
|
+
end
|
|
60
63
|
true
|
|
61
64
|
end
|
|
62
65
|
|
|
@@ -272,25 +275,29 @@ module NaranyaEcm::Rest
|
|
|
272
275
|
create_path = "#{self.class.path}.json"
|
|
273
276
|
|
|
274
277
|
begin
|
|
278
|
+
ActiveSupport::Notifications.instrument('ncontent_sdk.create') do |notification_payload|
|
|
279
|
+
response = NContent::SDK::RESTClient.post create_path do |req|
|
|
280
|
+
req.headers[:content_type] = 'application/json'
|
|
281
|
+
|
|
282
|
+
# Obtener solo los cambios con respecto al objeto recién
|
|
283
|
+
# inicializado:
|
|
284
|
+
attributes_to_post = changes.inject({}) do |attr_hash, attribute_change|
|
|
285
|
+
attribute_name, attribute_change_values = attribute_change
|
|
286
|
+
previous_attribute_value, new_attribute_value = attribute_change_values
|
|
287
|
+
attr_hash[attribute_name] = new_attribute_value
|
|
288
|
+
attr_hash
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
req.body = ActiveSupport::JSON.encode(
|
|
292
|
+
self.class.name.demodulize.underscore => attributes_to_post
|
|
293
|
+
)
|
|
294
|
+
end
|
|
275
295
|
|
|
276
|
-
|
|
277
|
-
req.headers[:content_type] = 'application/json'
|
|
296
|
+
send :_load_from_fetched_attributes!, response.body
|
|
278
297
|
|
|
279
|
-
|
|
280
|
-
# inicializado:
|
|
281
|
-
attributes_to_post = changes.inject({}) do |attr_hash, attribute_change|
|
|
282
|
-
attribute_name, attribute_change_values = attribute_change
|
|
283
|
-
previous_attribute_value, new_attribute_value = attribute_change_values
|
|
284
|
-
attr_hash[attribute_name] = new_attribute_value
|
|
285
|
-
attr_hash
|
|
286
|
-
end
|
|
298
|
+
notification_payload.merge! self.as_notification_payload
|
|
287
299
|
|
|
288
|
-
req.body = ActiveSupport::JSON.encode(
|
|
289
|
-
self.class.name.demodulize.underscore => attributes_to_post
|
|
290
|
-
)
|
|
291
300
|
end
|
|
292
|
-
|
|
293
|
-
send :_load_from_fetched_attributes!, response.body
|
|
294
301
|
true
|
|
295
302
|
rescue UnprocessableEntity => e
|
|
296
303
|
self.load_server_errors(e.response.body)
|
|
@@ -320,15 +327,18 @@ module NaranyaEcm::Rest
|
|
|
320
327
|
update_path = "#{self.path}.json"
|
|
321
328
|
|
|
322
329
|
begin
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
330
|
+
ActiveSupport::Notifications.instrument('ncontent_sdk.update') do |notification_payload|
|
|
331
|
+
response = NContent::SDK::RESTClient.put update_path do |req|
|
|
332
|
+
req.headers[:content_type] = 'application/json'
|
|
333
|
+
req.body = ActiveSupport::JSON.encode(
|
|
334
|
+
self.class.name.demodulize.underscore => attributes_to_save
|
|
335
|
+
)
|
|
336
|
+
end
|
|
329
337
|
|
|
330
|
-
|
|
331
|
-
|
|
338
|
+
self.reload!
|
|
339
|
+
off_band_changes.clear if off_band_changes.present?
|
|
340
|
+
notification_payload.merge!(self.as_notification_payload)
|
|
341
|
+
end
|
|
332
342
|
true
|
|
333
343
|
rescue UnprocessableEntity
|
|
334
344
|
self.load_server_errors(response.body)
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: naranya_ecm-sdk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.61
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Roberto Quintanilla
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-06-
|
|
11
|
+
date: 2015-06-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -209,7 +209,7 @@ files:
|
|
|
209
209
|
- dev/search.rb
|
|
210
210
|
- dev/thread-safety-tests.rb
|
|
211
211
|
- doc/media_processing.md
|
|
212
|
-
- lib/aasm/persistence/
|
|
212
|
+
- lib/aasm/persistence/ncontent_rest_persistence.rb
|
|
213
213
|
- lib/naranya_ecm-sdk.rb
|
|
214
214
|
- lib/naranya_ecm-sdk/version.rb
|
|
215
215
|
- lib/naranya_ecm/behaviors/localizable.rb
|
|
@@ -228,6 +228,7 @@ files:
|
|
|
228
228
|
- lib/naranya_ecm/rest/errors.rb
|
|
229
229
|
- lib/naranya_ecm/rest/finder_methods.rb
|
|
230
230
|
- lib/naranya_ecm/rest/model.rb
|
|
231
|
+
- lib/naranya_ecm/rest/notifications.rb
|
|
231
232
|
- lib/naranya_ecm/rest/persistence.rb
|
|
232
233
|
- lib/naranya_ecm/rest/relation.rb
|
|
233
234
|
- lib/naranya_ecm/search/hit.rb
|