Sha256: 053f96f0931282166b84b964477125be9dad27e7408c590895750674df0bc536
Contents?: true
Size: 1.4 KB
Versions: 1
Compression:
Stored size: 1.4 KB
Contents
require 'bento_search' class JournalTocsAdapter < Service def initialize(config) @bento_search_engine = 'umlaut_journal_tocs' @max_items = 40 super(config) end def service_types_generated return [ServiceTypeValue[:journal_tocs_bento]] end def handle(request) unless self.class.suitable_citation?(request) return request.dispatched(self, true) end searcher = BentoSearch.get_engine(@bento_search_engine) bento_results = searcher.fetch_by_issn(request.referent.issn) bento_results.slice!(@max_items, bento_results.length) # We store JSON serialization of results in the display_text field # of a single ServiceResponse, hacky but okay. if bento_results.length > 0 request.add_service_response( :service=>self, :service_data => bento_results.dump_to_json, :service_type_value => :journal_tocs_bento ) end return request.dispatched(self, true) rescue BentoSearch::FetchError => e Rails.logger.error("JournalTocsAdapter: Could not fetch results: #{e}") return request.dispatched(self, false, e) end # A class-method because we use it standalone in our resolve # section visbility logic. def self.suitable_citation?(request) # We do nothing for article-level, only journal-level # We can do nothing without ISSN. request.title_level_citation? && request.referent.issn.present? end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
umlaut_journal_tocs-0.0.1 | app/service_adaptors/journal_tocs_adapter.rb |