Sha256: 04185117468ce5b72f54d88cff1fa900cf82002f661bf0829c29f52f1742827f

Contents?: true

Size: 897 Bytes

Versions: 23

Compression:

Stored size: 897 Bytes

Contents

require 'iiif/presentation'

module Spotlight
  module Resources
    # harvest Images from IIIF Manifest and turn them into a Spotlight::Resource
    # Note: IIIF API : http://iiif.io/api/presentation/2.0
    class IiifHarvester < Spotlight::Resource
      self.document_builder_class = Spotlight::Resources::IiifBuilder
      self.weight = -5000

      validate :valid_url?

      def iiif_manifests
        @iiif_manifests ||= IiifService.parse(url)
      end

      private

      def valid_url?
        errors.add(:url, 'Invalid IIIF URL') unless url_is_iiif?(url)
      end

      def url_is_iiif?(url)
        valid_content_types = ['application/json', 'application/ld+json']
        req = Faraday.head(url)
        return unless req.success?
        valid_content_types.any? do |valid_type|
          req.headers['content-type'].include?(valid_type)
        end
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 2 rubygems

Version Path
blacklight-spotlight-2.0.0 app/models/spotlight/resources/iiif_harvester.rb
blacklight-spotlight-2.0.0.rc6 app/models/spotlight/resources/iiif_harvester.rb
blacklight-spotlight-2.0.0.rc5 app/models/spotlight/resources/iiif_harvester.rb
blacklight-spotlight-2.0.0.rc4 app/models/spotlight/resources/iiif_harvester.rb
blacklight-spotlight-2.0.0.rc3 app/models/spotlight/resources/iiif_harvester.rb
blacklight-spotlight-2.0.0.rc2 app/models/spotlight/resources/iiif_harvester.rb
blacklight-spotlight-2.0.0.rc1 app/models/spotlight/resources/iiif_harvester.rb
blacklight-spotlight-1.5.1 app/models/spotlight/resources/iiif_harvester.rb
blacklight-spotlight-1.4.1 app/models/spotlight/resources/iiif_harvester.rb
blacklight-spotlight-1.4.0 app/models/spotlight/resources/iiif_harvester.rb
blacklight-spotlight-1.3.0 app/models/spotlight/resources/iiif_harvester.rb
blacklight-spotlight-1.2.0 app/models/spotlight/resources/iiif_harvester.rb
blacklight-spotlight-1.1.0 app/models/spotlight/resources/iiif_harvester.rb
blacklight-spotlight-1.0.0 app/models/spotlight/resources/iiif_harvester.rb
blacklight-spotlight-1.0.0.alpha2 app/models/spotlight/resources/iiif_harvester.rb
blacklight-spotlight-1.0.0.alpha1 app/models/spotlight/resources/iiif_harvester.rb
blacklight-spotlight-0.34.1 app/models/spotlight/resources/iiif_harvester.rb
blacklight-spotlight-0.34.0 app/models/spotlight/resources/iiif_harvester.rb
blacklight-spotlight-0.33.3 app/models/spotlight/resources/iiif_harvester.rb
blacklight-spotlight-0.33.2 app/models/spotlight/resources/iiif_harvester.rb