Class: LD4L::WorksRDF::GetMetadataFromSolrQuery

Inherits:
Object
  • Object
show all
Defined in:
lib/ld4l/works_rdf/services/get_metadata_from_solr_query.rb

Class Method Summary collapse

Class Method Details

.call(solr_query_url, solr_field_translations, localname_prefix = "") ⇒ Object

Get display metadata via content negotiation from an Cornell Solr

Parameters:

  • uri (String, RDF::URI)

    for the work

Raises:

  • (ArgumentError)


11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/ld4l/works_rdf/services/get_metadata_from_solr_query.rb', line 11

def self.call( solr_query_url, solr_field_translations, localname_prefix="" )
  raise ArgumentError, 'solr_query_url argument must be a uri string'  unless solr_query_url.kind_of?(String)

  results  = LD4L::WorksRDF::GetSolrResultsFromSolrQuery.call(solr_query_url)
  return LD4L::WorksRDF::SetErrorInMetadata.call(solr_query_url,'ERROR: Unable to retrieve SOLR documents from URI') unless results && results.size > 0

  results_hash = Hash.from_xml(results)
  solr_docs = results_hash["response"]["result"]["doc"]
  solr_docs = [ solr_docs ] unless solr_docs.is_a? Array

   = []
  solr_docs.each do |solr_doc|
     << LD4L::WorksRDF::GetMetadataFromSolrDoc.call(solr_doc, solr_field_translations)
  end
  
end