naranya_ecm-sdk 0.0.27 → 0.0.28

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0353edc6355ebb93ca61dd4a7588a4b9336b1aae
4
- data.tar.gz: 75bec65cbe42fcf342f2c8f3309ccfc541cd4f03
3
+ metadata.gz: fe024c1fb8de7856dc1c7fc5890f5194046059b8
4
+ data.tar.gz: eae615e6dc5b250134ac204e936a7509b019f4d1
5
5
  SHA512:
6
- metadata.gz: 2da8dc194f9c5ecdb04208f9586008f2f4ae1760928504734580e6778fa097f21604ff8b858527a1dcf8fbd3c27c407f19b5085e531394b6710cbad5116996a2
7
- data.tar.gz: ad1142153cb12539dd5b1a4f1cb98fd57c7a670943e16fdcaa5f989e779045f3e298dbff08100b0df80ba79ffb8c1b47945225d76b468de3b77fb65b7f3c8263
6
+ metadata.gz: 6e1ed60fa76e8b03a7f20e2a4c7995b16e147d234ca671c93319ae62ccfa740920238f7baa17f387fbfcac35b9be253b44d34ed772b912013d69e9bee3b2d177
7
+ data.tar.gz: dcf357e123ab07edd39cc5adf3df13ffbb36416d2bc45076e83593775781ec7bffd1182ffcd64d3103a4c45d50aad6ea6abbbe952397dd35fdc171fed8c4748e
@@ -17,6 +17,10 @@ module NaranyaEcm
17
17
  autoload :Client
18
18
  end
19
19
 
20
+ # == NaranyaEcm \Rest Module
21
+ #
22
+ # <tt>NaranyaEcm::Rest</tt> provides the REST persistance and querying layer
23
+ # that connects the NaranyaEcm models with the Naranya CaaS REST services.
20
24
  module Rest
21
25
  extend ActiveSupport::Autoload
22
26
  autoload :Client
@@ -47,6 +51,9 @@ module NaranyaEcm
47
51
  autoload :ContentLifecycle
48
52
  end
49
53
 
54
+ # == NaranyaEcm \Search Module
55
+ #
56
+ # <tt>NaranyaEcm::Search</tt> implements classes and methods for querying the Naranya CaaS Search engine.
50
57
  module Search
51
58
  extend ActiveSupport::Autoload
52
59
  autoload :Hit
@@ -1,3 +1,3 @@
1
1
  module NaranyaEcm
2
- VERSION = "0.0.27"
2
+ VERSION = "0.0.28"
3
3
  end
@@ -1,84 +1,241 @@
1
-
2
1
  module NaranyaEcm
2
+
3
+ ##
4
+ # Represents a Content unit in the Naranya CaaS Service
5
+ #
6
+ # A content unit is made of by a list of some required attributes,
7
+ # along with any non-required attributes.
8
+ #
9
+ # == Attributes List
10
+ #
11
+ # === Required Attributes
12
+ #
13
+ # In order to create a Content Unit, the Content Object should contain at least the following attributes:
14
+ # * <tt>lifecycle_name:</tt> Indicates whether the Content object follows a <tt>simple</tt> lifecycle, a <tt>validatable</tt> lifecycle (can't publish without some sort of editorial validation first), or any other significant lifecycle.
15
+ # * <tt>title_translations:</tt> At least one localized title is required. This attribute is a Hash-like object, requiring the locale name as a key, and the localized string as value.
16
+ # * <tt>author:</tt> This string represents the name of the author of the content.
17
+ #
18
+ # === Other significant attributes
19
+ #
20
+ # The Naranya CaaS Service is prepared to manage and gives meaning to the following attributes:
21
+ # * <tt>type:</tt> The type of content. Aids the client application in determining how to display and manage the content.
22
+ # * <tt>description_translations:</tt> Localizable descriptions of the Content.
23
+ # * <tt>content_rating:</tt>
24
+ # * <tt>keywords:</tt> Array containing a list of keywords
25
+ # * <tt>main_url:</tt> The main URL pointing to the content AS DISPLAYED BY THE CLIENT APP.
26
+ #
27
+ # == Associations
28
+ #
29
+ # * <tt>category:</tt>
30
+ # * <tt>versions:</tt>
31
+ # * <tt>current_version:</tt>
32
+ # * <tt>latest_version:</tt>
33
+ # * <tt>media_resources:</tt>
3
34
  class Content
4
35
 
36
+ # Include the REST persistance methods:
5
37
  include NaranyaEcm.document_module
38
+
39
+ # Include the timestamping methods:
6
40
  include NaranyaEcm::Behaviors::Timestampable
41
+
42
+ # Include the search methods:
7
43
  include NaranyaEcm::Search::Methods
44
+
45
+ # Include the media list methods:
8
46
  include NaranyaEcm::Behaviors::MediaMethods
9
47
 
10
- # Type:
48
+ ##
49
+ # :attr: type
50
+ #
11
51
  # Describes the main type of the content - App, Note, etc.
12
52
  field :type, type: String
13
53
 
14
- # Content Lifecycle Name:
54
+ ##
55
+ # :attr: lifecycle_name
56
+ #
15
57
  # Determines the lifecycle for the specific content:
16
- # - simple: draft -> published -> inactive
17
- # - validatable: draft -> awaiting_validation -> validated -> published -> inactive
18
- # - expirable: draft -> published -> expired/inactive
58
+ # * <tt>simple:</tt> draft -> published -> deactivated
59
+ # * <tt>validatable:</tt> draft -> awaiting_acceptance -> accepted -> published -> deactivated
60
+ # * <tt>expirable:</tt> draft -> published -> expired/inactive
19
61
  field :lifecycle_name, type: String, default: -> { 'simple' }
20
62
  validates :lifecycle_name, presence: true
21
63
 
22
- # Content Lifecycle State:
64
+ ##
65
+ # :attr: lifecycle_state
66
+ #
23
67
  # A managed string that describes the current state of this particular content.
24
68
  # Depending on the Content's lifecycle, it changes upon several events.
25
- # - draft:
26
- # - awaiting_validation:
27
- # - validated:
28
- # - invalidated:
29
- # - published:
69
+ # * <tt>draft:</tt>
70
+ # * <tt>awaiting_acceptance:</tt>
71
+ # * <tt>accepted:</tt>
72
+ # * <tt>rejected:</tt>
73
+ # * <tt>published:</tt>
74
+ # * <tt>deactivated:</tt>
30
75
  field :lifecycle_state, type: String, default: -> { :draft }
31
76
  validates :lifecycle_state, presence: true
32
77
 
33
- # Title (Localized):
78
+ ##
79
+ # :attr: title
80
+ #
34
81
  # The content title that can be displayed as header, result, etc.
35
82
  field :title, type: String, localize: true
36
83
  validate :at_least_one_title_translation_must_exist
37
84
 
38
- # Description (Localized):
39
- # The content title that can be displayed as header, result, etc.
85
+ ##
86
+ # :attr: title_translations
87
+ #
88
+ # Hash-like containing all the title translations.
89
+
90
+ ##
91
+ # :attr: description
92
+ #
93
+ # The localized content description that can be displayed as header, result, etc.
40
94
  field :description, type: String, localize: true
95
+
96
+ ##
97
+ # :attr: description_translations
98
+ #
99
+ # Hash-like containing all the description translations.
41
100
 
42
- # Content Rating:
101
+ ##
102
+ # :attr: content_rating
103
+ #
104
+ # Hash-like object containing all the localized content ratings, with the rating system as a Key, and the corresponding ratin object as value.
43
105
  field :content_rating, type: Hash
44
106
 
45
- # Keywords:
107
+ ##
108
+ # :attr: keywords
109
+ #
110
+ # Array containing a list of keywords
46
111
  field :keywords, type: Array
47
112
 
113
+ ##
114
+ # :attr: author
115
+ #
48
116
  # Author:
49
117
  # The name of the user who created this content.
50
118
  field :author, type: String
51
- validates :author,
52
- presence: true
119
+ validates :author, presence: true
53
120
 
121
+ ##
122
+ # :attr: main_url
123
+ #
54
124
  # Main URL:
55
125
  # The URL that should be used to render or display the content.
56
126
  field :main_url, type: String
57
- validates :main_url,
58
- format: { with: URI.regexp },
59
- allow_nil: true,
60
- allow_blank: true
127
+ validates :main_url, format: { with: URI.regexp }, allow_nil: true, allow_blank: true
61
128
 
129
+ ##
130
+ # :attr: category
131
+ # :category: Associations
132
+ #
133
+ # The category to which the Content belongs.
62
134
  belongs_to :category
63
135
 
64
- has_many :versions,
65
- class_name: :ContentVersion
136
+ ##
137
+ # :attr: versions
138
+ # :category: Associations
139
+ #
140
+ # A list of ContentVersion objects corresponding to changes in a versionable content.
141
+ has_many :versions, class_name: :ContentVersion
66
142
 
67
- belongs_to :current_version,
68
- class_name: :ContentVersion
143
+ ##
144
+ # :attr: current_version
145
+ # :category: Associations
146
+ #
147
+ # The ContentVersion object marked as current. It must be published.
148
+ belongs_to :current_version, class_name: :ContentVersion
69
149
 
70
- belongs_to :latest_version,
71
- class_name: :ContentVersion
150
+ ##
151
+ # :attr: latest_version
152
+ # :category: Associations
153
+ #
154
+ # The ContentVersion object marked as latest.
155
+ belongs_to :latest_version, class_name: :ContentVersion
72
156
 
73
- has_many :media_resources,
74
- class_name: :MediaResource,
75
- inverse_of: :content
157
+ ##
158
+ # :attr: media_resources
159
+ # :category: Associations
160
+ #
161
+ # A list of MediaResource objects associated directly to the Content.
162
+ has_many :media_resources, class_name: :MediaResource, inverse_of: :content
76
163
 
77
164
  ###############################################################
78
165
  # StateMachine:
79
166
  include AASM
80
167
  include AASM::Persistence::RestPersistence
81
168
 
169
+ ##
170
+ # :method: request_an_acceptance_review
171
+ # :call-seq:
172
+ # request_an_acceptance_review => true or false
173
+ #
174
+ # Triggers the <tt>request_an_acceptance_review</tt> event, and starts the Content transition to an :awaiting_acceptance state.
175
+
176
+ ##
177
+ # :method: request_an_acceptance_review!
178
+ # :call-seq:
179
+ # request_an_acceptance_review => true or Error
180
+ #
181
+ # Same as #request_an_acceptance_review, but raises an error if the transition halted.
182
+
183
+ ##
184
+ # :method: accept
185
+ # :call-seq:
186
+ # accept => true or false
187
+ #
188
+ # Triggers the <tt>accept</tt> event.
189
+
190
+ ##
191
+ # :method: accept!
192
+ # :call-seq:
193
+ # accept! => true or Error
194
+ #
195
+ # Same as #accept, but raises an error if the transition halted.
196
+
197
+ ##
198
+ # :method: reject
199
+ # :call-seq:
200
+ # reject => true or false
201
+ #
202
+ # Triggers the <tt>reject</tt> event, which starts the Content transition to an <tt>:rejected</tt> state.
203
+
204
+ ##
205
+ # :method: reject!
206
+ # :call-seq:
207
+ # reject! => true or Error
208
+ #
209
+ # Same as #reject, but raises an error if the transition did not complete.
210
+
211
+ ##
212
+ # :method: publish
213
+ # :call-seq:
214
+ # publish => true or false
215
+ #
216
+ # Triggers the <tt>publish</tt> event, which starts the Content transition to a <tt>:published</tt> state.
217
+
218
+ ##
219
+ # :method: publish!
220
+ # :call-seq:
221
+ # publish! => true or Error
222
+ #
223
+ # Same as #publish, but raises an error if the transition did not complete.
224
+
225
+ ##
226
+ # :method: deactivate
227
+ # :call-seq:
228
+ # deactivate => true or false
229
+ #
230
+ # Triggers the <tt>deactivate</tt> event, which starts the Content transition to a <tt>:deactivated</tt> state.
231
+
232
+ ##
233
+ # :method: deactivate!
234
+ # :call-seq:
235
+ # deactivate! => true or Error
236
+ #
237
+ # Same as #deactivate, but raises an error if the transition did not complete.
238
+
82
239
  aasm column: :lifecycle_state do
83
240
 
84
241
  state :draft, initial: true
@@ -119,11 +276,29 @@ module NaranyaEcm
119
276
  end
120
277
  end
121
278
 
122
- def simple_lifecycle?; self.lifecycle_name == 'simple'; end
123
- def validatable_lifecycle?; self.lifecycle_name == 'validatable'; end
279
+ ##
280
+ # :method: simple_lifecycle?
281
+ # :call-seq:
282
+ # simple_lifecycle? => true or false
283
+ #
284
+ # Shows whether the Content object has a simple lifecycle.
285
+ def simple_lifecycle?
286
+ self.lifecycle_name == 'simple'
287
+ end
288
+
289
+ ##
290
+ # :method: validatable_lifecycle?
291
+ # :call-seq:
292
+ # validatable_lifecycle? => true or false
293
+ #
294
+ # Shows whether the Content object has a validatable lifecycle.
295
+ def validatable_lifecycle?
296
+ self.lifecycle_name == 'validatable'
297
+ end
124
298
 
125
299
  private
126
300
 
301
+ # Validates that at least one title translation exists.
127
302
  def at_least_one_title_translation_must_exist
128
303
  errors.add :title_translations, "must have at least one translation" unless title_translations.keys.any?
129
304
  end
@@ -74,7 +74,7 @@ module NaranyaEcm::Rest
74
74
  log_level: :debug,
75
75
  log_format: :curl
76
76
 
77
- ::NaranyaEcm::Rest::RestError.raise_by_code(token_response.code) unless token_response.success?
77
+ ::NaranyaEcm::Rest::RestError.raise_by_failed_response(token_response.code) unless token_response.success?
78
78
 
79
79
  "Bearer #{token_response['access_token']}"
80
80
  end
@@ -11,6 +11,8 @@ module NaranyaEcm::Rest
11
11
  super(msg)
12
12
  end
13
13
 
14
+ ##
15
+ # Captura un response y genera + avienta una excepción.
14
16
  def self.raise_by_failed_response(response, message = "")
15
17
  klass = case response.code
16
18
  when 401 then AuthorizationRequired
@@ -54,22 +56,32 @@ module NaranyaEcm::Rest
54
56
 
55
57
  # Raised when connection to the database could not been established (for example when <tt>connection=</tt>
56
58
  # is given a nil object).
57
- class ConnectionNotEstablished < RestError; end
59
+ class ConnectionNotEstablished < RestError
60
+ end
58
61
 
59
62
  # Raised when REST cannot find record by given id or set of ids.
60
- class ResourceNotFound < RestError; end
63
+ class ResourceNotFound < RestError
64
+ end
61
65
 
62
66
  # Raised by ActiveRecord::Base.save! and ActiveRecord::Base.create! methods when record cannot be
63
67
  # saved because record is invalid.
64
- class ResourceNotSaved < RestError; end
68
+ class ResourceNotSaved < RestError
69
+ end
65
70
 
66
71
  # Raised by ActiveRecord::Base.destroy! when a call to destroy would return false.
67
- class ResourceNotDestroyed < RestError; end
72
+ class ResourceNotDestroyed < RestError
73
+ end
74
+
75
+ class AuthorizationRequired < RestError
76
+ end
68
77
 
69
- class AuthorizationRequired < RestError; end
78
+ class Forbidden < RestError
79
+ end
70
80
 
71
- class Forbidden < RestError; end
72
- class UnprocessableEntity < RestError; end
73
- class RemoteFailed < RestError; end
81
+ class UnprocessableEntity < RestError
82
+ end
83
+
84
+ class RemoteFailed < RestError
85
+ end
74
86
 
75
87
  end
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.27
4
+ version: 0.0.28
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roberto Quintanilla
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-16 00:00:00.000000000 Z
11
+ date: 2014-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport