Class: SRU::Client
- Inherits:
-
Object
- Object
- SRU::Client
- Defined in:
- lib/sru/client.rb
Overview
A client for issuing requests to a particular SRU server. SRU is a RESTlike information retrieval protocol detailed at www.loc.gov/standards/sru/
require 'sru'
client = SRU::Client.new 'http://sru.example.com'
# fetch a SRU::ExplainResponse object from the server
explain = client.explain
# issue a search and get back a SRU::SearchRetrieveResponse object
# which serves as an iterator
records = client.search_retrieve 'rosetta stone', :maximumRecords => 5
records.each {|record| puts record}
# issue a scan request and print out each term
client.scan('king tut', :maximumTerms => 12).each {|term| puts term}
Constant Summary collapse
- DEFAULT_SRU_VERSION =
'1.2'
Instance Attribute Summary collapse
-
#version ⇒ Object
Returns the value of attribute version.
Instance Method Summary collapse
-
#explain ⇒ Object
Send an explain request to the SRU server and return a SRU::ExplainResponse object.
-
#initialize(base, options = {}) ⇒ Client
constructor
creates a client object which will automatically perform an explain request to determine the version to be used in subsequent requests.
-
#scan(clause, options = {}) ⇒ Object
Send a scan request to the SRU server and return a SRU::ScanResponse object.
-
#search_retrieve(query, options = {}) ⇒ Object
Send a searchRetrieve request to the SRU server and return a SRU::SearchResponse object.
Constructor Details
#initialize(base, options = {}) ⇒ Client
creates a client object which will automatically perform an explain request to determine the version to be used in subsequent requests.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/sru/client.rb', line 35 def initialize(base,={}) @server = URI.parse base @parser = .fetch(:parser, 'rexml') case @parser when 'libxml' begin require 'rubygems' require 'libxml' rescue raise SRU::Exception, "unknown parser: #{@parser}", caller end when 'rexml' require 'rexml/document' require 'rexml/xpath' else raise SRU::Exception, "unknown parser: #{@parser}", caller end # stash this away for future requests @version = self.explain.version end |
Instance Attribute Details
#version ⇒ Object
Returns the value of attribute version.
30 31 32 |
# File 'lib/sru/client.rb', line 30 def version @version end |
Instance Method Details
#explain ⇒ Object
Send an explain request to the SRU server and return a SRU::ExplainResponse object.
client = SRU::Client.new ‘sru.example.com’ explain = client.explain
64 65 66 67 |
# File 'lib/sru/client.rb', line 64 def explain doc = get_doc(:operation => 'explain') return ExplainResponse.new(doc, @parser) end |
#scan(clause, options = {}) ⇒ Object
Send a scan request to the SRU server and return a SRU::ScanResponse object. You must supply the first parameter which is the searchClause. Other SRU options can be sent in a hash as the seond argument.
scan_response = client.scan 'title', :maximumTerms => 5
94 95 96 97 98 99 100 |
# File 'lib/sru/client.rb', line 94 def scan(clause, ={}) [:scanClause] = clause [:operation] = 'scan' [:maximumTerms] = 5 unless .has_key? :maximumTerms doc = get_doc() return ScanResponse.new(doc, @parser) end |
#search_retrieve(query, options = {}) ⇒ Object
Send a searchRetrieve request to the SRU server and return a SRU::SearchResponse object. The first argument is the required query option. Any remaining searchRetrieve options can be passed as an optional second argument.
client = SRU::Client.new 'http://example.com/sru'
response = client.search_retrieve 'mark twain', maximumRecords => 1
78 79 80 81 82 83 84 85 |
# File 'lib/sru/client.rb', line 78 def search_retrieve(query, ={}) [:query] = query [:operation] = 'searchRetrieve' [:maximumRecords] = 10 unless .has_key? :maximumRecords [:recordSchema] = 'dc' unless .has_key? :recordSchema doc = get_doc() return SearchResponse.new(doc, @parser) end |