From 123ebf0cacd69516f2e4035aed7affb0f385031a Mon Sep 17 00:00:00 2001 From: Justin Coyne Date: Mon, 13 May 2019 10:40:03 -0500 Subject: [PATCH] Remove the Dor::MetadataService This has been moved to dor-services-app --- dor-services.gemspec | 1 - .../metadata_handlers/catalog_handler.rb | 27 -------- lib/dor/services/metadata_service.rb | 64 ----------------- lib/dor/version.rb | 2 +- spec/fixtures/mods_record.xml | 69 ------------------- spec/services/metadata_service_spec.rb | 39 ----------- 6 files changed, 1 insertion(+), 201 deletions(-) delete mode 100644 lib/dor/services/metadata_handlers/catalog_handler.rb delete mode 100644 lib/dor/services/metadata_service.rb delete mode 100644 spec/fixtures/mods_record.xml delete mode 100644 spec/services/metadata_service_spec.rb diff --git a/dor-services.gemspec b/dor-services.gemspec index ac5604a7..e18152c0 100644 --- a/dor-services.gemspec +++ b/dor-services.gemspec @@ -30,7 +30,6 @@ Gem::Specification.new do |s| s.add_dependency 'rest-client', '>= 1.7', '< 3' s.add_dependency 'retries', '~> 0.0.5' # used by the release tag service s.add_dependency 'rsolr', '>= 1.0.3', '< 3' - s.add_dependency 'ruby-cache', '~> 0.3.0' s.add_dependency 'rubydora', '~> 2.1' s.add_dependency 'solrizer', '~> 3.0' diff --git a/lib/dor/services/metadata_handlers/catalog_handler.rb b/lib/dor/services/metadata_handlers/catalog_handler.rb deleted file mode 100644 index cc6fd1cb..00000000 --- a/lib/dor/services/metadata_handlers/catalog_handler.rb +++ /dev/null @@ -1,27 +0,0 @@ -# frozen_string_literal: true - -require 'rest-client' - -module Dor - class CatalogHandler - def fetch(prefix, identifier) - client = RestClient::Resource.new(Dor::Config.metadata.catalog.url, - Dor::Config.metadata.catalog.user, - Dor::Config.metadata.catalog.pass) - params = "?#{prefix.chomp}=#{identifier.chomp}" - client[params].get - rescue RestClient::Exception => e - raise BadResponseFromCatalog, "#{e.class} - when contacting (with BasicAuth hidden): #{Dor::Config.metadata.catalog.url}#{params}" - end - - def label(metadata) - mods = Nokogiri::XML(metadata) - mods.root.add_namespace_definition('mods', 'http://www.loc.gov/mods/v3') - mods.xpath('/mods:mods/mods:titleInfo[1]').xpath('mods:title|mods:nonSort').collect(&:text).join(' ').strip - end - - def prefixes - %w(catkey barcode) - end - end -end diff --git a/lib/dor/services/metadata_service.rb b/lib/dor/services/metadata_service.rb deleted file mode 100644 index 43a29deb..00000000 --- a/lib/dor/services/metadata_service.rb +++ /dev/null @@ -1,64 +0,0 @@ -# frozen_string_literal: true - -require 'cache' -require 'dor/services/metadata_handlers/catalog_handler' - -module Dor - class MetadataError < RuntimeError; end - - class MetadataService - class << self - @@cache = Cache.new(nil, nil, 250, 300) - - def known_prefixes - handlers.keys - end - - def can_resolve?(identifier) - (prefix, _identifier) = identifier.split(/:/, 2) - handlers.key?(prefix.to_sym) - end - - # TODO: Return a prioritized list - def resolvable(identifiers) - identifiers.select { |identifier| can_resolve?(identifier) } - end - - def fetch(identifier) - @@cache.fetch(identifier) do - (prefix, identifier) = identifier.split(/:/, 2) - handler = handler_for(prefix) - handler.fetch(prefix, identifier) - end - end - - def label_for(identifier) - (prefix, identifier) = identifier.split(/:/, 2) - handler = handler_for(prefix) - handler.label(handler.fetch(prefix, identifier)) - end - - def handler_for(prefix) - handler = handlers[prefix.to_sym] - raise MetadataError, "Unknown metadata prefix: #{prefix}" if handler.nil? - - handler - end - - private - - def handlers - @handlers ||= {}.tap do |md_handlers| - # There's only one. If additional handlers are added, will need to be registered here. - register(CatalogHandler.new, md_handlers) - end - end - - def register(handler, md_handlers) - handler.prefixes.each do |prefix| - md_handlers[prefix.to_sym] = handler - end - end - end - end -end diff --git a/lib/dor/version.rb b/lib/dor/version.rb index 88a778f8..7451be2f 100644 --- a/lib/dor/version.rb +++ b/lib/dor/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Dor - VERSION = '7.1.0' + VERSION = '8.0.0.alpha' end diff --git a/spec/fixtures/mods_record.xml b/spec/fixtures/mods_record.xml deleted file mode 100644 index 5f5692b8..00000000 --- a/spec/fixtures/mods_record.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - The - isomorphism and thermal properties of the feldspars - - - Day, Arthur L. (Arthur Louis) - 1869- - - creator - - - - Allen, Eugene Thomas - 1864- - - - Iddings, Joseph Paxson - 1857-1920 - - - Becker, George F. (George Ferdinand) - 1847-1919 - - text - - - dcu - - - Washington, D.C - - Carnegie Institution of Washington - 1905 - 1905 - monographic - - - eng - - -
print
- 95 p. illus., XXVI (i.e. 27) pl. 27 cm. -
- Part I- Thermal study [by] Arthur L. Day and E. T. Allen. Part II- Optical study [by] J. P. Iddings. With an introduction by George F. Becker. - - Crystallography - - - Feldspar - - QD931 .D27 - - - Carnegie Institution of Washington publication ; 31 - - - 05032416 - - DLC - 770104 - 19900306063726.0 - a45873 - -
\ No newline at end of file diff --git a/spec/services/metadata_service_spec.rb b/spec/services/metadata_service_spec.rb deleted file mode 100644 index 865ac8b5..00000000 --- a/spec/services/metadata_service_spec.rb +++ /dev/null @@ -1,39 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -describe Dor::MetadataService do - before :all do - @specdir = File.join(File.dirname(__FILE__), '..') - end - - it 'raises an exception if an unknown metadata type is requested' do - expect { described_class.fetch('foo:bar') }.to raise_exception(Dor::MetadataError) - end - - describe 'Symphony handler' do - before do - @mods = File.read(File.join(@specdir, 'fixtures', 'mods_record.xml')) - @mock_resource = double('catalog-resource', get: @mods) - allow(@mock_resource).to receive(:[]).and_return(@mock_resource) - expect(RestClient::Resource).to receive(:new).with(Dor::Config.metadata.catalog.url, - Dor::Config.metadata.catalog.user, - Dor::Config.metadata.catalog.pass).and_return(@mock_resource) - end - - it 'fetches a record based on barcode' do - expect(@mock_resource).to receive(:[]).with('?barcode=12345') - expect(described_class.fetch('barcode:12345')).to be_equivalent_to(@mods) - end - - it 'fetches a record based on catkey' do - expect(@mock_resource).to receive(:[]).with('?catkey=12345') - expect(described_class.fetch('catkey:12345')).to be_equivalent_to(@mods) - end - - it 'returns the MODS title as the label' do - expect(@mock_resource).to receive(:[]).with('?barcode=12345') - expect(described_class.label_for('barcode:12345')).to eq('The isomorphism and thermal properties of the feldspars') - end - end -end