Sha256: 54a10747dae679adb01760ad3ac24074a47e2fce53e508675d7a79ac942a2746

Contents?: true

Size: 1.41 KB

Versions: 31

Compression:

Stored size: 1.41 KB

Contents

module Qa::Authorities
  class Oclcts::GenericOclcAuthority < Base
    attr_reader :subauthority

    def initialize(subauthority)
      @subauthority = subauthority
    end
    include WebServiceBase

    def search(q)
      get_raw_response("prefix-query", q)
      r = []
      raw_response.xpath('sru:searchRetrieveResponse/sru:records/sru:record/sru:recordData', 'sru' => 'http://www.loc.gov/zing/srw/').each do |record|
        r.append("id" => record.xpath('Zthes/term/termId').first.content, "label" => record.xpath('Zthes/term/termName').first.content)
      end
      r
    end

    def find(id)
      get_raw_response("id-lookup", id)
      parse_full_record(id)
    end

    private

      def parse_full_record(id)
        a = {}
        zthes_record = raw_response.xpath("sru:searchRetrieveResponse/sru:records/sru:record/sru:recordData/Zthes/term[termId='#{id}']", 'sru' => 'http://www.loc.gov/zing/srw/')
        zthes_record.children.each do |child|
          a[child.name] = child.children.first.to_s if (child.is_a? Nokogiri::XML::Element) && !child.children.nil? && (child.children.size == 1) && (child.children.first.is_a? Nokogiri::XML::Text)
        end
        a
      end

      def get_raw_response(query_type, id)
        query_url = Oclcts.url_pattern(query_type).gsub("{query}", id).gsub("{id}", id).gsub("{authority-id}", subauthority)
        @raw_response = Nokogiri::XML(open(query_url))
      end
  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
qa-5.8.1 lib/qa/authorities/oclcts/generic_oclc_authority.rb
qa-5.8.0 lib/qa/authorities/oclcts/generic_oclc_authority.rb
qa-5.7.0 lib/qa/authorities/oclcts/generic_oclc_authority.rb
qa-5.6.0 lib/qa/authorities/oclcts/generic_oclc_authority.rb
qa-5.5.2 lib/qa/authorities/oclcts/generic_oclc_authority.rb
qa-4.3.0 lib/qa/authorities/oclcts/generic_oclc_authority.rb
qa-3.1.0 lib/qa/authorities/oclcts/generic_oclc_authority.rb
qa-2.3.0 lib/qa/authorities/oclcts/generic_oclc_authority.rb
qa-5.5.1 lib/qa/authorities/oclcts/generic_oclc_authority.rb
qa-5.5.0 lib/qa/authorities/oclcts/generic_oclc_authority.rb
qa-5.4.0 lib/qa/authorities/oclcts/generic_oclc_authority.rb
qa-5.3.1 lib/qa/authorities/oclcts/generic_oclc_authority.rb
qa-5.3.0 lib/qa/authorities/oclcts/generic_oclc_authority.rb
qa-5.2.0 lib/qa/authorities/oclcts/generic_oclc_authority.rb
qa-5.1.0 lib/qa/authorities/oclcts/generic_oclc_authority.rb
qa-5.0.0 lib/qa/authorities/oclcts/generic_oclc_authority.rb
qa-4.2.4 lib/qa/authorities/oclcts/generic_oclc_authority.rb
qa-4.2.3 lib/qa/authorities/oclcts/generic_oclc_authority.rb
qa-4.2.2 lib/qa/authorities/oclcts/generic_oclc_authority.rb
qa-4.2.1 lib/qa/authorities/oclcts/generic_oclc_authority.rb