naranya_ecm-sdk 0.0.15 → 0.0.17

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3f6a90236bd794d754bdf445805afdf1b4539d4f
4
- data.tar.gz: e40ad3616ae04fb8932e2df7fb47546efb0ce7b1
3
+ metadata.gz: cb455d97321126300a191b589db3204014254115
4
+ data.tar.gz: 912aa46d7321a71136aa42568927e0749715a955
5
5
  SHA512:
6
- metadata.gz: f0802bf180226d3b443697ab502f09e1b13a23dd79105b246419de9a8e534cdc4db8351b6577953551ad3e8361c3a67a61e35c896509266c2309affbb9458f3a
7
- data.tar.gz: 62565940d9f2025491f2a5d30d45990e1a2744afa2b411feb8c0bd1ebb5b766a4bd92b87b0127a22e098e6619686379318762f725dcabc8f163f86443316fc9b
6
+ metadata.gz: 1c2b38a2edaa91ee6782e19843eba65f3809014c176daa18f495058f2210894277300f6ab9e7aacd98c1781a4e2fa616a84242dfc209084b09ee4bfcb5d0a20a
7
+ data.tar.gz: a4f1363812dc63eceb161577aa450a6dcef942a1badb92043790a24c28bc4a5715920b87398f4bf83d78c3bf7b1475effbfb631e52667d5cae38f6f4549fa673
@@ -1,5 +1,5 @@
1
1
  module NaranyaEcm::Behaviors
2
- module Mediable
2
+ module MediaMethods
3
3
 
4
4
  extend ActiveSupport::Concern
5
5
 
@@ -4,9 +4,8 @@ module NaranyaEcm
4
4
 
5
5
  include NaranyaEcm.document_module
6
6
  include NaranyaEcm::Behaviors::Timestampable
7
- include NaranyaEcm::Cache::Methods
8
7
  include NaranyaEcm::Search::Methods
9
- include NaranyaEcm::Behaviors::Mediable
8
+ include NaranyaEcm::Behaviors::MediaMethods
10
9
 
11
10
  field :code, type: String
12
11
  validates :code, presence: true
@@ -4,9 +4,8 @@ module NaranyaEcm
4
4
 
5
5
  include NaranyaEcm.document_module
6
6
  include NaranyaEcm::Behaviors::Timestampable
7
- include NaranyaEcm::Cache::Methods
8
7
  include NaranyaEcm::Search::Methods
9
- include NaranyaEcm::Behaviors::Mediable
8
+ include NaranyaEcm::Behaviors::MediaMethods
10
9
 
11
10
  # Type:
12
11
  # Describes the main type of the content - App, Note, etc.
@@ -4,8 +4,7 @@ module NaranyaEcm
4
4
 
5
5
  include NaranyaEcm.document_module
6
6
  include NaranyaEcm::Behaviors::Timestampable
7
- include NaranyaEcm::Cache::Methods
8
- include NaranyaEcm::Behaviors::Mediable
7
+ include NaranyaEcm::Behaviors::MediaMethods
9
8
 
10
9
  # Description (localized):
11
10
  # A localized string that describes an overview of the significant changes
@@ -4,7 +4,6 @@ module NaranyaEcm
4
4
 
5
5
  include NaranyaEcm.document_module
6
6
  include NaranyaEcm::Behaviors::Timestampable
7
- include NaranyaEcm::Cache::Methods
8
7
 
9
8
  belongs_to :media_resource
10
9
  # validates :media_resource, presence: true
@@ -4,7 +4,6 @@ module NaranyaEcm
4
4
 
5
5
  include NaranyaEcm.document_module
6
6
  include NaranyaEcm::Behaviors::Timestampable
7
- include NaranyaEcm::Cache::Methods
8
7
 
9
8
  # Media MIME/Internet Type:
10
9
  field :type, type: String
@@ -4,32 +4,18 @@ module NaranyaEcm::Rest
4
4
  module FinderMethods
5
5
 
6
6
  def find(*args)
7
- if block_given?
8
- to_a.find { |*block_args| yield(*block_args) }
7
+ case args.length
8
+ when 0
9
+ raise ResourceNotFound, "Couldn't find #{self.name} without an ID"
10
+ when 1
11
+ find_one(args.first)
9
12
  else
10
- find_with_ids(*args)
13
+ self.where(id: args)
11
14
  end
12
15
  end
13
16
 
14
17
  protected
15
18
 
16
- def find_with_ids(*ids)
17
- expects_array = ids.first.kind_of?(Array)
18
- return ids.first if expects_array && ids.first.empty?
19
-
20
- ids = ids.flatten.compact.uniq
21
-
22
- case ids.size
23
- when 0
24
- raise ResourceNotFound, "Couldn't find #{self.name} without an ID"
25
- when 1
26
- result = find_one(ids.first)
27
- expects_array ? [ result ] : result
28
- else
29
- find_some(ids)
30
- end
31
- end
32
-
33
19
  def find_one(id)
34
20
  self.load fetch_one(id)
35
21
  end
@@ -94,6 +94,7 @@ module NaranyaEcm::Rest
94
94
  case response.code
95
95
  when 204
96
96
  self.reload!
97
+ off_band_changes.clear if off_band_changes.present?
97
98
  true
98
99
  when 422 # Unprocessable Entity
99
100
  self.load_server_errors(response.to_hash)
@@ -110,11 +111,23 @@ module NaranyaEcm::Rest
110
111
  object_to_create.save
111
112
  object_to_create
112
113
  end
114
+
113
115
  def create!(attributes={})
114
116
  created_object = create(attributes)
115
117
  raise "ValidationError" unless created_object.persisted?
116
118
  created_object
117
119
  end
120
+
121
+ def delete(id, options={})
122
+ response = HTTParty.delete("#{NaranyaEcm.options[:site]}#{self.path}/#{id}.json")
123
+ case response.code
124
+ when 204
125
+ true
126
+ else
127
+ false
128
+ end
129
+ end
130
+
118
131
  end
119
132
 
120
133
  end
@@ -14,9 +14,6 @@ module NaranyaEcm::Search
14
14
  def klass
15
15
  @klass ||= "NaranyaEcm::#{type.classify}".constantize
16
16
  end
17
-
18
- def cache_key
19
- @cache_key ||= NaranyaEcm::Cache::Key.new klass, id, updated_at
20
- end
17
+
21
18
  end
22
19
  end
@@ -12,17 +12,6 @@ module NaranyaEcm::Search
12
12
  # resource:
13
13
  result_elements = search_results.hits.dup
14
14
 
15
- # Load from cache any matching element caching_key:
16
- result_elements.each_index do |index|
17
- hit_data = result_elements[index].dup
18
- fetched_data = result_elements[index].cache_key.read
19
- if fetched_data.present?
20
- puts "===== Cache READ: '#{result_elements[index].cache_key}'"
21
- result_elements[index] = hit_data.klass.load(fetched_data)
22
- result_elements[index].merge_search_hit_data(hit_data)
23
- end
24
- end
25
-
26
15
  # Load from server all elements yet to materialize:
27
16
  pending_hits = result_elements.select { |e| e.is_a? NaranyaEcm::Search::Hit }
28
17
  pending_hits.map(&:klass).uniq.each do |hit_klass|
@@ -36,8 +25,6 @@ module NaranyaEcm::Search
36
25
  hit_data = result_elements.detect { |e| e.is_a?(NaranyaEcm::Search::Hit) && e.klass == r.class && e.id == r.id }
37
26
  hit_index = result_elements.find_index hit_data
38
27
 
39
- puts "===== Cache WRITE: '#{r.cache_key}'"
40
- r.cache_key.write fetched_data
41
28
  r.merge_search_hit_data hit_data
42
29
  result_elements[hit_index] = r
43
30
  end
@@ -63,10 +50,6 @@ module NaranyaEcm::Search
63
50
  ]
64
51
  end
65
52
 
66
- def cache_keys
67
- hits.map(&:cache_key)
68
- end
69
-
70
53
  def hits
71
54
  do_search! unless @hits
72
55
  @hits
@@ -1,3 +1,3 @@
1
1
  module NaranyaEcm
2
- VERSION = "0.0.15"
2
+ VERSION = "0.0.17"
3
3
  end
@@ -39,13 +39,7 @@ module NaranyaEcm
39
39
  extend ActiveSupport::Autoload
40
40
  autoload :Localizable
41
41
  autoload :Timestampable
42
- autoload :Mediable
43
- end
44
-
45
- module Cache
46
- extend ActiveSupport::Autoload
47
- autoload :Key
48
- autoload :Methods
42
+ autoload :MediaMethods
49
43
  end
50
44
 
51
45
  autoload_under 'lifecycles' do
@@ -60,8 +54,6 @@ module NaranyaEcm
60
54
  autoload :Results
61
55
  end
62
56
 
63
- autoload :ActiveResourceBasePatch
64
-
65
57
  include ActiveSupport::Configurable
66
58
 
67
59
  DEFAULT_CONFIG = {
@@ -78,13 +70,9 @@ module NaranyaEcm
78
70
  @root_directory ||= storage.directories.get(options[:storage][:root_directory])
79
71
  end
80
72
 
81
- def setup
82
- yield config
83
- end
84
-
85
- def document_module
86
- NaranyaEcm::Rest::Model
87
- end
73
+ def setup; yield config; end
74
+ def document_module; NaranyaEcm::Rest::Model; end
75
+ def timestamp_module; NaranyaEcm::Behaviors::Timestampable; end
88
76
 
89
77
  def options
90
78
  auto_conf unless config.present?
@@ -97,11 +85,6 @@ module NaranyaEcm
97
85
  .with_indifferent_access
98
86
  setup { |config| yml_config.each { |key, val| config.send "#{key}=".to_sym, val } }
99
87
  end
100
-
101
- def cache
102
- auto_conf unless config.present?
103
- @cache ||= ActiveSupport::Cache.lookup_store *options[:cache]
104
- end
105
88
 
106
89
  protected
107
90
 
@@ -110,9 +93,6 @@ module NaranyaEcm
110
93
  if defined?(Rails)
111
94
  yml_path = File.join(Rails.root, 'config', 'naranya_ecm.yml')
112
95
  load_config_from_yml(yml_path, Rails.env)
113
-
114
- # Use the Rails cache:
115
- @cache = Rails.cache
116
96
  elsif File.exists?('./naranya_ecm.yml')
117
97
  load_config_from_yml('./naranya_ecm.yml')
118
98
  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.15
4
+ version: 0.0.17
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-03-28 00:00:00.000000000 Z
11
+ date: 2014-04-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -169,10 +169,8 @@ files:
169
169
  - lib/naranya_ecm-sdk.rb
170
170
  - lib/naranya_ecm-sdk/version.rb
171
171
  - lib/naranya_ecm/behaviors/localizable.rb
172
- - lib/naranya_ecm/behaviors/mediable.rb
172
+ - lib/naranya_ecm/behaviors/media_methods.rb
173
173
  - lib/naranya_ecm/behaviors/timestampable.rb
174
- - lib/naranya_ecm/cache/key.rb
175
- - lib/naranya_ecm/cache/methods.rb
176
174
  - lib/naranya_ecm/lifecycles/content_lifecycle.rb
177
175
  - lib/naranya_ecm/models/category.rb
178
176
  - lib/naranya_ecm/models/content.rb
@@ -1,49 +0,0 @@
1
- require 'active_support/hash_with_indifferent_access'
2
-
3
- module NaranyaEcm::Cache
4
- class Key < String
5
-
6
- TIMESTAMP_FORMAT = '%Y%m%d%H%M%S'.freeze
7
-
8
- attr_reader :klass, :id, :timestamp
9
-
10
- def initialize(given_class, given_id, given_timestamp = nil)
11
- @klass, @id = given_class, given_id
12
-
13
- unless given_timestamp.blank?
14
- @timestamp = if given_timestamp.is_a? String
15
- given_timestamp.to_datetime
16
- elsif given_timestamp.respond_to? :strftime
17
- given_timestamp
18
- else
19
- raise ArgumentError, "Given timestamp is not a Date|Time like object"
20
- end
21
- end
22
-
23
- super join_segments
24
- end
25
-
26
- def timestamped?
27
- timestamp.present?
28
- end
29
-
30
- def exist?
31
- NaranyaEcm.cache.exist? self
32
- end
33
-
34
- def read
35
- NaranyaEcm.cache.read self
36
- end
37
-
38
- def write(data)
39
- NaranyaEcm.cache.write self, data
40
- end
41
-
42
- private
43
- def join_segments
44
- key = "#{klass.name.tableize}/#{id}"
45
- timestamped? ? "#{key}-#{timestamp.strftime(TIMESTAMP_FORMAT)}" : key
46
- end
47
-
48
- end
49
- end
@@ -1,69 +0,0 @@
1
- require 'active_support/concern'
2
-
3
- module NaranyaEcm::Cache
4
- module Methods
5
-
6
- extend ActiveSupport::Concern
7
-
8
- included do
9
- class << self
10
- alias_method_chain :find, :caching
11
- alias_method_chain :find_one, :caching
12
- end
13
- end
14
-
15
- def cache_key
16
- self.new_resource? ? nil : self.class.cache_key_for(self.id, self.updated_at)
17
- end
18
-
19
- module ClassMethods
20
-
21
- def cache
22
- NaranyaEcm.cache
23
- end
24
-
25
- def cache_key_for(id, timestamp=nil)
26
- Key.new self, id, timestamp
27
- end
28
-
29
- def find_with_caching(id, cache_options = {})
30
- find_one_with_caching(id, cache_options)
31
- end
32
-
33
- private
34
-
35
- # Find a single resource from the default URL
36
- def find_one_with_caching(id, cache_options = {})
37
- fetched_data = nil
38
- missed = true
39
-
40
- # Ver primero si lo podemos obtener del cache:
41
- cache_timestamp = cache_options.delete(:timestamp)
42
- if cache_timestamp.present?
43
- # Try to load the record from cache:
44
- cache_key = cache_key_for(id, cache_timestamp)
45
- missed = (fetched_data = cache_key.read).nil?
46
- puts "===== CACHE #{(missed ? 'MISS: ' : 'HIT: ')} '#{cache_key}'"
47
- end
48
-
49
- # Si no lo obtuvimos del caché, traer uno del server:
50
-
51
- unless fetched_data.present?
52
- fetched_data = fetch_one(id)
53
- end
54
-
55
- # Inicializar el recurso con los datos obtenidos:
56
- resource = self.load fetched_data
57
-
58
- # Write unless data exists:
59
- if missed
60
- puts "===== Cache WRITE: '#{resource.cache_key}'"
61
- cache.write(resource.cache_key, fetched_data)
62
- end
63
-
64
- resource
65
- end
66
- end
67
-
68
- end
69
- end