naranya_ecm-sdk 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/Gemfile +8 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +33 -0
  6. data/Rakefile +1 -0
  7. data/dev/create_cvm.rb +31 -0
  8. data/dev/init.rb +2 -0
  9. data/dev/load_cvm.rb +12 -0
  10. data/dev/search.rb +3 -0
  11. data/lib/naranya_ecm/behaviors/localizable.rb +41 -0
  12. data/lib/naranya_ecm/behaviors/timestampable.rb +22 -0
  13. data/lib/naranya_ecm/behaviors.rb +9 -0
  14. data/lib/naranya_ecm/cache/key.rb +73 -0
  15. data/lib/naranya_ecm/cache/methods.rb +78 -0
  16. data/lib/naranya_ecm/cache.rb +9 -0
  17. data/lib/naranya_ecm/has_many_patch.rb +105 -0
  18. data/lib/naranya_ecm/lifecycles/content_lifecycle.rb +36 -0
  19. data/lib/naranya_ecm/lifecycles/lifecycleable.rb +43 -0
  20. data/lib/naranya_ecm/lifecycles/version_lifecycle.rb +75 -0
  21. data/lib/naranya_ecm/lifecycles.rb +10 -0
  22. data/lib/naranya_ecm/models/category.rb +42 -0
  23. data/lib/naranya_ecm/models/content.rb +102 -0
  24. data/lib/naranya_ecm/models/content_version.rb +38 -0
  25. data/lib/naranya_ecm/models/download_authorization.rb +55 -0
  26. data/lib/naranya_ecm/models/lifecycle.rb +36 -0
  27. data/lib/naranya_ecm/models/media_resource.rb +33 -0
  28. data/lib/naranya_ecm/models.rb +13 -0
  29. data/lib/naranya_ecm/search/hit.rb +17 -0
  30. data/lib/naranya_ecm/search/methods.rb +26 -0
  31. data/lib/naranya_ecm/search/query.rb +296 -0
  32. data/lib/naranya_ecm/search/results.rb +161 -0
  33. data/lib/naranya_ecm/search.rb +14 -0
  34. data/lib/naranya_ecm/site_from_configuration.rb +15 -0
  35. data/lib/naranya_ecm-sdk/version.rb +3 -0
  36. data/lib/naranya_ecm-sdk.rb +84 -0
  37. data/naranya_ecm-sdk.gemspec +33 -0
  38. data/spec/models/category_spec.rb +11 -0
  39. data/spec/models/content_spec.rb +11 -0
  40. data/spec/models/content_version_spec.rb +7 -0
  41. data/spec/models/download_authorization.rb +7 -0
  42. data/spec/models/media_spec.rb +7 -0
  43. data/spec/models/module_spec.rb +18 -0
  44. data/spec/spec_helper.rb +47 -0
  45. data/spec/support/naranya_ecms_shared_specs.rb +33 -0
  46. metadata +236 -0
@@ -0,0 +1,161 @@
1
+ module NaranyaEcm
2
+ module Search
3
+ class Results
4
+
5
+ DEFAULT_MATERIALIZER = Proc.new do |resource_class, hits|
6
+
7
+ # Extract the object ids for ActiveResource loading:
8
+ unloaded_resource_ids = hits.map(&:id)
9
+
10
+ materialized_elements = []
11
+
12
+ # Load from cache any matching element caching_key:
13
+ hits.each do |hit|
14
+ cached_element = resource_class.find_cached(resource_class.cache_key_for id: hit.id, timestamp: hit.updated_at)
15
+ if cached_element.present?
16
+ cached_element.merge_search_hit_data(hit)
17
+ materialized_elements << cached_element
18
+ unloaded_resource_ids.delete cached_element.id
19
+ end
20
+ end
21
+
22
+ # Load from server all elements not in cache:
23
+ resource_class.find(:all, params: { id: unloaded_resource_ids }).each do |element|
24
+ hit = hits.detect { |hit| hit.id == element.id }
25
+
26
+ # Add the hit score and order to each element:
27
+ element.merge_search_hit_data(hit)
28
+
29
+ # Add it to the loaded_elements:
30
+ materialized_elements << element
31
+ end unless unloaded_resource_ids.empty?
32
+
33
+ materialized_elements
34
+ end
35
+
36
+ include Enumerable
37
+ delegate :to_yaml, :all?, :each, to: :to_a
38
+
39
+ # The array of actual elements returned by index actions
40
+ attr_reader :elements, :resource_class
41
+
42
+ attr_accessor :materializer
43
+
44
+ def initialize(given_dsl, given_resource_class = nil)
45
+ @dsl, @resource_class = given_dsl, given_resource_class
46
+ end
47
+
48
+ def total_hits
49
+ do_search! unless @total_hits
50
+ @total_hits
51
+ end
52
+ alias_method :total_count, :total_hits
53
+
54
+ def hits
55
+ do_search! unless @hits
56
+ @hits
57
+ end
58
+
59
+ def count
60
+ hits.count
61
+ end
62
+
63
+ def any?
64
+ count > 0
65
+ end
66
+
67
+ def empty?
68
+ count < 1
69
+ end
70
+
71
+ def facts
72
+ do_search! unless @facts
73
+ @facts
74
+ end
75
+
76
+ def max_score
77
+ do_search! unless @max_score
78
+ @max_score
79
+ end
80
+
81
+ def query_process_time
82
+ do_search! unless @query_process_time
83
+ @query_process_time
84
+ end
85
+
86
+ def query_total_time
87
+ do_search! unless @query_total_time
88
+ @query_total_time
89
+ end
90
+
91
+ def materializer
92
+ @materializer || DEFAULT_MATERIALIZER
93
+ end
94
+
95
+ def to_a
96
+ materialize! unless @elements
97
+ elements
98
+ end
99
+
100
+ private
101
+
102
+ def do_search!
103
+
104
+ start_time = Time.now
105
+
106
+ # Strip '.json' from collection path:
107
+ search_path = resource_class.present? ? resource_class.collection_path.split('.').first : ''
108
+ search_path += '/_search'
109
+
110
+ search_site = URI(NaranyaEcm.options.site)
111
+
112
+ search_connection = Net::HTTP.new search_site.host, search_site.port
113
+
114
+ search_get_url = URI("#{search_site}#{search_path}")
115
+
116
+ search_request = Net::HTTP::Get.new search_get_url
117
+ search_request.body = ActiveSupport::JSON.encode @dsl
118
+
119
+ puts "curl --XGET '#{search_get_url}?pretty=true' -d '#{search_request.body}'"
120
+
121
+ # Use the class connection to get the search results,
122
+ # using any authentication / headers configured:
123
+ #search_response = connection.get(search_path, headers)
124
+ search_response = search_connection.request search_request
125
+
126
+ # Parse the search results:
127
+ @facts = ActiveSupport::JSON.decode(search_response.body)
128
+ .with_indifferent_access
129
+
130
+ # Obtain the query processing time, which is given in miliseconds as 'took' key:
131
+ @query_process_time = (Float(@facts.delete(:took)) / 1000)
132
+
133
+ result_hits = @facts.delete :hits
134
+
135
+ @total_hits = result_hits.delete :total
136
+ @max_score = result_hits.delete :max_score
137
+
138
+ @hits = result_hits[:hits].each_with_index.map { |ht, o| Hit.new(ht.merge(order: o)) }
139
+
140
+ @hits.freeze
141
+ @facts.freeze
142
+
143
+ @query_total_time = (Time.now - start_time)
144
+
145
+ end
146
+
147
+ def materialize!
148
+ # Call the materializer and:
149
+ # - Filter out elements that materialized as nulls
150
+ # - Order the elements by relevance
151
+ @elements = materializer.call(resource_class, hits)
152
+ .select { |materialized_element| materialized_element.present? }
153
+ .sort_by do |element|
154
+ element.search_order
155
+ end
156
+
157
+ end
158
+
159
+ end
160
+ end
161
+ end
@@ -0,0 +1,14 @@
1
+ require 'active_support/dependencies/autoload'
2
+
3
+ module NaranyaEcm
4
+ module Search
5
+
6
+ extend ActiveSupport::Autoload
7
+
8
+ autoload :Hit
9
+ autoload :Methods
10
+ autoload :Query
11
+ autoload :Results
12
+
13
+ end
14
+ end
@@ -0,0 +1,15 @@
1
+ require 'active_support/concern'
2
+
3
+ module NaranyaEcm
4
+
5
+ module SiteFromConfiguration
6
+
7
+ extend ActiveSupport::Concern
8
+
9
+ included do
10
+ self.site = NaranyaEcm.options.site
11
+ end
12
+
13
+ end
14
+
15
+ end
@@ -0,0 +1,3 @@
1
+ module NaranyaEcm
2
+ VERSION = "0.0.4"
3
+ end
@@ -0,0 +1,84 @@
1
+ require "naranya_ecm-sdk/version"
2
+
3
+ require 'active_support/time'
4
+ require 'active_support/configurable'
5
+ require 'active_support/dependencies/autoload'
6
+ require 'yaml'
7
+
8
+ require 'fog'
9
+
10
+
11
+ module NaranyaEcm
12
+
13
+ extend ActiveSupport::Autoload
14
+
15
+ autoload :Cache
16
+ autoload :Search
17
+
18
+ autoload :Lifecycles
19
+
20
+ autoload :Models
21
+ autoload :Behaviors
22
+
23
+ autoload :SiteFromConfiguration
24
+
25
+ include ActiveSupport::Configurable
26
+
27
+ include Models
28
+
29
+ DEFAULT_CONFIG = {
30
+ site: "http://ecm.naranya.net:5000",
31
+ }.freeze
32
+
33
+ class << self
34
+
35
+ def storage
36
+ @storage ||= Fog::Storage.new options['storage'].except('root_directory').symbolize_keys!
37
+ end
38
+
39
+ def root_directory
40
+ @root_directory ||= storage.directories.get(options['storage']['root_directory'])
41
+ end
42
+
43
+ def setup
44
+ yield config
45
+ end
46
+
47
+ def options
48
+ auto_conf unless config.present?
49
+ config.clone
50
+ end
51
+
52
+ def cache_key_for(attributes = {})
53
+ Cache::Key.new attributes
54
+ end
55
+
56
+ def load_config_from_yml(yml_path, env="production")
57
+ raise "YAML file doesn't extst" unless File.exist?(yml_path)
58
+ yml_config = DEFAULT_CONFIG.merge(YAML::load(ERB.new(File.read(yml_path)).result)[env])
59
+ setup { |config| yml_config.each { |key, val| config.send "#{key}=".to_sym, val } }
60
+ end
61
+
62
+ def cache
63
+ auto_conf unless config.present?
64
+ @cache ||= ActiveSupport::Cache.lookup_store *options[:cache]
65
+ end
66
+
67
+ protected
68
+
69
+ def auto_conf
70
+ # Cargar configuracion dentro del folder de config en Rails:
71
+ if defined?(Rails)
72
+ yml_path = File.join(Rails.root, 'config', 'naranya_ecm.yml')
73
+ load_config_from_yml(yml_path, Rails.env)
74
+
75
+ # Use the Rails cache:
76
+ @cache = Rails.cache
77
+ elsif File.exists?('./naranya_ecm.yml')
78
+ load_config_from_yml('./naranya_ecm.yml')
79
+ end
80
+ end
81
+
82
+ end
83
+
84
+ end
@@ -0,0 +1,33 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+
5
+ require 'naranya_ecm-sdk/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = "naranya_ecm-sdk"
9
+ spec.version = NaranyaEcm::VERSION
10
+ spec.authors = ["Roberto Quintanilla"]
11
+ spec.email = ["roberto.quintanilla@naranya.com"]
12
+ spec.summary = %q{Cliente Ruby de NaranyaEcm}
13
+ spec.description = %q{Cliente Ruby de NaranyaEcm}
14
+ spec.homepage = ""
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0")
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_dependency 'activesupport', '~> 4.0.2'
23
+ spec.add_dependency 'activemodel', '~> 4.0.2'
24
+ spec.add_dependency 'activeresource', '~> 4.0.0'
25
+ spec.add_dependency 'state_machine'
26
+ spec.add_dependency 'fog'
27
+
28
+ spec.add_development_dependency "bundler", "~> 1.5"
29
+ spec.add_development_dependency "rake"
30
+ spec.add_development_dependency "rspec", "~> 3.0.0.beta2"
31
+ spec.add_development_dependency "vcr"
32
+ spec.add_development_dependency "webmock", "~> 1.16"
33
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe NaranyaEcm::Category, vcr: true do
4
+
5
+ it_behaves_like "a NaranyaEcm resource"
6
+
7
+ it "responds to #names" do
8
+ expect(subject).to respond_to :names
9
+ end
10
+
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe NaranyaEcm::Content, vcr: true do
4
+
5
+ it_behaves_like "a NaranyaEcm resource"
6
+
7
+ it "responds to #titles" do
8
+ expect(subject).to respond_to :titles
9
+ end
10
+
11
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe NaranyaEcm::ContentVersion, vcr: true do
4
+
5
+ it_behaves_like "a NaranyaEcm resource"
6
+
7
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe NaranyaEcm::DownloadAuthorization, vcr: true do
4
+
5
+ it_behaves_like "a NaranyaEcm resource"
6
+
7
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe NaranyaEcm::Media, vcr: true do
4
+
5
+ it_behaves_like "a NaranyaEcm resource"
6
+
7
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe NaranyaEcm, vcr: true do
4
+
5
+ it "responds to #options" do
6
+ expect(subject).to respond_to :options
7
+ end
8
+
9
+ describe "options" do
10
+
11
+ subject { NaranyaEcm.options }
12
+
13
+ it "responds to #site" do
14
+ expect(subject).to respond_to :site
15
+ end
16
+ end
17
+
18
+ end
@@ -0,0 +1,47 @@
1
+ # This file is copied to spec/ when you run 'rails generate rspec:install'
2
+ ENV["RAILS_ENV"] ||= 'test'
3
+ # require File.expand_path("../dummy/config/environment", __FILE__)
4
+ # require 'rspec/rails'
5
+ # require 'rspec/autorun'
6
+
7
+ # Requires supporting ruby files with custom matchers and macros, etc, in
8
+ # spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
9
+ # run as spec files by default. This means that files in spec/support that end
10
+ # in _spec.rb will both be required and run as specs, causing the specs to be
11
+ # run twice. It is recommended that you do not name files matching this glob to
12
+ # end with _spec.rb. You can configure this pattern with with the --pattern
13
+ # option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
14
+ Dir[File.expand_path("../support/**/*.rb", __FILE__)].each { |f| require f }
15
+
16
+ # Checks for pending migrations before tests are run.
17
+ # If you are not using ActiveRecord, you can remove this line.
18
+ # ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
19
+
20
+
21
+ require 'vcr'
22
+ VCR.configure do |config|
23
+ config.cassette_library_dir = 'spec/recorded_responses'
24
+ config.hook_into :webmock #
25
+ config.configure_rspec_metadata!
26
+ config.default_cassette_options = { record: :new_episodes, erb: true }
27
+ end
28
+
29
+ require 'naranya_ecm'
30
+
31
+ RSpec.configure do |config|
32
+ # ## Mock Framework
33
+ #
34
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
35
+ #
36
+ # config.mock_with :mocha
37
+ # config.mock_with :flexmock
38
+ # config.mock_with :rr
39
+
40
+ # Run specs in random order to surface order dependencies. If you find an
41
+ # order dependency and want to debug it, you can fix the order by providing
42
+ # the seed, which is printed after each run.
43
+ # --seed 1234
44
+ config.order = "random"
45
+
46
+ end
47
+
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ shared_examples "a NaranyaEcm resource" do
4
+
5
+ describe "class" do
6
+
7
+ subject { described_class }
8
+
9
+ it "responds to #site" do
10
+ expect(subject).to respond_to :site
11
+ end
12
+
13
+ describe "#site" do
14
+ subject { described_class.site }
15
+
16
+ it "has the same URL as in the configuration options" do
17
+ expect(subject.to_s).to eq NaranyaEcm.options.site
18
+ end
19
+ end
20
+
21
+ it "responds to #find" do
22
+ expect(subject).to respond_to :find
23
+ end
24
+
25
+ end
26
+
27
+ describe "instance" do
28
+ it "responds to #id" do
29
+ expect(subject).to respond_to :id
30
+ end
31
+ end
32
+
33
+ end
metadata ADDED
@@ -0,0 +1,236 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: naranya_ecm-sdk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
+ platform: ruby
6
+ authors:
7
+ - Roberto Quintanilla
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-03-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 4.0.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 4.0.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: activemodel
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 4.0.2
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 4.0.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: activeresource
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 4.0.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 4.0.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: state_machine
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: fog
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: bundler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '1.5'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '1.5'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 3.0.0.beta2
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ~>
123
+ - !ruby/object:Gem::Version
124
+ version: 3.0.0.beta2
125
+ - !ruby/object:Gem::Dependency
126
+ name: vcr
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: webmock
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ~>
144
+ - !ruby/object:Gem::Version
145
+ version: '1.16'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ~>
151
+ - !ruby/object:Gem::Version
152
+ version: '1.16'
153
+ description: Cliente Ruby de NaranyaEcm
154
+ email:
155
+ - roberto.quintanilla@naranya.com
156
+ executables: []
157
+ extensions: []
158
+ extra_rdoc_files: []
159
+ files:
160
+ - .gitignore
161
+ - Gemfile
162
+ - LICENSE.txt
163
+ - README.md
164
+ - Rakefile
165
+ - dev/create_cvm.rb
166
+ - dev/init.rb
167
+ - dev/load_cvm.rb
168
+ - dev/search.rb
169
+ - lib/naranya_ecm-sdk.rb
170
+ - lib/naranya_ecm-sdk/version.rb
171
+ - lib/naranya_ecm/behaviors.rb
172
+ - lib/naranya_ecm/behaviors/localizable.rb
173
+ - lib/naranya_ecm/behaviors/timestampable.rb
174
+ - lib/naranya_ecm/cache.rb
175
+ - lib/naranya_ecm/cache/key.rb
176
+ - lib/naranya_ecm/cache/methods.rb
177
+ - lib/naranya_ecm/has_many_patch.rb
178
+ - lib/naranya_ecm/lifecycles.rb
179
+ - lib/naranya_ecm/lifecycles/content_lifecycle.rb
180
+ - lib/naranya_ecm/lifecycles/lifecycleable.rb
181
+ - lib/naranya_ecm/lifecycles/version_lifecycle.rb
182
+ - lib/naranya_ecm/models.rb
183
+ - lib/naranya_ecm/models/category.rb
184
+ - lib/naranya_ecm/models/content.rb
185
+ - lib/naranya_ecm/models/content_version.rb
186
+ - lib/naranya_ecm/models/download_authorization.rb
187
+ - lib/naranya_ecm/models/lifecycle.rb
188
+ - lib/naranya_ecm/models/media_resource.rb
189
+ - lib/naranya_ecm/search.rb
190
+ - lib/naranya_ecm/search/hit.rb
191
+ - lib/naranya_ecm/search/methods.rb
192
+ - lib/naranya_ecm/search/query.rb
193
+ - lib/naranya_ecm/search/results.rb
194
+ - lib/naranya_ecm/site_from_configuration.rb
195
+ - naranya_ecm-sdk.gemspec
196
+ - spec/models/category_spec.rb
197
+ - spec/models/content_spec.rb
198
+ - spec/models/content_version_spec.rb
199
+ - spec/models/download_authorization.rb
200
+ - spec/models/media_spec.rb
201
+ - spec/models/module_spec.rb
202
+ - spec/spec_helper.rb
203
+ - spec/support/naranya_ecms_shared_specs.rb
204
+ homepage: ''
205
+ licenses:
206
+ - MIT
207
+ metadata: {}
208
+ post_install_message:
209
+ rdoc_options: []
210
+ require_paths:
211
+ - lib
212
+ required_ruby_version: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - '>='
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ required_rubygems_version: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ requirements: []
223
+ rubyforge_project:
224
+ rubygems_version: 2.0.14
225
+ signing_key:
226
+ specification_version: 4
227
+ summary: Cliente Ruby de NaranyaEcm
228
+ test_files:
229
+ - spec/models/category_spec.rb
230
+ - spec/models/content_spec.rb
231
+ - spec/models/content_version_spec.rb
232
+ - spec/models/download_authorization.rb
233
+ - spec/models/media_spec.rb
234
+ - spec/models/module_spec.rb
235
+ - spec/spec_helper.rb
236
+ - spec/support/naranya_ecms_shared_specs.rb