spotlight-resources-iiif 0.1.1 → 0.2.0

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: 161fa9063aec3b247187e03c374fb0f7356a5a53
4
- data.tar.gz: 44b7cb182cae000c07f1b082d6408fa6dfeacd10
3
+ metadata.gz: 0a2b95680bb9651d8b35a91ab2b3033c364e6d76
4
+ data.tar.gz: 200c1bb77a16153ccfc99450550500769d54f124
5
5
  SHA512:
6
- metadata.gz: 4f1fcfe6b43b7207d1ec79121cff229235f0ff91585cf456b553e007c2cb17e53462990eb085503224d0ed6dcc7cd93d8010336ebc9bb14e0a336c851cf25992
7
- data.tar.gz: 8fb693cda9b050a66d06b9afcdcfe3b043ce5052224fceacb7a9ccda3652fa00497c2f7a709e6d1c2bd22909480864aa9ddb373b10e97afd0d279ceaace4b9f9
6
+ metadata.gz: e64dbe2c42cbccdaa946a3e608916132b1192e8c5036c562ae042cfa9321142c5b4b685b4e880a3a1f456e27076fb673d213e92a69227f4a4d22ab1e1d5963cd
7
+ data.tar.gz: 0b5cd3086783d8254389951e66b1a990d622cef9665686189e5c41e5d29651ec7595bf345f69af67050875e107afcbe20c64c49cb8464daa3a4ac62b27badd91
@@ -0,0 +1,5 @@
1
+ # Place any default configuration for solr_wrapper here
2
+ # port: 8983
3
+ collection:
4
+ dir: solr/conf/
5
+ name: blacklight-core
@@ -2,7 +2,7 @@ notifications:
2
2
  email: false
3
3
 
4
4
  rvm:
5
- - 2.2.3
5
+ - 2.3.1
6
6
 
7
7
  env:
8
8
  global:
@@ -13,3 +13,5 @@ language: ruby
13
13
 
14
14
  script:
15
15
  - bundle exec rake
16
+
17
+ jdk: oraclejdk8
data/Gemfile CHANGED
@@ -4,10 +4,10 @@ source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
6
  # BEGIN ENGINE_CART BLOCK
7
- # engine_cart: 0.8.0
8
- # engine_cart stanza: 0.8.0
7
+ # engine_cart: 0.10.0
8
+ # engine_cart stanza: 0.10.0
9
9
  # the below comes from engine_cart, a gem used to test this Rails engine gem in the context of a Rails app.
10
- file = File.expand_path("Gemfile", ENV['ENGINE_CART_DESTINATION'] || ENV['RAILS_ROOT'] || File.expand_path(".internal_test_app", File.dirname(__FILE__)))
10
+ file = File.expand_path('Gemfile', ENV['ENGINE_CART_DESTINATION'] || ENV['RAILS_ROOT'] || File.expand_path('.internal_test_app', File.dirname(__FILE__)))
11
11
  if File.exist?(file)
12
12
  begin
13
13
  eval_gemfile file
@@ -18,13 +18,24 @@ if File.exist?(file)
18
18
  else
19
19
  Bundler.ui.warn "[EngineCart] Unable to find test application dependencies in #{file}, using placeholder dependencies"
20
20
 
21
- gem 'rails', ENV['RAILS_VERSION'] if ENV['RAILS_VERSION']
21
+ if ENV['RAILS_VERSION']
22
+ if ENV['RAILS_VERSION'] == 'edge'
23
+ gem 'rails', github: 'rails/rails'
24
+ ENV['ENGINE_CART_RAILS_OPTIONS'] = '--edge --skip-turbolinks'
25
+ else
26
+ gem 'rails', ENV['RAILS_VERSION']
27
+ end
28
+ end
22
29
 
23
- if ENV['RAILS_VERSION'].nil? || ENV['RAILS_VERSION'] =~ /^4.2/
24
- gem 'responders', "~> 2.0"
25
- gem 'sass-rails', ">= 5.0"
26
- else
27
- gem 'sass-rails', "< 5.0"
30
+ case ENV['RAILS_VERSION']
31
+ when /^4.2/
32
+ gem 'responders', '~> 2.0'
33
+ gem 'sass-rails', '>= 5.0'
34
+ gem 'coffee-rails', '~> 4.1.0'
35
+ when /^4.[01]/
36
+ gem 'sass-rails', '< 5.0'
28
37
  end
29
38
  end
30
39
  # END ENGINE_CART BLOCK
40
+
41
+ gem 'blacklight-spotlight', github: 'projectblacklight/spotlight'
data/README.md CHANGED
@@ -20,6 +20,10 @@ Or install it yourself as:
20
20
 
21
21
  $ gem install spotlight-resources-iiif
22
22
 
23
+ Then run the engine's generator:
24
+
25
+ $ bundle exec rails generate spotlight:resources:iiif:install
26
+
23
27
  ## Usage
24
28
 
25
29
  This is a Rails engine gem to be used along with blacklight-spotlight, another Rails engine gem used to build exhibits sites while leveraging the blacklight Rails engine gem.
data/Rakefile CHANGED
@@ -17,23 +17,18 @@ RuboCop::RakeTask.new(:rubocop) do |task|
17
17
  task.options = ['-l'] # run lint cops only
18
18
  end
19
19
 
20
- ZIP_URL = "https://github.com/projectblacklight/blacklight-jetty/archive/v4.10.4.zip"
21
- require 'jettywrapper'
22
-
23
20
  require 'engine_cart/rake_task'
24
21
  EngineCart.fingerprint_proc = EngineCart.rails_fingerprint_proc
25
22
 
26
- require 'exhibits_solr_conf'
27
-
28
- desc 'Run tests in generated test Rails app with generated Solr instance running'
29
- task ci: ['engine_cart:generate', 'jetty:clean', 'exhibits:configure_solr'] do
23
+ task ci: ['engine_cart:generate'] do
24
+ require 'solr_wrapper'
30
25
  ENV['environment'] = 'test'
31
- jetty_params = Jettywrapper.load_config
32
- jetty_params[:startup_wait] = 60
33
26
 
34
- Jettywrapper.wrap(jetty_params) do
35
- # run the tests
36
- Rake::Task['spec'].invoke
27
+ SolrWrapper.wrap(port: '8983') do |solr|
28
+ solr.with_collection(name: 'blacklight-core', dir: File.join(File.expand_path(File.dirname(__FILE__)), 'solr', 'conf')) do
29
+ # run the tests
30
+ Rake::Task['spec'].invoke
31
+ end
37
32
  end
38
33
  end
39
34
 
@@ -42,18 +37,13 @@ task default: [:ci, :rubocop]
42
37
  desc 'Run generated test Rails app with generated Solr instance running'
43
38
  task :server do
44
39
  Rake::Task['engine_cart:generate'].invoke
40
+ require 'solr_wrapper'
45
41
 
46
- unless File.exist? 'jetty'
47
- Rake::Task['jetty:clean'].invoke
48
- Rake::Task['exhibits:configure_solr'].invoke
49
- end
50
-
51
- jetty_params = Jettywrapper.load_config
52
- jetty_params[:startup_wait]= 30
53
-
54
- Jettywrapper.wrap(jetty_params) do
55
- within_test_app do
56
- system "bundle exec rails s"
42
+ SolrWrapper.wrap(port: '8983') do |solr|
43
+ solr.with_collection(name: 'blacklight-core', dir: File.join(File.expand_path(File.dirname(__FILE__)), 'solr', 'conf')) do
44
+ within_test_app do
45
+ system 'bundle exec rails s'
46
+ end
57
47
  end
58
48
  end
59
49
  end
@@ -67,7 +57,7 @@ begin
67
57
  YARD::Rake::YardocTask.new(:doc) do |yt|
68
58
  yt.files = Dir.glob(File.join(project_root, 'lib', '**', '*.rb')) +
69
59
  [File.join(project_root, 'README.md')]
70
- yt.options = ['--output-dir', doc_dest_dir, '--readme', 'README.md', '--title', 'Stanford-Mods Documentation']
60
+ yt.options = ['--output-dir', doc_dest_dir, '--readme', 'README.md', '--title', 'Spotlight IIIF Resource Harvester Documentation']
71
61
  end
72
62
  rescue LoadError
73
63
  desc "Generate YARD Documentation"
@@ -1,31 +1,8 @@
1
1
  module Spotlight
2
2
  module Resources
3
- class IiifHarvesterController < Spotlight::ApplicationController
4
- before_action :authenticate_user!
5
-
6
- load_and_authorize_resource :exhibit, class: Spotlight::Exhibit
7
- before_action :build_resource
8
-
9
- def create
10
- if @resource.save_and_index
11
- redirect_to spotlight.admin_exhibit_catalog_index_path(current_exhibit, sort: :timestamp)
12
- else
13
- flash[:error] = @resource.errors.values.join(', ') if @resource.errors.present?
14
- redirect_to spotlight.new_exhibit_resource_path(current_exhibit)
15
- end
16
- end
17
-
18
- private
19
-
20
- def resource_params
21
- params.require(:resources_iiif_harvester).permit(:url)
22
- end
23
-
24
- def build_resource
25
- @resource ||= Spotlight::Resources::IiifHarvester.create(
26
- url: resource_params[:url],
27
- exhibit: current_exhibit
28
- )
3
+ class IiifHarvesterController < Spotlight::ResourcesController
4
+ def resource_class
5
+ Spotlight::Resources::IiifHarvester
29
6
  end
30
7
  end
31
8
  end
@@ -5,27 +5,17 @@ module Spotlight
5
5
  # harvest Images from IIIF Manifest and turn them into a Spotlight::Resource
6
6
  # Note: IIIF API : http://iiif.io/api/presentation/2.0
7
7
  class IiifHarvester < Spotlight::Resource
8
+ self.document_builder_class = Spotlight::Resources::IiifBuilder
8
9
  self.weight = -5000
9
10
 
10
11
  validate :valid_url?
11
12
 
12
- def to_solr
13
- return to_enum(:to_solr) { 0 } unless block_given?
14
-
15
- base_doc = super
16
- iiif_manifests.each do |manifest|
17
- manifest.with_exhibit(exhibit)
18
- manifest_solr = manifest.to_solr
19
- yield base_doc.merge(manifest_solr) if manifest_solr.present?
20
- end
21
- end
22
-
23
- private
24
-
25
13
  def iiif_manifests
26
14
  @iiif_manifests ||= IiifService.parse(url)
27
15
  end
28
16
 
17
+ private
18
+
29
19
  def valid_url?
30
20
  errors.add(:url, 'Invalid IIIF URL') unless url_is_iiif?(url)
31
21
  end
@@ -3,9 +3,11 @@ module Spotlight
3
3
  ##
4
4
  # A PORO to construct a solr hash for a given IiifManifest
5
5
  class IiifManifest
6
+ attr_reader :collection
6
7
  def initialize(attrs = {})
7
8
  @url = attrs[:url]
8
9
  @manifest = attrs[:manifest]
10
+ @collection = attrs[:collection]
9
11
  @solr_hash = {}
10
12
  end
11
13
 
@@ -13,9 +15,11 @@ module Spotlight
13
15
  add_document_id
14
16
  add_label
15
17
  add_thumbnail_url
18
+ add_full_image_urls
16
19
  add_manifest_url
17
20
  add_image_urls
18
21
  add_metadata
22
+ add_collection_id
19
23
  solr_hash
20
24
  end
21
25
 
@@ -23,19 +27,29 @@ module Spotlight
23
27
  @exhibit = e
24
28
  end
25
29
 
30
+ def compound_id
31
+ Digest::MD5.hexdigest("#{exhibit.id}-#{url}")
32
+ end
33
+
26
34
  private
27
35
 
28
36
  attr_reader :url, :manifest, :exhibit, :solr_hash
29
37
  delegate :blacklight_config, to: :exhibit
30
38
 
31
- def compound_id
32
- Digest::MD5.hexdigest("#{exhibit.id}-#{url}")
33
- end
34
-
35
39
  def add_document_id
36
40
  solr_hash[exhibit.blacklight_config.document_model.unique_key.to_sym] = compound_id
37
41
  end
38
42
 
43
+ def add_collection_id
44
+ if collection
45
+ solr_hash[collection_id_field] = [collection.compound_id]
46
+ end
47
+ end
48
+
49
+ def collection_id_field
50
+ Spotlight::Resources::Iiif::Engine.config.collection_id_field
51
+ end
52
+
39
53
  def add_manifest_url
40
54
  solr_hash[Spotlight::Resources::Iiif::Engine.config.iiif_manifest_field] = url
41
55
  end
@@ -45,6 +59,11 @@ module Spotlight
45
59
  solr_hash[thumbnail_field] = manifest['thumbnail']['@id']
46
60
  end
47
61
 
62
+ def add_full_image_urls
63
+ return unless full_image_field && full_image_url
64
+ solr_hash[full_image_field] = full_image_url
65
+ end
66
+
48
67
  def add_label
49
68
  return unless title_field && manifest.try(:label)
50
69
  solr_hash[title_field] = manifest.label
@@ -72,7 +91,7 @@ module Spotlight
72
91
 
73
92
  def create_sidecars_for(*keys)
74
93
  missing_keys(keys).each do |k|
75
- exhibit.custom_fields.create! label: k
94
+ exhibit.custom_fields.create! label: k, readonly_field: true
76
95
  end
77
96
  @exhibit_custom_fields = nil
78
97
  end
@@ -99,6 +118,10 @@ module Spotlight
99
118
  end
100
119
  end
101
120
 
121
+ def full_image_url
122
+ resources.first.try(:[], '@id')
123
+ end
124
+
102
125
  def resources
103
126
  @resources ||= sequences
104
127
  .flat_map(&:canvases)
@@ -114,6 +137,10 @@ module Spotlight
114
137
  blacklight_config.index.try(:thumbnail_field)
115
138
  end
116
139
 
140
+ def full_image_field
141
+ Spotlight::Engine.config.full_image_field
142
+ end
143
+
117
144
  def tile_source_field
118
145
  blacklight_config.show.try(:tile_source_field)
119
146
  end
@@ -20,10 +20,13 @@ module Spotlight
20
20
  [create_iiif_manifest(object)]
21
21
  else
22
22
  things = []
23
- things << create_iiif_manifest(object) if collection?
23
+ if collection?
24
+ self_manifest = create_iiif_manifest(object)
25
+ things << self_manifest
26
+ end
24
27
  (object.try(:manifests) || []).each do |manifest|
25
28
  things << create_iiif_manifest(
26
- self.class.new(manifest['@id']).object
29
+ self.class.new(manifest['@id']).object, self_manifest
27
30
  )
28
31
  end
29
32
  things
@@ -65,8 +68,8 @@ module Spotlight
65
68
  end
66
69
  end
67
70
 
68
- def create_iiif_manifest(manifest)
69
- IiifManifest.new(url: manifest['@id'], manifest: manifest)
71
+ def create_iiif_manifest(manifest, collection = nil)
72
+ IiifManifest.new(url: manifest['@id'], manifest: manifest, collection: collection)
70
73
  end
71
74
 
72
75
  def manifest?
@@ -0,0 +1,17 @@
1
+ module Spotlight
2
+ module Resources
3
+ # transforms a IiifHarvester into solr documents
4
+ class IiifBuilder < Spotlight::SolrDocumentBuilder
5
+ def to_solr
6
+ return to_enum(:to_solr) { 0 } unless block_given?
7
+
8
+ base_doc = super
9
+ resource.iiif_manifests.each do |manifest|
10
+ manifest.with_exhibit(exhibit)
11
+ manifest_solr = manifest.to_solr
12
+ yield base_doc.merge(manifest_solr) if manifest_solr.present?
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,4 +1,4 @@
1
- <%= bootstrap_form_for([spotlight_resources_iiif_engine, current_exhibit, Spotlight::Resources::IiifHarvester.new], layout: :horizontal, label_col: 'col-md-2', control_col: 'col-sm-6 col-md-6' ) do |f| %>
1
+ <%= bootstrap_form_for([spotlight_resources_iiif_engine, current_exhibit, @resource.becomes(Spotlight::Resources::IiifHarvester)], as: :resource, layout: :horizontal, label_col: 'col-md-2', control_col: 'col-sm-6 col-md-6' ) do |f| %>
2
2
  <%= f.text_field :url, help: t('.url-field.help'), label: t('.manifest') %>
3
3
  <div class="form-actions">
4
4
  <div class="primary-actions">
@@ -1,5 +1,5 @@
1
1
  Spotlight::Resources::Iiif::Engine.routes.draw do
2
2
  resources :exhibits, only: [] do
3
- resource :iiif_harvester, controller: :"spotlight/resources/iiif_harvester", only: :create, as: :resources_iiif_harvesters
3
+ resources :iiif_harvesters, controller: :"spotlight/resources/iiif_harvester", only: :create, as: 'resources_iiif_harvesters'
4
4
  end
5
5
  end
@@ -5,6 +5,7 @@ module Spotlight::Resources::Iiif
5
5
  Spotlight::Resources::Iiif::Engine.config.resource_partial = 'spotlight/resources/iiif/form'
6
6
  Spotlight::Resources::Iiif::Engine.config.metadata_class = -> { Spotlight::Resources::IiifManifest::Metadata }
7
7
  Spotlight::Resources::Iiif::Engine.config.iiif_manifest_field = :content_metadata_iiif_manifest_ssm
8
+ Spotlight::Resources::Iiif::Engine.config.collection_id_field = :collection_id_ssim
8
9
 
9
10
 
10
11
  initializer 'spotlight.resources.iiif.initialize' do
@@ -1,7 +1,7 @@
1
1
  module Spotlight
2
2
  module Resources
3
3
  module Iiif
4
- VERSION = "0.1.1"
4
+ VERSION = "0.2.0"
5
5
  end
6
6
  end
7
7
  end
@@ -0,0 +1,347 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <schema name="Hydra" version="1.5">
3
+ <!-- NOTE: various comments and unused configuration possibilities have been purged
4
+ from this file. Please refer to http://wiki.apache.org/solr/SchemaXml,
5
+ as well as the default schema file included with Solr -->
6
+
7
+ <uniqueKey>id</uniqueKey>
8
+
9
+ <fields>
10
+ <field name="id" type="string" stored="true" indexed="true" multiValued="false" required="true"/>
11
+ <field name="_version_" type="long" indexed="true" stored="true"/>
12
+ <field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>
13
+
14
+ <field name="lat" type="tdouble" stored="true" indexed="true" multiValued="false"/>
15
+ <field name="lng" type="tdouble" stored="true" indexed="true" multiValued="false"/>
16
+ <field name="original_pid_tesim" type="pid_text" stored="true" indexed="true" multiValued="true"/>
17
+
18
+ <field name="full_title_ng" type="text_en_ng" stored="false" indexed="true" multiValued="true"/>
19
+ <field name="id_ng" type="text_en_ng" stored="false" indexed="true" multiValued="false"/>
20
+
21
+ <dynamicField name="*_bbox" type="location_rpt" stored="true" indexed="true"/>
22
+ <!-- NOTE: not all possible Solr field types are represented in the dynamic fields -->
23
+
24
+ <!-- text (_t...) -->
25
+ <!--
26
+ <dynamicField name="*_ti" type="text" stored="false" indexed="true" multiValued="false"/>
27
+ <dynamicField name="*_tim" type="text" stored="false" indexed="true" multiValued="true"/>
28
+ -->
29
+ <dynamicField name="*_ts" type="text" stored="true" indexed="false" multiValued="false"/>
30
+ <dynamicField name="*_tsm" type="text" stored="true" indexed="false" multiValued="true"/>
31
+ <dynamicField name="*_tsi" type="text" stored="true" indexed="true" multiValued="false"/>
32
+ <dynamicField name="*_tsim" type="text" stored="true" indexed="true" multiValued="true"/>
33
+ <!--
34
+ <dynamicField name="*_tiv" type="text" stored="false" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
35
+ <dynamicField name="*_timv" type="text" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
36
+ -->
37
+ <dynamicField name="*_tsiv" type="text" stored="true" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
38
+ <dynamicField name="*_tsimv" type="text" stored="true" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
39
+
40
+ <!-- English text (_te...) -->
41
+ <!--
42
+ <dynamicField name="*_tei" type="text_en" stored="false" indexed="true" multiValued="false"/>
43
+ <dynamicField name="*_teim" type="text_en" stored="false" indexed="true" multiValued="true"/>
44
+ -->
45
+ <dynamicField name="*_tes" type="text_en" stored="true" indexed="false" multiValued="false"/>
46
+ <dynamicField name="*_tesm" type="text_en" stored="true" indexed="false" multiValued="true"/>
47
+ <dynamicField name="*_tesi" type="text_en" stored="true" indexed="true" multiValued="false"/>
48
+ <dynamicField name="*_tesim" type="text_en" stored="true" indexed="true" multiValued="true"/>
49
+ <!--
50
+ <dynamicField name="*_teiv" type="text_en" stored="false" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
51
+ <dynamicField name="*_teimv" type="text_en" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
52
+ -->
53
+ <dynamicField name="*_tesiv" type="text_en" stored="true" indexed="true" multiValued="false" termVectors="true" termPositions="true" termOffsets="true"/>
54
+ <dynamicField name="*_tesimv" type="text_en" stored="true" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
55
+
56
+ <!-- string (_s...) -->
57
+ <!--
58
+ <dynamicField name="*_si" type="string" stored="false" indexed="true" multiValued="false"/>
59
+ <dynamicField name="*_sim" type="string" stored="false" indexed="true" multiValued="true"/>
60
+ -->
61
+ <dynamicField name="*_ss" type="string" stored="true" indexed="false" multiValued="false"/>
62
+ <dynamicField name="*_ssm" type="string" stored="true" indexed="false" multiValued="true"/>
63
+ <dynamicField name="*_ssi" type="string" stored="true" indexed="true" multiValued="false"/>
64
+ <dynamicField name="*_ssim" type="string" stored="true" indexed="true" multiValued="true"/>
65
+ <!--
66
+ <dynamicField name="*_ssort" type="alphaSort" stored="false" indexed="true" multiValued="false"/>
67
+ -->
68
+
69
+ <!-- integer (_i...) -->
70
+ <!--
71
+ <dynamicField name="*_ii" type="int" stored="false" indexed="true" multiValued="false"/>
72
+ <dynamicField name="*_iim" type="int" stored="false" indexed="true" multiValued="true"/>
73
+ -->
74
+ <dynamicField name="*_is" type="int" stored="true" indexed="false" multiValued="false"/>
75
+ <dynamicField name="*_ism" type="int" stored="true" indexed="false" multiValued="true"/>
76
+ <dynamicField name="*_isi" type="int" stored="true" indexed="true" multiValued="false"/>
77
+ <dynamicField name="*_isim" type="int" stored="true" indexed="true" multiValued="true"/>
78
+
79
+ <!-- trie integer (_it...) (for faster range queries) -->
80
+ <!--
81
+ <dynamicField name="*_iti" type="tint" stored="false" indexed="true" multiValued="false"/>
82
+ <dynamicField name="*_itim" type="tint" stored="false" indexed="true" multiValued="true"/>
83
+ -->
84
+ <dynamicField name="*_its" type="tint" stored="true" indexed="false" multiValued="false"/>
85
+ <dynamicField name="*_itsm" type="tint" stored="true" indexed="false" multiValued="true"/>
86
+ <dynamicField name="*_itsi" type="tint" stored="true" indexed="true" multiValued="false"/>
87
+ <dynamicField name="*_itsim" type="tint" stored="true" indexed="true" multiValued="true"/>
88
+
89
+ <!-- date (_dt...) -->
90
+ <!-- The format for this date field is of the form 1995-12-31T23:59:59Z
91
+ Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z -->
92
+ <!--
93
+ <dynamicField name="*_dti" type="date" stored="false" indexed="true" multiValued="false"/>
94
+ <dynamicField name="*_dtim" type="date" stored="false" indexed="true" multiValued="true"/>
95
+ -->
96
+ <dynamicField name="*_dts" type="date" stored="true" indexed="false" multiValued="false"/>
97
+ <dynamicField name="*_dtsm" type="date" stored="true" indexed="false" multiValued="true"/>
98
+ <dynamicField name="*_dtsi" type="date" stored="true" indexed="true" multiValued="false"/>
99
+ <dynamicField name="*_dtsim" type="date" stored="true" indexed="true" multiValued="true"/>
100
+
101
+ <!-- trie date (_dtt...) (for faster range queries) -->
102
+ <!--
103
+ <dynamicField name="*_dtti" type="tdate" stored="false" indexed="true" multiValued="false"/>
104
+ <dynamicField name="*_dttim" type="tdate" stored="false" indexed="true" multiValued="true"/>
105
+ -->
106
+ <dynamicField name="*_dtts" type="tdate" stored="true" indexed="false" multiValued="false"/>
107
+ <dynamicField name="*_dttsm" type="tdate" stored="true" indexed="false" multiValued="true"/>
108
+ <dynamicField name="*_dttsi" type="tdate" stored="true" indexed="true" multiValued="false"/>
109
+ <dynamicField name="*_dttsim" type="tdate" stored="true" indexed="true" multiValued="true"/>
110
+
111
+ <!-- long (_l...) -->
112
+ <!--
113
+ <dynamicField name="*_li" type="long" stored="false" indexed="true" multiValued="false"/>
114
+ <dynamicField name="*_lim" type="long" stored="false" indexed="true" multiValued="true"/>
115
+ -->
116
+ <dynamicField name="*_ls" type="long" stored="true" indexed="false" multiValued="false"/>
117
+ <dynamicField name="*_lsm" type="long" stored="true" indexed="false" multiValued="true"/>
118
+ <dynamicField name="*_lsi" type="long" stored="true" indexed="true" multiValued="false"/>
119
+ <dynamicField name="*_lsim" type="long" stored="true" indexed="true" multiValued="true"/>
120
+
121
+ <!-- trie long (_lt...) (for faster range queries) -->
122
+ <!--
123
+ <dynamicField name="*_lti" type="tlong" stored="false" indexed="true" multiValued="false"/>
124
+ <dynamicField name="*_ltim" type="tlong" stored="false" indexed="true" multiValued="true"/>
125
+ -->
126
+ <dynamicField name="*_lts" type="tlong" stored="true" indexed="false" multiValued="false"/>
127
+ <dynamicField name="*_ltsm" type="tlong" stored="true" indexed="false" multiValued="true"/>
128
+ <dynamicField name="*_ltsi" type="tlong" stored="true" indexed="true" multiValued="false"/>
129
+ <dynamicField name="*_ltsim" type="tlong" stored="true" indexed="true" multiValued="true"/>
130
+
131
+ <!-- double (_db...) -->
132
+ <!--
133
+ <dynamicField name="*_dbi" type="double" stored="false" indexed="true" multiValued="false"/>
134
+ <dynamicField name="*_dbim" type="double" stored="false" indexed="true" multiValued="true"/>
135
+ -->
136
+ <dynamicField name="*_dbs" type="double" stored="true" indexed="false" multiValued="false"/>
137
+ <dynamicField name="*_dbsm" type="double" stored="true" indexed="false" multiValued="true"/>
138
+ <dynamicField name="*_dbsi" type="double" stored="true" indexed="true" multiValued="false"/>
139
+ <dynamicField name="*_dbsim" type="double" stored="true" indexed="true" multiValued="true"/>
140
+
141
+ <!-- trie double (_dbt...) (for faster range queries) -->
142
+ <!--
143
+ <dynamicField name="*_dbti" type="tdouble" stored="false" indexed="true" multiValued="false"/>
144
+ <dynamicField name="*_dbtim" type="tdouble" stored="false" indexed="true" multiValued="true"/>
145
+ -->
146
+ <dynamicField name="*_dbts" type="tdouble" stored="true" indexed="false" multiValued="false"/>
147
+ <dynamicField name="*_dbtsm" type="tdouble" stored="true" indexed="false" multiValued="true"/>
148
+ <dynamicField name="*_dbtsi" type="tdouble" stored="true" indexed="true" multiValued="false"/>
149
+ <dynamicField name="*_dbtsim" type="tdouble" stored="true" indexed="true" multiValued="true"/>
150
+
151
+ <!-- float (_f...) -->
152
+ <!--
153
+ <dynamicField name="*_fi" type="float" stored="false" indexed="true" multiValued="false"/>
154
+ <dynamicField name="*_fim" type="float" stored="false" indexed="true" multiValued="true"/>
155
+ -->
156
+ <dynamicField name="*_fs" type="float" stored="true" indexed="false" multiValued="false"/>
157
+ <dynamicField name="*_fsm" type="float" stored="true" indexed="false" multiValued="true"/>
158
+ <dynamicField name="*_fsi" type="float" stored="true" indexed="true" multiValued="false"/>
159
+ <dynamicField name="*_fsim" type="float" stored="true" indexed="true" multiValued="true"/>
160
+
161
+ <!-- trie float (_ft...) (for faster range queries) -->
162
+ <!--
163
+ <dynamicField name="*_fti" type="tfloat" stored="false" indexed="true" multiValued="false"/>
164
+ <dynamicField name="*_ftim" type="tfloat" stored="false" indexed="true" multiValued="true"/>
165
+ -->
166
+ <dynamicField name="*_fts" type="tfloat" stored="true" indexed="false" multiValued="false"/>
167
+ <dynamicField name="*_ftsm" type="tfloat" stored="true" indexed="false" multiValued="true"/>
168
+ <dynamicField name="*_ftsi" type="tfloat" stored="true" indexed="true" multiValued="false"/>
169
+ <dynamicField name="*_ftsim" type="tfloat" stored="true" indexed="true" multiValued="true"/>
170
+
171
+ <!-- boolean (_b...) -->
172
+ <!--
173
+ <dynamicField name="*_bi" type="boolean" stored="false" indexed="true" multiValued="false"/>
174
+ -->
175
+ <dynamicField name="*_bs" type="boolean" stored="true" indexed="false" multiValued="false"/>
176
+ <dynamicField name="*_bsi" type="boolean" stored="true" indexed="true" multiValued="false"/>
177
+
178
+ <!-- Type used to index the lat and lon components for the "location" FieldType -->
179
+ <!--
180
+ <dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="false" />
181
+ -->
182
+
183
+ <!-- location (_ll...) -->
184
+ <!--
185
+ <dynamicField name="*_lli" type="location" stored="false" indexed="true" multiValued="false"/>
186
+ <dynamicField name="*_llim" type="location" stored="false" indexed="true" multiValued="true"/>
187
+ -->
188
+ <dynamicField name="*_lls" type="location" stored="true" indexed="false" multiValued="false"/>
189
+ <dynamicField name="*_llsm" type="location" stored="true" indexed="false" multiValued="true"/>
190
+ <dynamicField name="*_llsi" type="location" stored="true" indexed="true" multiValued="false"/>
191
+ <dynamicField name="*_llsim" type="location" stored="true" indexed="true" multiValued="true"/>
192
+
193
+ <!-- you must define copyField source and dest fields explicity or schemaBrowser doesn't work -->
194
+ <field name="all_text_timv" type="text" stored="false" indexed="true" multiValued="true" termVectors="true" termPositions="true" termOffsets="true"/>
195
+
196
+
197
+ </fields>
198
+
199
+
200
+ <!-- Above, multiple source fields are copied to the [text] field.
201
+ Another way to map multiple source fields to the same
202
+ destination field is to use the dynamic field syntax.
203
+ copyField also supports a maxChars to copy setting. -->
204
+
205
+ <copyField source="id" dest="id_ng" maxChars="3000"/>
206
+ <copyField source="full_title_tesim" dest="full_title_ng" maxChars="3000"/>
207
+ <copyField source="*_tesim" dest="all_text_timv" maxChars="3000"/>
208
+
209
+ <types>
210
+ <fieldType name="string" class="solr.StrField" sortMissingLast="true" />
211
+ <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
212
+ <fieldType name="rand" class="solr.RandomSortField" omitNorms="true"/>
213
+
214
+ <!-- Default numeric field types. -->
215
+ <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
216
+ <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
217
+ <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
218
+ <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
219
+
220
+ <!-- trie numeric field types for faster range queries -->
221
+ <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
222
+ <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
223
+ <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
224
+ <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
225
+
226
+ <!-- The format for this date field is of the form 1995-12-31T23:59:59Z
227
+ Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
228
+ -->
229
+ <fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
230
+ <!-- A Trie based date field for faster date range queries and date faceting. -->
231
+ <fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/>
232
+
233
+
234
+ <!-- This point type indexes the coordinates as separate fields (subFields)
235
+ If subFieldType is defined, it references a type, and a dynamic field
236
+ definition is created matching *___<typename>. Alternately, if
237
+ subFieldSuffix is defined, that is used to create the subFields.
238
+ Example: if subFieldType="double", then the coordinates would be
239
+ indexed in fields myloc_0___double,myloc_1___double.
240
+ Example: if subFieldSuffix="_d" then the coordinates would be indexed
241
+ in fields myloc_0_d,myloc_1_d
242
+ The subFields are an implementation detail of the fieldType, and end
243
+ users normally should not need to know about them.
244
+ -->
245
+ <fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
246
+
247
+ <!-- A specialized field for geospatial search. If indexed, this fieldType must not be multivalued. -->
248
+ <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
249
+
250
+ <!-- An alternative geospatial field type new to Solr 4. It supports multiValued and polygon shapes.
251
+ For more information about this and other Spatial fields new to Solr 4, see:
252
+ http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4
253
+ -->
254
+ <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
255
+ geo="true" distErrPct="0.025" maxDistErr="0.000009" distanceUnits="degrees" />
256
+
257
+ <fieldType name="text" class="solr.TextField" omitNorms="false">
258
+ <analyzer>
259
+ <tokenizer class="solr.ICUTokenizerFactory"/>
260
+ <filter class="solr.ICUFoldingFilterFactory"/> <!-- NFKC, case folding, diacritics removed -->
261
+ <filter class="solr.TrimFilterFactory"/>
262
+ </analyzer>
263
+ </fieldType>
264
+
265
+ <!-- A text field that only splits on whitespace for exact matching of words -->
266
+ <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
267
+ <analyzer>
268
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
269
+ <filter class="solr.TrimFilterFactory"/>
270
+ </analyzer>
271
+ </fieldType>
272
+
273
+ <!-- single token analyzed text, for sorting. Punctuation is significant. -->
274
+ <fieldtype name="alphaSort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
275
+ <analyzer>
276
+ <tokenizer class="solr.KeywordTokenizerFactory" />
277
+ <filter class="solr.ICUFoldingFilterFactory"/>
278
+ <filter class="solr.TrimFilterFactory" />
279
+ </analyzer>
280
+ </fieldtype>
281
+
282
+ <!-- A text field with defaults appropriate for English -->
283
+ <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
284
+ <analyzer>
285
+ <tokenizer class="solr.ICUTokenizerFactory"/>
286
+ <filter class="solr.ICUFoldingFilterFactory"/> <!-- NFKC, case folding, diacritics removed -->
287
+ <filter class="solr.EnglishPossessiveFilterFactory"/>
288
+ <!-- EnglishMinimalStemFilterFactory is less aggressive than PorterStemFilterFactory: -->
289
+ <filter class="solr.EnglishMinimalStemFilterFactory"/>
290
+ <!--
291
+ <filter class="solr.PorterStemFilterFactory"/>
292
+ -->
293
+ <filter class="solr.TrimFilterFactory"/>
294
+ </analyzer>
295
+ </fieldType>
296
+
297
+ <!-- A text field with defaults appropriate for English an NGrams -->
298
+ <fieldType name="text_en_ng" class="solr.TextField" positionIncrementGap="100">
299
+ <analyzer type="index">
300
+ <tokenizer class="solr.ICUTokenizerFactory"/>
301
+ <filter class="solr.ICUFoldingFilterFactory"/> <!-- NFKC, case folding, diacritics removed -->
302
+ <filter class="solr.EnglishPossessiveFilterFactory"/>
303
+ <!-- EnglishMinimalStemFilterFactory is less aggressive than PorterStemFilterFactory: -->
304
+ <filter class="solr.EnglishMinimalStemFilterFactory"/>
305
+ <filter class="solr.TrimFilterFactory"/>
306
+ <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="15" />
307
+ </analyzer>
308
+
309
+ <analyzer type="index">
310
+ <tokenizer class="solr.ICUTokenizerFactory"/>
311
+ <filter class="solr.ICUFoldingFilterFactory"/> <!-- NFKC, case folding, diacritics removed -->
312
+ <filter class="solr.EnglishPossessiveFilterFactory"/>
313
+ <!-- EnglishMinimalStemFilterFactory is less aggressive than PorterStemFilterFactory: -->
314
+ <filter class="solr.EnglishMinimalStemFilterFactory"/>
315
+ <filter class="solr.TrimFilterFactory"/>
316
+ </analyzer>
317
+ </fieldType>
318
+
319
+ <fieldType name="pid_text" class="solr.TextField" positionIncrementGap="100">
320
+ <analyzer>
321
+ <tokenizer class="solr.KeywordTokenizerFactory"/>
322
+ </analyzer>
323
+ </fieldType>
324
+
325
+ <!-- queries for paths match documents at that path, or in descendent paths -->
326
+ <fieldType name="descendent_path" class="solr.TextField">
327
+ <analyzer type="index">
328
+ <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" />
329
+ </analyzer>
330
+ <analyzer type="query">
331
+ <tokenizer class="solr.KeywordTokenizerFactory" />
332
+ </analyzer>
333
+ </fieldType>
334
+
335
+ <!-- queries for paths match documents at that path, or in ancestor paths -->
336
+ <fieldType name="ancestor_path" class="solr.TextField">
337
+ <analyzer type="index">
338
+ <tokenizer class="solr.KeywordTokenizerFactory" />
339
+ </analyzer>
340
+ <analyzer type="query">
341
+ <tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="/" />
342
+ </analyzer>
343
+ </fieldType>
344
+
345
+ </types>
346
+
347
+ </schema>
@@ -0,0 +1,163 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <config>
3
+ <!-- NOTE: various comments and unused configuration possibilities have been purged
4
+ from this file. Please refer to http://wiki.apache.org/solr/SolrConfigXml,
5
+ as well as the default solrconfig file included with Solr -->
6
+
7
+ <abortOnConfigurationError>${solr.abortOnConfigurationError:true}</abortOnConfigurationError>
8
+
9
+ <luceneMatchVersion>6.1.0</luceneMatchVersion>
10
+
11
+ <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.StandardDirectoryFactory}"/>
12
+
13
+ <updateHandler class="solr.DirectUpdateHandler2">
14
+ <updateLog>
15
+ <str name="dir">${solr.core0.data.dir:}</str>
16
+ </updateLog>
17
+ </updateHandler>
18
+
19
+ <!-- solr lib dirs -->
20
+ <lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lib" />
21
+ <lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs" />
22
+
23
+ <dataDir>${solr.data.dir:}</dataDir>
24
+
25
+ <requestHandler name="search" class="solr.SearchHandler" default="true">
26
+ <!-- default values for query parameters can be specified, these
27
+ will be overridden by parameters in the request
28
+ -->
29
+ <lst name="defaults">
30
+ <str name="defType">edismax</str>
31
+ <str name="echoParams">explicit</str>
32
+ <str name="q.alt">*:*</str>
33
+ <str name="mm">2&lt;-1 5&lt;-2 6&lt;90%</str>
34
+ <int name="qs">1</int>
35
+ <int name="ps">2</int>
36
+ <float name="tie">0.01</float>
37
+ <!-- this qf and pf are used by default, if not otherwise specified by
38
+ client. The default blacklight_config will use these for the
39
+ "keywords" search. See the author_qf/author_pf, title_qf, etc
40
+ below, which the default blacklight_config will specify for
41
+ those searches. You may also be interested in:
42
+ http://wiki.apache.org/solr/LocalParams
43
+ -->
44
+ <str name="qf">
45
+ id
46
+ full_title_tesim
47
+ short_title_tesim
48
+ alternative_title_tesim
49
+ active_fedora_model_ssi
50
+ title_tesim
51
+ author_tesim
52
+ subject_tesim
53
+ all_text_timv
54
+ </str>
55
+ <str name="pf">
56
+ all_text_timv^10
57
+ </str>
58
+
59
+ <str name="author_qf">
60
+ author_tesim
61
+ </str>
62
+ <str name="author_pf">
63
+ </str>
64
+ <str name="title_qf">
65
+ title_tesim
66
+ full_title_tesim
67
+ short_title_tesim
68
+ alternative_title_tesim
69
+ </str>
70
+ <str name="title_pf">
71
+ </str>
72
+ <str name="subject_qf">
73
+ subject_tesim
74
+ </str>
75
+ <str name="subject_pf">
76
+ </str>
77
+
78
+ <str name="fl">
79
+ *,
80
+ score
81
+ </str>
82
+
83
+ <str name="facet">true</str>
84
+ <str name="facet.mincount">1</str>
85
+ <str name="facet.limit">10</str>
86
+ <str name="facet.field">active_fedora_model_ssi</str>
87
+ <str name="facet.field">subject_ssim</str>
88
+
89
+ <str name="spellcheck">true</str>
90
+ <str name="spellcheck.dictionary">default</str>
91
+ <str name="spellcheck.onlyMorePopular">true</str>
92
+ <str name="spellcheck.extendedResults">true</str>
93
+ <str name="spellcheck.collate">false</str>
94
+ <str name="spellcheck.count">5</str>
95
+
96
+ </lst>
97
+ <arr name="last-components">
98
+ <str>spellcheck</str>
99
+ </arr>
100
+ </requestHandler>
101
+
102
+ <requestHandler name="permissions" class="solr.SearchHandler" >
103
+ <lst name="defaults">
104
+ <str name="facet">off</str>
105
+ <str name="echoParams">all</str>
106
+ <str name="rows">1</str>
107
+ <str name="q">{!raw f=id v=$id}</str> <!-- use id=666 instead of q=id:666 -->
108
+ <str name="fl">
109
+ id,
110
+ access_ssim,
111
+ discover_access_group_ssim,discover_access_person_ssim,
112
+ read_access_group_ssim,read_access_person_ssim,
113
+ edit_access_group_ssim,edit_access_person_ssim,
114
+ depositor_ti,
115
+ embargo_release_date_dtsi
116
+ inheritable_access_ssim,
117
+ inheritable_discover_access_group_ssim,inheritable_discover_access_person_ssim,
118
+ inheritable_read_access_group_ssim,inheritable_read_access_person_ssim,
119
+ inheritable_edit_access_group_ssim,inheritable_edit_access_person_ssim,
120
+ inheritable_embargo_release_date_dtsi
121
+ </str>
122
+ </lst>
123
+ </requestHandler>
124
+
125
+ <requestHandler name="standard" class="solr.SearchHandler">
126
+ <lst name="defaults">
127
+ <str name="echoParams">explicit</str>
128
+ <str name="defType">lucene</str>
129
+ </lst>
130
+ </requestHandler>
131
+
132
+ <!-- for requests to get a single document; use id=666 instead of q=id:666 -->
133
+ <requestHandler name="document" class="solr.SearchHandler" >
134
+ <lst name="defaults">
135
+ <str name="echoParams">all</str>
136
+ <str name="fl">*</str>
137
+ <str name="rows">1</str>
138
+ <str name="q">{!raw f=id v=$id}</str> <!-- use id=666 instead of q=id:666 -->
139
+ </lst>
140
+ </requestHandler>
141
+
142
+
143
+ <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
144
+ <str name="queryAnalyzerFieldType">textSpell</str>
145
+ <!-- Multiple "Spell Checkers" can be declared and used by this component
146
+ (e.g. for title_spell field)
147
+ -->
148
+ <lst name="spellchecker">
149
+ <str name="name">default</str>
150
+ <str name="field">spell</str>
151
+ <str name="spellcheckIndexDir">./spell</str>
152
+ <str name="buildOnOptimize">true</str>
153
+ </lst>
154
+ </searchComponent>
155
+
156
+ <requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" />
157
+
158
+ <requestDispatcher handleSelect="true" >
159
+ <requestParsers enableRemoteStreaming="true" multipartUploadLimitInKB="2048" />
160
+ </requestDispatcher>
161
+
162
+ <requestHandler name="/analysis/field" startup="lazy" class="solr.FieldAnalysisRequestHandler" />
163
+ </config>
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "blacklight-spotlight"
21
+ spec.add_dependency "blacklight-spotlight", "~> 0.26"
22
22
  spec.add_dependency "faraday"
23
23
  spec.add_dependency "iiif-presentation"
24
24
 
@@ -30,12 +30,12 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency 'database_cleaner', '~> 1.3'
31
31
  # spec.add_development_dependency 'poltergeist', '>= 1.5.0' # for js testing using phantomjs
32
32
  spec.add_development_dependency "coveralls"
33
- spec.add_development_dependency "rubocop"
33
+ spec.add_development_dependency 'rubocop', '~> 0.37.2'
34
34
  spec.add_development_dependency "rubocop-rspec"
35
35
  spec.add_development_dependency "yard"
36
+ spec.add_development_dependency "riiif"
36
37
  spec.add_development_dependency "engine_cart"
37
- spec.add_development_dependency "jettywrapper"
38
- spec.add_development_dependency 'exhibits_solr_conf'
38
+ spec.add_development_dependency "solr_wrapper"
39
39
  # FIXME: we shouldn't need explicit sitemap_generator dependency here as it should come with spotlight
40
40
  # but travis fails without it (though tests run fine locally)
41
41
  # cbeer: "we’re injecting the dependency into the host app. maybe we’re just
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spotlight-resources-iiif
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Naomi Dushay
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2016-02-03 00:00:00.000000000 Z
12
+ date: 2016-08-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: blacklight-spotlight
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">="
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '0'
20
+ version: '0.26'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ">="
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '0'
27
+ version: '0.26'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: faraday
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -155,16 +155,16 @@ dependencies:
155
155
  name: rubocop
156
156
  requirement: !ruby/object:Gem::Requirement
157
157
  requirements:
158
- - - ">="
158
+ - - "~>"
159
159
  - !ruby/object:Gem::Version
160
- version: '0'
160
+ version: 0.37.2
161
161
  type: :development
162
162
  prerelease: false
163
163
  version_requirements: !ruby/object:Gem::Requirement
164
164
  requirements:
165
- - - ">="
165
+ - - "~>"
166
166
  - !ruby/object:Gem::Version
167
- version: '0'
167
+ version: 0.37.2
168
168
  - !ruby/object:Gem::Dependency
169
169
  name: rubocop-rspec
170
170
  requirement: !ruby/object:Gem::Requirement
@@ -194,7 +194,7 @@ dependencies:
194
194
  - !ruby/object:Gem::Version
195
195
  version: '0'
196
196
  - !ruby/object:Gem::Dependency
197
- name: engine_cart
197
+ name: riiif
198
198
  requirement: !ruby/object:Gem::Requirement
199
199
  requirements:
200
200
  - - ">="
@@ -208,7 +208,7 @@ dependencies:
208
208
  - !ruby/object:Gem::Version
209
209
  version: '0'
210
210
  - !ruby/object:Gem::Dependency
211
- name: jettywrapper
211
+ name: engine_cart
212
212
  requirement: !ruby/object:Gem::Requirement
213
213
  requirements:
214
214
  - - ">="
@@ -222,7 +222,7 @@ dependencies:
222
222
  - !ruby/object:Gem::Version
223
223
  version: '0'
224
224
  - !ruby/object:Gem::Dependency
225
- name: exhibits_solr_conf
225
+ name: solr_wrapper
226
226
  requirement: !ruby/object:Gem::Requirement
227
227
  requirements:
228
228
  - - ">="
@@ -262,6 +262,7 @@ files:
262
262
  - ".rspec"
263
263
  - ".rubocop.yml"
264
264
  - ".rubocop_todo.yml"
265
+ - ".solr_wrapper.yml"
265
266
  - ".travis.yml"
266
267
  - Gemfile
267
268
  - LICENSE.txt
@@ -271,6 +272,7 @@ files:
271
272
  - app/models/spotlight/resources/iiif_harvester.rb
272
273
  - app/models/spotlight/resources/iiif_manifest.rb
273
274
  - app/models/spotlight/resources/iiif_service.rb
275
+ - app/services/spotlight/resources/iiif_builder.rb
274
276
  - app/views/spotlight/resources/iiif/_form.html.erb
275
277
  - bin/console
276
278
  - bin/setup
@@ -281,6 +283,8 @@ files:
281
283
  - lib/spotlight/resources/iiif.rb
282
284
  - lib/spotlight/resources/iiif/engine.rb
283
285
  - lib/spotlight/resources/iiif/version.rb
286
+ - solr/conf/schema.xml
287
+ - solr/conf/solrconfig.xml
284
288
  - spotlight-resources-iiif.gemspec
285
289
  homepage: https://github.com/sul-dlss/spotlight-resources-iiif
286
290
  licenses:
@@ -302,9 +306,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
302
306
  version: '0'
303
307
  requirements: []
304
308
  rubyforge_project:
305
- rubygems_version: 2.4.5.1
309
+ rubygems_version: 2.5.1
306
310
  signing_key:
307
311
  specification_version: 4
308
312
  summary: Spotlight Resource Indexer for IIIF manifests or collections.
309
313
  test_files: []
310
- has_rdoc: