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