naranya_ecm-sdk 0.0.14 → 0.0.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/naranya_ecm/behaviors/localizable.rb +27 -31
- data/lib/naranya_ecm/behaviors/mediable.rb +25 -0
- data/lib/naranya_ecm/behaviors/timestampable.rb +18 -15
- data/lib/naranya_ecm/cache/key.rb +32 -56
- data/lib/naranya_ecm/cache/methods.rb +50 -63
- data/lib/naranya_ecm/lifecycles/content_lifecycle.rb +39 -16
- data/lib/naranya_ecm/models/category.rb +11 -30
- data/lib/naranya_ecm/models/content.rb +73 -73
- data/lib/naranya_ecm/models/content_version.rb +50 -29
- data/lib/naranya_ecm/models/download_authorization.rb +22 -26
- data/lib/naranya_ecm/models/media_resource.rb +49 -15
- data/lib/naranya_ecm/rest/associations.rb +156 -0
- data/lib/naranya_ecm/rest/client.rb +4 -0
- data/lib/naranya_ecm/rest/errors.rb +53 -0
- data/lib/naranya_ecm/rest/finder_methods.rb +50 -0
- data/lib/naranya_ecm/rest/model.rb +215 -0
- data/lib/naranya_ecm/rest/persistence.rb +122 -0
- data/lib/naranya_ecm/rest/relation.rb +54 -0
- data/lib/naranya_ecm/search/hit.rb +19 -14
- data/lib/naranya_ecm/search/methods.rb +18 -20
- data/lib/naranya_ecm/search/query.rb +229 -230
- data/lib/naranya_ecm/search/results.rb +136 -139
- data/lib/naranya_ecm-sdk/version.rb +1 -1
- data/lib/naranya_ecm-sdk.rb +54 -13
- data/naranya_ecm-sdk.gemspec +1 -1
- data/spec/models/category_spec.rb +7 -2
- data/spec/models/content_spec.rb +11 -2
- data/spec/models/media_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/support/naranya_ecms_shared_specs.rb +0 -12
- metadata +15 -19
- data/lib/naranya_ecm/behaviors/resourceable.rb +0 -22
- data/lib/naranya_ecm/behaviors.rb +0 -10
- data/lib/naranya_ecm/cache.rb +0 -9
- data/lib/naranya_ecm/has_many_patch.rb +0 -105
- data/lib/naranya_ecm/lifecycles/lifecycleable.rb +0 -43
- data/lib/naranya_ecm/lifecycles/version_lifecycle.rb +0 -75
- data/lib/naranya_ecm/lifecycles.rb +0 -10
- data/lib/naranya_ecm/models/embedded_hash.rb +0 -10
- data/lib/naranya_ecm/models/embedded_localized_hash.rb +0 -38
- data/lib/naranya_ecm/models/lifecycle.rb +0 -34
- data/lib/naranya_ecm/models.rb +0 -15
- data/lib/naranya_ecm/search.rb +0 -14
@@ -1,105 +0,0 @@
|
|
1
|
-
require 'active_support/concern'
|
2
|
-
|
3
|
-
module NaranyaEcm
|
4
|
-
|
5
|
-
# Aplica de manera dinámica el patch visto en:
|
6
|
-
# https://github.com/kenips/activeresource/commit/720c06a5a4a2d1cfd7319accb649b7aececa1ca2
|
7
|
-
module HasManyPatch
|
8
|
-
|
9
|
-
extend ActiveSupport::Concern
|
10
|
-
|
11
|
-
included do
|
12
|
-
class << self
|
13
|
-
alias_method_chain :element_path, :has_many_patch
|
14
|
-
|
15
|
-
unless method_defined? :element_base_path
|
16
|
-
alias_method :element_base_path, :element_base_path_with_has_many_patch
|
17
|
-
end
|
18
|
-
|
19
|
-
alias_method_chain :defines_has_many_finder_method, :has_many_patch
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def element_base_path(options = nil)
|
24
|
-
self.class.element_base_path(to_param, options || prefix_options)
|
25
|
-
end
|
26
|
-
|
27
|
-
module ClassMethods
|
28
|
-
|
29
|
-
# Gets the element path for the given ID in +id+. If the +query_options+ parameter is omitted, Rails
|
30
|
-
# will split from the \prefix options.
|
31
|
-
#
|
32
|
-
# ==== Options
|
33
|
-
# +prefix_options+ - A \hash to add a \prefix to the request for nested URLs (e.g., <tt>:account_id => 19</tt>
|
34
|
-
# would yield a URL like <tt>/accounts/19/purchases.json</tt>).
|
35
|
-
#
|
36
|
-
# +query_options+ - A \hash to add items to the query string for the request.
|
37
|
-
#
|
38
|
-
# ==== Examples
|
39
|
-
# Post.element_path(1)
|
40
|
-
# # => /posts/1.json
|
41
|
-
#
|
42
|
-
# class Comment < ActiveResource::Base
|
43
|
-
# self.site = "https://37s.sunrise.com/posts/:post_id"
|
44
|
-
# end
|
45
|
-
#
|
46
|
-
# Comment.element_path(1, :post_id => 5)
|
47
|
-
# # => /posts/5/comments/1.json
|
48
|
-
#
|
49
|
-
# Comment.element_path(1, :post_id => 5, :active => 1)
|
50
|
-
# # => /posts/5/comments/1.json?active=1
|
51
|
-
#
|
52
|
-
# Comment.element_path(1, {:post_id => 5}, {:active => 1})
|
53
|
-
# # => /posts/5/comments/1.json?active=1
|
54
|
-
#
|
55
|
-
def element_path_with_has_many_patch(id, prefix_options = {}, query_options = nil)
|
56
|
-
prefix_options, query_options = split_options(prefix_options) if query_options.nil?
|
57
|
-
"#{element_base_path(id, prefix_options)}#{format_extension}#{query_string(query_options)}"
|
58
|
-
end
|
59
|
-
|
60
|
-
# Gets the element base path for the given ID in +id+. This will never return a format extension or params,
|
61
|
-
# it is useful for building prefix paths. See <tt>element_path</tt> if you need format extensions and params.
|
62
|
-
#
|
63
|
-
# ==== Options
|
64
|
-
# +prefix_options+ - A \hash to add a \prefix to the request for nested URLs (e.g., <tt>:account_id => 19</tt>
|
65
|
-
# would yield a URL like <tt>/accounts/19</tt>).
|
66
|
-
#
|
67
|
-
# ==== Examples
|
68
|
-
# Class Post < ActiveResource::Base
|
69
|
-
# self.site = "https://37s.sunrise.com/api"
|
70
|
-
# end
|
71
|
-
#
|
72
|
-
# Post.element_base_path(1)
|
73
|
-
# # => /api/posts/1
|
74
|
-
#
|
75
|
-
# class Comment < ActiveResource::Base
|
76
|
-
# self.site = "https://37s.sunrise.com/api/posts/:post_id"
|
77
|
-
# end
|
78
|
-
#
|
79
|
-
# Comment.element_base_path(1, :post_id => 5)
|
80
|
-
# # => /api/posts/5/comments/1
|
81
|
-
#
|
82
|
-
def element_base_path_with_has_many_patch(id, prefix_options = {})
|
83
|
-
check_prefix_options(prefix_options)
|
84
|
-
"#{prefix(prefix_options)}#{collection_name}/#{URI.parser.escape id.to_s}"
|
85
|
-
end
|
86
|
-
|
87
|
-
# Patches the definition of the has_many finder method
|
88
|
-
def defines_has_many_finder_method_with_has_many_patch(method_name, association_model)
|
89
|
-
ivar_name = :"@#{method_name}"
|
90
|
-
|
91
|
-
define_method(method_name) do
|
92
|
-
if instance_variable_defined?(ivar_name)
|
93
|
-
instance_variable_get(ivar_name)
|
94
|
-
elsif attributes.include?(method_name)
|
95
|
-
attributes[method_name]
|
96
|
-
else
|
97
|
-
instance_variable_set(ivar_name, association_model.find(:all, :from => "#{element_base_path}/#{method_name}.#{association_model.format.extension}"))
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
end
|
103
|
-
|
104
|
-
end
|
105
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
require 'active_support/concern'
|
2
|
-
|
3
|
-
module NaranyaEcm
|
4
|
-
module Lifecycles
|
5
|
-
|
6
|
-
module Lifecycleable
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
included do
|
10
|
-
attr_accessor :lifecycle_name, :lifecycle_state
|
11
|
-
end
|
12
|
-
|
13
|
-
def lifecycle_name
|
14
|
-
@attributes['lifecycle_name'] ||= NaranyaEcm::Lifecycle.new(@attributes['lifecycle_name'])
|
15
|
-
end
|
16
|
-
|
17
|
-
def lifecycle_name=(given_lifecycle_name)
|
18
|
-
@attributes['lifecycle_name'] = NaranyaEcm::Lifecycle.new(given_lifecycle_name)
|
19
|
-
@lifecycle_name = @attributes['lifecycle_name']
|
20
|
-
end
|
21
|
-
|
22
|
-
def lifecycle_state
|
23
|
-
@attributes['lifecycle_state']
|
24
|
-
end
|
25
|
-
|
26
|
-
def lifecycle_state=(given_lifecycle_state)
|
27
|
-
@attributes['lifecycle_state']= given_lifecycle_state.to_s
|
28
|
-
end
|
29
|
-
|
30
|
-
def method_missing(method_name, *args, &block)
|
31
|
-
if method_name.to_s =~ /^(\w+)_lifecycle\?$/
|
32
|
-
self.lifecycle_name.is_lifecycle?($1)
|
33
|
-
else
|
34
|
-
super # You *must* call super if you don't handle the
|
35
|
-
# method, otherwise you'll mess up Ruby's method
|
36
|
-
# lookup.
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
end
|
@@ -1,75 +0,0 @@
|
|
1
|
-
require 'active_support/concern'
|
2
|
-
require 'state_machine'
|
3
|
-
|
4
|
-
module NaranyaEcm
|
5
|
-
module Lifecycles
|
6
|
-
|
7
|
-
module VersionLifecycle
|
8
|
-
extend ActiveSupport::Concern
|
9
|
-
|
10
|
-
included do
|
11
|
-
|
12
|
-
include NaranyaEcm::Lifecycles::Lifecycleable
|
13
|
-
|
14
|
-
##################################################################
|
15
|
-
# StateMachine:
|
16
|
-
state_machine :lifecycle_state, initial: :draft do
|
17
|
-
|
18
|
-
# # Not working...
|
19
|
-
# #after_transition :on => :publish, :do => :supercede_the_content_current_version_if_published
|
20
|
-
|
21
|
-
# #########################################
|
22
|
-
# # Eventos:
|
23
|
-
|
24
|
-
# event :request_validation do
|
25
|
-
# # Iniciar la transición de :draft a :awaiting_validation,
|
26
|
-
# # si el lifecycle es sencillo:
|
27
|
-
# transition :draft => :awaiting_validation, :unless => :simple_lifecycle?
|
28
|
-
# end
|
29
|
-
|
30
|
-
# event :validate do
|
31
|
-
# # Iniciar la transición de :awaiting_validation a :validated:
|
32
|
-
# transition :awaiting_validation => :validated
|
33
|
-
# end
|
34
|
-
|
35
|
-
# event :reject do
|
36
|
-
# # Iniciar la transición de :awaiting_validation a :rejected:
|
37
|
-
# transition :awaiting_validation => :rejected
|
38
|
-
# end
|
39
|
-
|
40
|
-
# event :publish do
|
41
|
-
# # Iniciar la transición de :draft a :published,
|
42
|
-
# # si el lifecycle es sencillo:
|
43
|
-
# transition :draft => :published, :if => :simple_lifecycle?
|
44
|
-
# transition :validated => :published
|
45
|
-
# end
|
46
|
-
|
47
|
-
# event :supersede do
|
48
|
-
# # Iniciar la transición de :published a :superseded:
|
49
|
-
# transition :published => :superseded
|
50
|
-
# end
|
51
|
-
|
52
|
-
# event :deactivate do
|
53
|
-
# # Iniciar la transición de :published a :deactivated:
|
54
|
-
# transition :published => :deactivated
|
55
|
-
# end
|
56
|
-
|
57
|
-
state :awaiting_validation
|
58
|
-
|
59
|
-
state :rejected
|
60
|
-
|
61
|
-
state :validated
|
62
|
-
|
63
|
-
state :published
|
64
|
-
|
65
|
-
state :superseded
|
66
|
-
|
67
|
-
state :deactivated
|
68
|
-
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
end
|
73
|
-
|
74
|
-
end
|
75
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
|
2
|
-
module NaranyaEcm::Models
|
3
|
-
class EmbeddedLocalizedHash < EmbeddedHash
|
4
|
-
|
5
|
-
alias_method :locales, :keys
|
6
|
-
alias_method :available_locales, :locales
|
7
|
-
|
8
|
-
def lookup
|
9
|
-
locale = ::I18n.locale
|
10
|
-
if ::I18n.respond_to?(:fallbacks)
|
11
|
-
lookup_result = self[::I18n.fallbacks[locale].map(&:to_s).find{ |loc| self.has_key?(loc) }]
|
12
|
-
else
|
13
|
-
lookup_result = self[locale.to_s]
|
14
|
-
end
|
15
|
-
lookup_result || self.present? ? self.first[1] : nil
|
16
|
-
end
|
17
|
-
|
18
|
-
def method_missing(method_name, *args, &block)
|
19
|
-
if method_name == self.class.aliased_lookup_name
|
20
|
-
# El nombre del método debe ser un alias de lookup.
|
21
|
-
# Agregar el alias:
|
22
|
-
self.class.send :alias_method, self.class.aliased_lookup_name, :lookup
|
23
|
-
# llamar el método de lookup. La siguiente ocación no caerá aqui:
|
24
|
-
lookup
|
25
|
-
else
|
26
|
-
super # You *must* call super if you don't handle the
|
27
|
-
# method, otherwise you'll mess up Ruby's method
|
28
|
-
# lookup.
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
class << self
|
33
|
-
def aliased_lookup_name
|
34
|
-
@lookup_alias ||= self.name.demodulize[0..-("Translations".length+1)].underscore.to_sym
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
|
2
|
-
module NaranyaEcm::Models
|
3
|
-
|
4
|
-
# Value Object de Lifecycle de documentos / versiones / media / etc.
|
5
|
-
class Lifecycle < String
|
6
|
-
include Comparable
|
7
|
-
|
8
|
-
KNOWN_LIFECYCLES = %w(simple validatable)
|
9
|
-
.map { |m| m.to_sym }
|
10
|
-
.freeze
|
11
|
-
|
12
|
-
def is_lifecycle?(given_lifecycle)
|
13
|
-
given_lifecycle.to_s == self
|
14
|
-
end
|
15
|
-
|
16
|
-
KNOWN_LIFECYCLES.each do |lifecycle_name|
|
17
|
-
define_method("is_#{lifecycle_name}?") do
|
18
|
-
is_lifecycle?(lifecycle_name)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def method_missing(method_name, *args, &block)
|
23
|
-
if method_name.to_s =~ /^is_(\w+)\?$/
|
24
|
-
is_lifecycle?($1)
|
25
|
-
else
|
26
|
-
super # You *must* call super if you don't handle the
|
27
|
-
# method, otherwise you'll mess up Ruby's method
|
28
|
-
# lookup.
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
data/lib/naranya_ecm/models.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'active_support/dependencies/autoload'
|
2
|
-
|
3
|
-
module NaranyaEcm
|
4
|
-
module Models
|
5
|
-
extend ActiveSupport::Autoload
|
6
|
-
autoload :Category
|
7
|
-
autoload :Content
|
8
|
-
autoload :ContentVersion
|
9
|
-
autoload :Lifecycle
|
10
|
-
autoload :DownloadAuthorization
|
11
|
-
autoload :MediaResource
|
12
|
-
autoload :EmbeddedHash
|
13
|
-
autoload :EmbeddedLocalizedHash
|
14
|
-
end
|
15
|
-
end
|
data/lib/naranya_ecm/search.rb
DELETED