sru 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/sru/client.rb +20 -17
- data/test/tc_http_client_test.rb +1 -1
- data/test/tc_libxml_client_test.rb +0 -20
- data/test/tc_rexml_client_test.rb +0 -20
- metadata +17 -5
data/lib/sru/client.rb
CHANGED
@@ -33,19 +33,19 @@ module SRU
|
|
33
33
|
@server = URI.parse base
|
34
34
|
@parser = options.fetch(:parser, 'rexml')
|
35
35
|
case @parser
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
36
|
+
when 'libxml'
|
37
|
+
begin
|
38
|
+
require 'rubygems'
|
39
|
+
require 'libxml'
|
40
|
+
rescue
|
41
|
+
raise SRU::Exception, "unknown parser: #{@parser}", caller
|
42
|
+
end
|
43
|
+
when 'rexml'
|
44
|
+
require 'rexml/document'
|
45
|
+
require 'rexml/xpath'
|
46
|
+
else
|
47
|
+
raise SRU::Exception, "unknown parser: #{@parser}", caller
|
48
|
+
end
|
49
49
|
|
50
50
|
# stash this away for future requests
|
51
51
|
@version = self.explain.version
|
@@ -118,7 +118,11 @@ module SRU
|
|
118
118
|
# fetch the xml and build/return a document object from it
|
119
119
|
begin
|
120
120
|
res = Net::HTTP.start(uri.host, uri.port) {|http|
|
121
|
-
|
121
|
+
req = Net::HTTP::Get.new(uri.request_uri, { "Accept" => "text/xml, application/xml"})
|
122
|
+
if uri.user && uri.password
|
123
|
+
req.basic_auth uri.user, uri.password
|
124
|
+
end
|
125
|
+
http.request(req)
|
122
126
|
}
|
123
127
|
|
124
128
|
xml = res.body
|
@@ -126,10 +130,9 @@ module SRU
|
|
126
130
|
case @parser
|
127
131
|
when 'libxml'
|
128
132
|
xmlObj = LibXML::XML::Parser.string(xml)
|
129
|
-
|
133
|
+
# not sure why but the explain namespace does bad things to
|
130
134
|
# libxml
|
131
|
-
#xml = xml.gsub(' xmlns="http://explain.z3950.org/dtd/2.0/"', '')
|
132
|
-
|
135
|
+
#xml = xml.gsub(' xmlns="http://explain.z3950.org/dtd/2.0/"', '')
|
133
136
|
return xmlObj.parse
|
134
137
|
when 'rexml'
|
135
138
|
return REXML::Document.new(xml)
|
data/test/tc_http_client_test.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
class TCHTTPClientTests < Test::Unit::TestCase
|
2
2
|
def test_content_negotiation
|
3
|
-
client = SRU::Client.new 'http://viaf.org/search'
|
3
|
+
client = SRU::Client.new 'http://viaf.org/viaf/search'
|
4
4
|
assert_nothing_raised do
|
5
5
|
results = client.search_retrieve 'local.names any twain'
|
6
6
|
end
|
@@ -30,26 +30,6 @@ class TcLibxmlClientTests < Test::Unit::TestCase
|
|
30
30
|
results = client.search_retrieve 'twain'
|
31
31
|
assert_equal 10, results.entries.size
|
32
32
|
end
|
33
|
-
|
34
|
-
# need to find a target that supports scan so we can exercise it
|
35
|
-
#def test_scan
|
36
|
-
# # this scan response appears to be canned might need to change
|
37
|
-
# client = SRU::Client.new 'http://tweed.lib.ed.ac.uk:8080/elf/search/copac'
|
38
|
-
# scan = client.scan('foobar')
|
39
|
-
# assert scan.entries.size > 0
|
40
|
-
# assert_equal SRU::Term, scan.entries[0].class
|
41
|
-
# assert_equal 'low', scan.entries[0].value
|
42
|
-
# assert_equal '1', scan.entries[0].number_of_records
|
43
|
-
#end
|
44
|
-
|
45
|
-
def test_xml_exception
|
46
|
-
assert_raise(SRU::Exception) {SRU::Client.new 'http://www.google.com'}
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_http_exception
|
50
|
-
assert_raise(SRU::Exception) {SRU::Client.new 'http://example.com'}
|
51
|
-
end
|
52
|
-
|
53
33
|
end
|
54
34
|
|
55
35
|
|
@@ -30,26 +30,6 @@ class TCRexmlClientTests < Test::Unit::TestCase
|
|
30
30
|
results = client.search_retrieve 'twain'
|
31
31
|
assert_equal 10, results.entries.size
|
32
32
|
end
|
33
|
-
|
34
|
-
# need to find a target that supports scan so we can exercise it
|
35
|
-
#def test_scan
|
36
|
-
# # this scan response appears to be canned might need to change
|
37
|
-
# client = SRU::Client.new 'http://tweed.lib.ed.ac.uk:8080/elf/search/copac'
|
38
|
-
# scan = client.scan('foobar')
|
39
|
-
# assert scan.entries.size > 0
|
40
|
-
# assert_equal SRU::Term, scan.entries[0].class
|
41
|
-
# assert_equal 'low', scan.entries[0].value
|
42
|
-
# assert_equal '1', scan.entries[0].number_of_records
|
43
|
-
#end
|
44
|
-
|
45
|
-
def test_xml_exception
|
46
|
-
assert_raise(SRU::Exception) {SRU::Client.new 'http://www.google.com'}
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_http_exception
|
50
|
-
assert_raise(SRU::Exception) {SRU::Client.new 'http://example.com'}
|
51
|
-
end
|
52
|
-
|
53
33
|
end
|
54
34
|
|
55
35
|
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sru
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 15
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 8
|
10
|
+
version: 0.0.8
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Ed Summers
|
@@ -9,7 +15,7 @@ autorequire: sru
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date:
|
18
|
+
date: 2011-04-11 00:00:00 -04:00
|
13
19
|
default_executable:
|
14
20
|
dependencies: []
|
15
21
|
|
@@ -44,21 +50,27 @@ rdoc_options: []
|
|
44
50
|
require_paths:
|
45
51
|
- lib
|
46
52
|
required_ruby_version: !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
47
54
|
requirements:
|
48
55
|
- - ">="
|
49
56
|
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
58
|
+
segments:
|
59
|
+
- 0
|
50
60
|
version: "0"
|
51
|
-
version:
|
52
61
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
+
none: false
|
53
63
|
requirements:
|
54
64
|
- - ">="
|
55
65
|
- !ruby/object:Gem::Version
|
66
|
+
hash: 3
|
67
|
+
segments:
|
68
|
+
- 0
|
56
69
|
version: "0"
|
57
|
-
version:
|
58
70
|
requirements: []
|
59
71
|
|
60
72
|
rubyforge_project:
|
61
|
-
rubygems_version: 1.3.
|
73
|
+
rubygems_version: 1.3.7
|
62
74
|
signing_key:
|
63
75
|
specification_version: 3
|
64
76
|
summary: a Ruby library for Search and Retrieve by URL
|