blacklight_oai_provider 0.0.2 → 0.1.0
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/Gemfile +6 -0
- data/Gemfile.lock +187 -0
- data/VERSION +1 -1
- data/blacklight_oai_provider.gemspec +7 -2
- data/lib/blacklight_oai_provider/controller_extension.rb +4 -4
- data/lib/blacklight_oai_provider/solr_document_wrapper.rb +5 -5
- data/spec/acceptance/blacklight_oai_provider_spec.rb +49 -0
- data/spec/integration/blacklight_stub_spec.rb +10 -0
- data/spec/internal/app/controllers/application_controller.rb +4 -0
- data/spec/internal/app/models/solr_document.rb +3 -0
- data/spec/internal/config/database.yml +3 -0
- data/spec/internal/config/routes.rb +6 -0
- data/spec/internal/config/solr.yml +18 -0
- data/spec/internal/db/combustion_test.sqlite +0 -0
- data/spec/internal/db/schema.rb +53 -0
- data/spec/internal/log/.gitignore +1 -0
- data/spec/internal/public/favicon.ico +0 -0
- data/spec/lib/solr_document_extension_spec.rb +6 -0
- data/spec/spec_helper.rb +47 -0
- data/spec/vcr_cassettes/solr.yml +113 -0
- metadata +139 -13
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
blacklight_oai_provider (0.0.2)
|
|
5
|
+
blacklight
|
|
6
|
+
oai
|
|
7
|
+
rails (~> 3.0)
|
|
8
|
+
|
|
9
|
+
GEM
|
|
10
|
+
remote: http://rubygems.org/
|
|
11
|
+
specs:
|
|
12
|
+
actionmailer (3.2.8)
|
|
13
|
+
actionpack (= 3.2.8)
|
|
14
|
+
mail (~> 2.4.4)
|
|
15
|
+
actionpack (3.2.8)
|
|
16
|
+
activemodel (= 3.2.8)
|
|
17
|
+
activesupport (= 3.2.8)
|
|
18
|
+
builder (~> 3.0.0)
|
|
19
|
+
erubis (~> 2.7.0)
|
|
20
|
+
journey (~> 1.0.4)
|
|
21
|
+
rack (~> 1.4.0)
|
|
22
|
+
rack-cache (~> 1.2)
|
|
23
|
+
rack-test (~> 0.6.1)
|
|
24
|
+
sprockets (~> 2.1.3)
|
|
25
|
+
activemodel (3.2.8)
|
|
26
|
+
activesupport (= 3.2.8)
|
|
27
|
+
builder (~> 3.0.0)
|
|
28
|
+
activerecord (3.2.8)
|
|
29
|
+
activemodel (= 3.2.8)
|
|
30
|
+
activesupport (= 3.2.8)
|
|
31
|
+
arel (~> 3.0.2)
|
|
32
|
+
tzinfo (~> 0.3.29)
|
|
33
|
+
activeresource (3.2.8)
|
|
34
|
+
activemodel (= 3.2.8)
|
|
35
|
+
activesupport (= 3.2.8)
|
|
36
|
+
activesupport (3.2.8)
|
|
37
|
+
i18n (~> 0.6)
|
|
38
|
+
multi_json (~> 1.0)
|
|
39
|
+
addressable (2.3.2)
|
|
40
|
+
arel (3.0.2)
|
|
41
|
+
blacklight (3.5.0)
|
|
42
|
+
compass-rails (~> 1.0.0)
|
|
43
|
+
compass-susy-plugin (>= 0.9.0)
|
|
44
|
+
kaminari
|
|
45
|
+
marc (>= 0.4.3, < 1.1)
|
|
46
|
+
nokogiri (~> 1.5)
|
|
47
|
+
rails (~> 3.1)
|
|
48
|
+
rsolr (~> 1.0.6)
|
|
49
|
+
rsolr-ext (~> 1.0.3)
|
|
50
|
+
sass-rails
|
|
51
|
+
unicode
|
|
52
|
+
builder (3.0.0)
|
|
53
|
+
capybara (1.1.2)
|
|
54
|
+
mime-types (>= 1.16)
|
|
55
|
+
nokogiri (>= 1.3.3)
|
|
56
|
+
rack (>= 1.0.0)
|
|
57
|
+
rack-test (>= 0.5.4)
|
|
58
|
+
selenium-webdriver (~> 2.0)
|
|
59
|
+
xpath (~> 0.1.4)
|
|
60
|
+
childprocess (0.3.5)
|
|
61
|
+
ffi (~> 1.0, >= 1.0.6)
|
|
62
|
+
chunky_png (1.2.6)
|
|
63
|
+
combustion (0.3.2)
|
|
64
|
+
rails (>= 3.0.0)
|
|
65
|
+
thor (>= 0.14.6)
|
|
66
|
+
compass (0.12.2)
|
|
67
|
+
chunky_png (~> 1.2)
|
|
68
|
+
fssm (>= 0.2.7)
|
|
69
|
+
sass (~> 3.1)
|
|
70
|
+
compass-rails (1.0.3)
|
|
71
|
+
compass (>= 0.12.2, < 0.14)
|
|
72
|
+
compass-susy-plugin (0.9)
|
|
73
|
+
compass (>= 0.11.1)
|
|
74
|
+
diff-lcs (1.1.3)
|
|
75
|
+
erubis (2.7.0)
|
|
76
|
+
fakeweb (1.3.0)
|
|
77
|
+
faraday (0.8.4)
|
|
78
|
+
multipart-post (~> 1.1)
|
|
79
|
+
faraday_middleware (0.8.8)
|
|
80
|
+
faraday (>= 0.7.4, < 0.9)
|
|
81
|
+
ffi (1.1.5)
|
|
82
|
+
fssm (0.2.9)
|
|
83
|
+
hike (1.2.1)
|
|
84
|
+
i18n (0.6.0)
|
|
85
|
+
journey (1.0.4)
|
|
86
|
+
json (1.7.4)
|
|
87
|
+
kaminari (0.13.0)
|
|
88
|
+
actionpack (>= 3.0.0)
|
|
89
|
+
activesupport (>= 3.0.0)
|
|
90
|
+
railties (>= 3.0.0)
|
|
91
|
+
libwebsocket (0.1.5)
|
|
92
|
+
addressable
|
|
93
|
+
mail (2.4.4)
|
|
94
|
+
i18n (>= 0.4.0)
|
|
95
|
+
mime-types (~> 1.16)
|
|
96
|
+
treetop (~> 1.4.8)
|
|
97
|
+
marc (0.5.0)
|
|
98
|
+
mime-types (1.19)
|
|
99
|
+
multi_json (1.3.6)
|
|
100
|
+
multipart-post (1.1.5)
|
|
101
|
+
nokogiri (1.5.5)
|
|
102
|
+
oai (0.2.1)
|
|
103
|
+
builder (>= 2.0.0)
|
|
104
|
+
faraday
|
|
105
|
+
faraday_middleware
|
|
106
|
+
polyglot (0.3.3)
|
|
107
|
+
rack (1.4.1)
|
|
108
|
+
rack-cache (1.2)
|
|
109
|
+
rack (>= 0.4)
|
|
110
|
+
rack-ssl (1.3.2)
|
|
111
|
+
rack
|
|
112
|
+
rack-test (0.6.1)
|
|
113
|
+
rack (>= 1.0)
|
|
114
|
+
rails (3.2.8)
|
|
115
|
+
actionmailer (= 3.2.8)
|
|
116
|
+
actionpack (= 3.2.8)
|
|
117
|
+
activerecord (= 3.2.8)
|
|
118
|
+
activeresource (= 3.2.8)
|
|
119
|
+
activesupport (= 3.2.8)
|
|
120
|
+
bundler (~> 1.0)
|
|
121
|
+
railties (= 3.2.8)
|
|
122
|
+
railties (3.2.8)
|
|
123
|
+
actionpack (= 3.2.8)
|
|
124
|
+
activesupport (= 3.2.8)
|
|
125
|
+
rack-ssl (~> 1.3.2)
|
|
126
|
+
rake (>= 0.8.7)
|
|
127
|
+
rdoc (~> 3.4)
|
|
128
|
+
thor (>= 0.14.6, < 2.0)
|
|
129
|
+
rake (0.9.2.2)
|
|
130
|
+
rdoc (3.12)
|
|
131
|
+
json (~> 1.4)
|
|
132
|
+
rsolr (1.0.8)
|
|
133
|
+
builder (>= 2.1.2)
|
|
134
|
+
rsolr-ext (1.0.3)
|
|
135
|
+
rsolr (>= 1.0.2)
|
|
136
|
+
rspec (2.11.0)
|
|
137
|
+
rspec-core (~> 2.11.0)
|
|
138
|
+
rspec-expectations (~> 2.11.0)
|
|
139
|
+
rspec-mocks (~> 2.11.0)
|
|
140
|
+
rspec-core (2.11.1)
|
|
141
|
+
rspec-expectations (2.11.2)
|
|
142
|
+
diff-lcs (~> 1.1.3)
|
|
143
|
+
rspec-mocks (2.11.2)
|
|
144
|
+
rspec-rails (2.11.0)
|
|
145
|
+
actionpack (>= 3.0)
|
|
146
|
+
activesupport (>= 3.0)
|
|
147
|
+
railties (>= 3.0)
|
|
148
|
+
rspec (~> 2.11.0)
|
|
149
|
+
rubyzip (0.9.9)
|
|
150
|
+
sass (3.2.1)
|
|
151
|
+
sass-rails (3.2.5)
|
|
152
|
+
railties (~> 3.2.0)
|
|
153
|
+
sass (>= 3.1.10)
|
|
154
|
+
tilt (~> 1.3)
|
|
155
|
+
selenium-webdriver (2.25.0)
|
|
156
|
+
childprocess (>= 0.2.5)
|
|
157
|
+
libwebsocket (~> 0.1.3)
|
|
158
|
+
multi_json (~> 1.0)
|
|
159
|
+
rubyzip
|
|
160
|
+
sprockets (2.1.3)
|
|
161
|
+
hike (~> 1.2)
|
|
162
|
+
rack (~> 1.0)
|
|
163
|
+
tilt (~> 1.1, != 1.3.0)
|
|
164
|
+
sqlite3 (1.3.6)
|
|
165
|
+
thor (0.16.0)
|
|
166
|
+
tilt (1.3.3)
|
|
167
|
+
treetop (1.4.10)
|
|
168
|
+
polyglot
|
|
169
|
+
polyglot (>= 0.3.1)
|
|
170
|
+
tzinfo (0.3.33)
|
|
171
|
+
unicode (0.4.3)
|
|
172
|
+
vcr (2.2.4)
|
|
173
|
+
xpath (0.1.4)
|
|
174
|
+
nokogiri (~> 1.3)
|
|
175
|
+
|
|
176
|
+
PLATFORMS
|
|
177
|
+
ruby
|
|
178
|
+
|
|
179
|
+
DEPENDENCIES
|
|
180
|
+
blacklight_oai_provider!
|
|
181
|
+
capybara
|
|
182
|
+
combustion
|
|
183
|
+
fakeweb
|
|
184
|
+
rspec
|
|
185
|
+
rspec-rails
|
|
186
|
+
sqlite3
|
|
187
|
+
vcr
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.0
|
|
1
|
+
0.1.0
|
|
@@ -6,7 +6,7 @@ Gem::Specification.new do |s|
|
|
|
6
6
|
s.version = BlacklightOaiProvider::VERSION
|
|
7
7
|
s.platform = Gem::Platform::RUBY
|
|
8
8
|
s.authors = ["Chris Beer"]
|
|
9
|
-
s.email = ["
|
|
9
|
+
s.email = ["chris@cbeer.info"]
|
|
10
10
|
s.homepage = "http://projectblacklight.org/"
|
|
11
11
|
s.summary = "Blacklight Oai Provider plugin"
|
|
12
12
|
|
|
@@ -19,6 +19,11 @@ Gem::Specification.new do |s|
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
s.add_dependency "rails", "~> 3.0"
|
|
22
|
-
s.add_dependency "blacklight"
|
|
22
|
+
s.add_dependency "blacklight", "~> 3.2"
|
|
23
23
|
s.add_dependency "oai"
|
|
24
|
+
s.add_development_dependency 'rspec'
|
|
25
|
+
s.add_development_dependency 'rspec-rails'
|
|
26
|
+
s.add_development_dependency 'capybara'
|
|
27
|
+
s.add_development_dependency 'vcr'
|
|
28
|
+
s.add_development_dependency 'fakeweb'
|
|
24
29
|
end
|
|
@@ -12,15 +12,15 @@ module BlacklightOaiProvider::ControllerExtension
|
|
|
12
12
|
# first found min/max from result set.
|
|
13
13
|
def oai
|
|
14
14
|
options = params.delete_if { |k,v| %w{controller action}.include?(k) }
|
|
15
|
-
render :text => oai_provider.process_request(options).gsub('<?xml version="1.0" encoding="UTF-8"?>', "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<?xml-stylesheet type=\"text/xsl\" href=\"#{ asset_path('oai2.xsl')}\" ?>"), :content_type => 'text/xml'
|
|
15
|
+
render :text => oai_provider.process_request(options).gsub('<?xml version="1.0" encoding="UTF-8"?>', "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<?xml-stylesheet type=\"text/xsl\" href=\"#{ ActionController::Base.helpers.asset_path('oai2.xsl')}\" ?>"), :content_type => 'text/xml'
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
# Uses Blacklight.config, needs to be modified when
|
|
19
19
|
# that changes to be controller-based. This is the only method
|
|
20
20
|
# in this plugin that accesses Blacklight.config, single point
|
|
21
|
-
# of contact.
|
|
22
|
-
def oai_config
|
|
23
|
-
|
|
21
|
+
# of contact.
|
|
22
|
+
def oai_config
|
|
23
|
+
blacklight_config.oai || {}
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
def oai_provider
|
|
@@ -16,18 +16,18 @@ module BlacklightOaiProvider
|
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
def earliest
|
|
19
|
-
Time.parse @controller.get_search_results(@controller.params, {:sort => @timestamp_field +' asc', :rows => 1}).last.first.get(@timestamp_field)
|
|
19
|
+
Time.parse @controller.get_search_results(@controller.params, {:fl => @timestamp_field, :sort => @timestamp_field +' asc', :rows => 1}).last.first.get(@timestamp_field)
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
def latest
|
|
23
|
-
Time.parse @controller.get_search_results(@controller.params, {:sort => @timestamp_field +' desc', :rows => 1}).last.first.get(@timestamp_field)
|
|
23
|
+
Time.parse @controller.get_search_results(@controller.params, {:fl => @timestamp_field, :sort => @timestamp_field +' desc', :rows => 1}).last.first.get(@timestamp_field)
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
def find(selector, options={})
|
|
27
27
|
return next_set(options[:resumption_token]) if options[:resumption_token]
|
|
28
28
|
|
|
29
29
|
if :all == selector
|
|
30
|
-
response, records = @controller.get_search_results(@controller.params, {:sort => @timestamp_field + ' asc', :
|
|
30
|
+
response, records = @controller.get_search_results(@controller.params, {:sort => @timestamp_field + ' asc', :rows => @limit})
|
|
31
31
|
|
|
32
32
|
if @limit && response.total >= @limit
|
|
33
33
|
return select_partial(OAI::Provider::ResumptionToken.new(options.merge({:last => 0})))
|
|
@@ -39,11 +39,11 @@ module BlacklightOaiProvider
|
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
def select_partial token
|
|
42
|
-
records = @controller.get_search_results(@controller.params, {:sort => @timestamp_field + ' asc', :
|
|
42
|
+
records = @controller.get_search_results(@controller.params, {:sort => @timestamp_field + ' asc', :rows => @limit, :start => token.last}).last
|
|
43
43
|
|
|
44
44
|
raise ::OAI::ResumptionTokenException.new unless records
|
|
45
45
|
|
|
46
|
-
OAI::Provider::PartialResult.new(records, token.next(token.last
|
|
46
|
+
OAI::Provider::PartialResult.new(records, token.next(token.last+@limit))
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
def next_set(token_string)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
describe 'Blacklight oai provider' do
|
|
5
|
+
use_vcr_cassette "solr"
|
|
6
|
+
before do
|
|
7
|
+
CatalogController.configure_blacklight do |config|
|
|
8
|
+
config.index.show_link = 'title_display'
|
|
9
|
+
config.default_solr_params = {
|
|
10
|
+
:rows => 10,
|
|
11
|
+
:fl => 'id, title_display, author_display, format, timestamp'
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
config.oai = {
|
|
15
|
+
:provider => {
|
|
16
|
+
:repository_name => 'Test',
|
|
17
|
+
:repository_url => 'http://localhost',
|
|
18
|
+
:record_prefix => '',
|
|
19
|
+
:admin_email => 'root@localhost'
|
|
20
|
+
},
|
|
21
|
+
:document => {
|
|
22
|
+
:timestamp => 'timestamp',
|
|
23
|
+
:limit => 25
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "root page" do
|
|
31
|
+
visit '/catalog/oai'
|
|
32
|
+
page.should have_content 'not a legal OAI-PMH verb'
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "identify page" do
|
|
36
|
+
visit '/catalog/oai?verb=Identify'
|
|
37
|
+
page.should have_content 'root@localhost'
|
|
38
|
+
page.should have_xpath('//earliestdatestamp', :content => '2012-08-01T16:49:55Z')
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "should list records" do
|
|
42
|
+
visit '/catalog/oai?verb=ListRecords'
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "document page" do
|
|
46
|
+
visit '/catalog/oai?verb=GetRecord&identifier=00282214'
|
|
47
|
+
page.should have_xpath('//title', :content => 'Fikr-i Ayāz')
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe 'Blacklight Test Application' do
|
|
4
|
+
it "should have a Blacklight module" do
|
|
5
|
+
Blacklight.should be_a_kind_of(Module)
|
|
6
|
+
end
|
|
7
|
+
it "should have a Catalog controller" do
|
|
8
|
+
CatalogController.blacklight_config.should be_a_kind_of(Blacklight::Configuration)
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# = jetty_path key
|
|
2
|
+
# each environment can have a jetty_path with absolute or relative
|
|
3
|
+
# (to app root) path to a jetty/solr install. This is used
|
|
4
|
+
# by the rake tasks that start up solr automatically for testing
|
|
5
|
+
# and by rake solr:marc:index.
|
|
6
|
+
#
|
|
7
|
+
# jetty_path is not used by a running Blacklight application
|
|
8
|
+
# at all. In general you do NOT need to deploy solr in Jetty, you can deploy it
|
|
9
|
+
# however you want.
|
|
10
|
+
# jetty_path is only required for rake tasks that need to know
|
|
11
|
+
# how to start up solr, generally for automated testing.
|
|
12
|
+
|
|
13
|
+
development:
|
|
14
|
+
url: http://127.0.0.1:8983/solr
|
|
15
|
+
test: &test
|
|
16
|
+
url: http://127.0.0.1:8983/solr
|
|
17
|
+
cucumber:
|
|
18
|
+
<<: *test
|
|
Binary file
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
# This file is auto-generated from the current state of the database. Instead
|
|
3
|
+
# of editing this file, please use the migrations feature of Active Record to
|
|
4
|
+
# incrementally modify your database, and then regenerate this schema definition.
|
|
5
|
+
#
|
|
6
|
+
# Note that this schema.rb definition is the authoritative source for your
|
|
7
|
+
# database schema. If you need to create the application database on another
|
|
8
|
+
# system, you should be using db:schema:load, not running all the migrations
|
|
9
|
+
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
|
|
10
|
+
# you'll amass, the slower it'll run and the greater likelihood for issues).
|
|
11
|
+
#
|
|
12
|
+
# It's strongly recommended to check this file into your version control system.
|
|
13
|
+
|
|
14
|
+
ActiveRecord::Schema.define(:version => 20111123152341) do
|
|
15
|
+
|
|
16
|
+
create_table "bookmarks", :force => true do |t|
|
|
17
|
+
t.integer "user_id", :null => false
|
|
18
|
+
t.string "document_id"
|
|
19
|
+
t.string "title"
|
|
20
|
+
t.datetime "created_at"
|
|
21
|
+
t.datetime "updated_at"
|
|
22
|
+
t.string "user_type"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
create_table "searches", :force => true do |t|
|
|
26
|
+
t.text "query_params"
|
|
27
|
+
t.integer "user_id"
|
|
28
|
+
t.datetime "created_at"
|
|
29
|
+
t.datetime "updated_at"
|
|
30
|
+
t.string "user_type"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
add_index "searches", ["user_id"], :name => "index_searches_on_user_id"
|
|
34
|
+
|
|
35
|
+
create_table "users", :force => true do |t|
|
|
36
|
+
t.string "email", :default => "", :null => false
|
|
37
|
+
t.string "encrypted_password", :limit => 128, :default => "", :null => false
|
|
38
|
+
t.string "reset_password_token"
|
|
39
|
+
t.datetime "reset_password_sent_at"
|
|
40
|
+
t.datetime "remember_created_at"
|
|
41
|
+
t.integer "sign_in_count", :default => 0
|
|
42
|
+
t.datetime "current_sign_in_at"
|
|
43
|
+
t.datetime "last_sign_in_at"
|
|
44
|
+
t.string "current_sign_in_ip"
|
|
45
|
+
t.string "last_sign_in_ip"
|
|
46
|
+
t.datetime "created_at"
|
|
47
|
+
t.datetime "updated_at"
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
add_index "users", ["email"], :name => "index_users_on_email", :unique => true
|
|
51
|
+
add_index "users", ["reset_password_token"], :name => "index_users_on_reset_password_token", :unique => true
|
|
52
|
+
|
|
53
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*.log
|
|
File without changes
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'bundler'
|
|
3
|
+
|
|
4
|
+
Bundler.require :default, :development
|
|
5
|
+
|
|
6
|
+
require 'blacklight/engine'
|
|
7
|
+
require 'blacklight_oai_provider/engine'
|
|
8
|
+
require 'rsolr'
|
|
9
|
+
require 'rsolr-ext'
|
|
10
|
+
require 'rsolr-ext/response'
|
|
11
|
+
require 'capybara/rspec'
|
|
12
|
+
Combustion.initialize!
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
# Setup blacklight environment
|
|
16
|
+
Blacklight.solr_config = { :url => 'http://127.0.0.1:8983/solr' }
|
|
17
|
+
CatalogController.send(:include, BlacklightOaiProvider::ControllerExtension)
|
|
18
|
+
|
|
19
|
+
class SolrDocument
|
|
20
|
+
include Blacklight::Solr::Document
|
|
21
|
+
include BlacklightOaiProvider::SolrDocumentExtension
|
|
22
|
+
use_extension( Blacklight::Solr::Document::DublinCore)
|
|
23
|
+
field_semantics.merge!(
|
|
24
|
+
:title => "title_display",
|
|
25
|
+
:author => "author_display",
|
|
26
|
+
:language => "language_facet",
|
|
27
|
+
:format => "format"
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
require 'vcr'
|
|
33
|
+
|
|
34
|
+
VCR.configure do |config|
|
|
35
|
+
config.hook_into :fakeweb
|
|
36
|
+
config.cassette_library_dir = 'spec/vcr_cassettes'
|
|
37
|
+
config.default_cassette_options = { :serialize_with => :syck }
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
require 'rspec/rails'
|
|
41
|
+
require 'capybara/rails'
|
|
42
|
+
|
|
43
|
+
RSpec.configure do |config|
|
|
44
|
+
config.extend VCR::RSpec::Macros
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
http_interactions:
|
|
3
|
+
- request:
|
|
4
|
+
method: get
|
|
5
|
+
uri: http://127.0.0.1:8983/solr/select?wt=ruby&rows=1&fl=timestamp&sort=timestamp+asc
|
|
6
|
+
body:
|
|
7
|
+
encoding: US-ASCII
|
|
8
|
+
string: ""
|
|
9
|
+
headers: {}
|
|
10
|
+
|
|
11
|
+
response:
|
|
12
|
+
status:
|
|
13
|
+
code: 200
|
|
14
|
+
message: OK
|
|
15
|
+
headers:
|
|
16
|
+
content-type:
|
|
17
|
+
- text/plain; charset=utf-8
|
|
18
|
+
connection:
|
|
19
|
+
- close
|
|
20
|
+
body:
|
|
21
|
+
encoding: UTF-8
|
|
22
|
+
string: "{'responseHeader'=>{'status'=>0,'QTime'=>2,'params'=>{'fl'=>'timestamp','sort'=>'timestamp asc','wt'=>'ruby','rows'=>'1'}},'response'=>{'numFound'=>30,'start'=>0,'docs'=>[{'timestamp'=>'2012-08-01T16:49:55.214Z'}]},'facet_counts'=>{'facet_queries'=>{},'facet_fields'=>{'format'=>['Book',30],'lc_1letter_facet'=>['B - Philosophy, Psychology, Religion',6,'D - World History',6,'H - Social Sciences',4,'P - Language & Literature',4,'M - Music',3,'K - Law',2,'E - History of the Americas (General)',1,'G - Geography, Anthropology, Recreation',1,'U - Military Science',1],'lc_alpha_facet'=>['DS',5,'BQ',3,'PK',3,'BP',2,'HQ',2,'KPC',2,'BM',1,'DK',1,'E',1,'G',1],'lc_b4cutter_facet'=>['KPC13',2,'BM520.88.A53',1,'BP161.3',1,'BP44',1,'BQ4036',1,'BQ5593.P3',1,'BQ7684.4',1,'DK861.K3',1,'DS274',1,'DS318.84.N87',1],'language_facet'=>['Tibetan',6,'Hebrew',3,'Korean',3,'Persian',3,'Sanskrit',3,'Urdu',3,'Arabic',2,'English',2,'Japanese',2,'Russian',2],'pub_date'=>['2008',4,'1976',2,'1986',2,'1990',2,'1997',2,'2000',2,'1941',1,'1946',1,'1952',1,'1962',1],'subject_era_facet'=>['20th century',3,'1997-',2,'21st century',2,'1990-',1,'2005-2015',1,'Koryo\xCC\x86 period, 935-1392',1],'subject_geo_facet'=>['India',2,'Iran',2,'Japan',2,'Bon-brgya (China)',1,'Bridgeton',1,'China',1,'Economic history',1,'Hong Kong (China)',1,'Islamic countries',1,'Israel',1],'subject_topic_facet'=>['Japanese drama',2,'Kubo, Sakae, 1901-1958',2,'Political plays, Japanese',2,'Theater',2,'Women',2,'Accident insurance',1,'Buddhism',1,'Delaware Indians',1,'Delaware women',1,'Education and state',1]},'facet_dates'=>{},'facet_ranges'=>{}}}"
|
|
23
|
+
http_version: "1.1"
|
|
24
|
+
recorded_at: Thu, 16 Aug 2012 20:43:20 GMT
|
|
25
|
+
- request:
|
|
26
|
+
method: get
|
|
27
|
+
uri: http://127.0.0.1:8983/solr/select?wt=ruby&rows=1&fl=timestamp&sort=timestamp+desc
|
|
28
|
+
body:
|
|
29
|
+
encoding: US-ASCII
|
|
30
|
+
string: ""
|
|
31
|
+
headers: {}
|
|
32
|
+
|
|
33
|
+
response:
|
|
34
|
+
status:
|
|
35
|
+
code: 200
|
|
36
|
+
message: OK
|
|
37
|
+
headers:
|
|
38
|
+
content-type:
|
|
39
|
+
- text/plain; charset=utf-8
|
|
40
|
+
connection:
|
|
41
|
+
- close
|
|
42
|
+
body:
|
|
43
|
+
encoding: UTF-8
|
|
44
|
+
string: "{'responseHeader'=>{'status'=>0,'QTime'=>3,'params'=>{'fl'=>'timestamp','sort'=>'timestamp desc','wt'=>'ruby','rows'=>'1'}},'response'=>{'numFound'=>30,'start'=>0,'docs'=>[{'timestamp'=>'2012-08-01T16:49:55.683Z'}]},'facet_counts'=>{'facet_queries'=>{},'facet_fields'=>{'format'=>['Book',30],'lc_1letter_facet'=>['B - Philosophy, Psychology, Religion',6,'D - World History',6,'H - Social Sciences',4,'P - Language & Literature',4,'M - Music',3,'K - Law',2,'E - History of the Americas (General)',1,'G - Geography, Anthropology, Recreation',1,'U - Military Science',1],'lc_alpha_facet'=>['DS',5,'BQ',3,'PK',3,'BP',2,'HQ',2,'KPC',2,'BM',1,'DK',1,'E',1,'G',1],'lc_b4cutter_facet'=>['KPC13',2,'BM520.88.A53',1,'BP161.3',1,'BP44',1,'BQ4036',1,'BQ5593.P3',1,'BQ7684.4',1,'DK861.K3',1,'DS274',1,'DS318.84.N87',1],'language_facet'=>['Tibetan',6,'Hebrew',3,'Korean',3,'Persian',3,'Sanskrit',3,'Urdu',3,'Arabic',2,'English',2,'Japanese',2,'Russian',2],'pub_date'=>['2008',4,'1976',2,'1986',2,'1990',2,'1997',2,'2000',2,'1941',1,'1946',1,'1952',1,'1962',1],'subject_era_facet'=>['20th century',3,'1997-',2,'21st century',2,'1990-',1,'2005-2015',1,'Koryo\xCC\x86 period, 935-1392',1],'subject_geo_facet'=>['India',2,'Iran',2,'Japan',2,'Bon-brgya (China)',1,'Bridgeton',1,'China',1,'Economic history',1,'Hong Kong (China)',1,'Islamic countries',1,'Israel',1],'subject_topic_facet'=>['Japanese drama',2,'Kubo, Sakae, 1901-1958',2,'Political plays, Japanese',2,'Theater',2,'Women',2,'Accident insurance',1,'Buddhism',1,'Delaware Indians',1,'Delaware women',1,'Education and state',1]},'facet_dates'=>{},'facet_ranges'=>{}}}"
|
|
45
|
+
http_version: "1.1"
|
|
46
|
+
recorded_at: Thu, 16 Aug 2012 20:43:20 GMT
|
|
47
|
+
- request:
|
|
48
|
+
method: get
|
|
49
|
+
uri: http://127.0.0.1:8983/solr/select?wt=ruby&rows=25&fl=id%2C+title_display%2C+author_display%2C+format%2C+timestamp&sort=timestamp+asc
|
|
50
|
+
body:
|
|
51
|
+
encoding: US-ASCII
|
|
52
|
+
string: ""
|
|
53
|
+
headers: {}
|
|
54
|
+
|
|
55
|
+
response:
|
|
56
|
+
status:
|
|
57
|
+
code: 200
|
|
58
|
+
message: OK
|
|
59
|
+
headers:
|
|
60
|
+
content-type:
|
|
61
|
+
- text/plain; charset=utf-8
|
|
62
|
+
connection:
|
|
63
|
+
- close
|
|
64
|
+
body:
|
|
65
|
+
encoding: ASCII-8BIT
|
|
66
|
+
string: "{'responseHeader'=>{'status'=>0,'QTime'=>2,'params'=>{'fl'=>'id, title_display, author_display, format, timestamp','sort'=>'timestamp asc','wt'=>'ruby','rows'=>'25'}},'response'=>{'numFound'=>30,'start'=>0,'docs'=>[{'author_display'=>'Ayaz, Shaikh, 1923-1997','format'=>'Book','title_display'=>'Fikr-i Aya\xCC\x84z','id'=>'00282214','timestamp'=>'2012-08-01T16:49:55.214Z'},{'author_display'=>'Ayaz, Shaikh, 1923-1997','format'=>'Book','title_display'=>'Sa\xCC\x84hiva\xCC\x84l jail ki\xCC\x84 d\xCC\xA3a\xCC\x84\xCA\xBCiri\xCC\x84','id'=>'00282371','timestamp'=>'2012-08-01T16:49:55.249Z'},{'title_display'=>'Naqdi\xCC\x84 bara\xCC\x84-yi tama\xCC\x84m-i fus\xCC\xA3u\xCC\x84l','id'=>'00313831','author_display'=>'Nu\xCC\x84ri\xCC\x84, \xCA\xBBAbd Alla\xCC\x84h, 1949-','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.276Z'},{'author_display'=>'Yoshida, Hajime, 1934-','format'=>'Book','title_display'=>'Kubo Sakae \"Kazanbaichi\" o yomu','id'=>'00314247','timestamp'=>'2012-08-01T16:49:55.307Z'},{'author_display'=>'Vi\xEF\xB8\xA0a\xEF\xB8\xA1tkin, M. P. (Mikhail Porfir\xCA\xB9evich), 1895-1967','format'=>'Book','title_display'=>'Ocherki po istorii Kazakhskoi\xCC\x86 SSR','id'=>'43037890','timestamp'=>'2012-08-01T16:49:55.322Z'},{'author_display'=>'Korea (North)','format'=>'Book','title_display'=>'Konstitut\xEF\xB8\xA0s\xEF\xB8\xA1ii\xEF\xB8\xA0a\xEF\xB8\xA1 i osnovnye zakonodatel\xCA\xB9nye akty Korei\xCC\x86skoi\xCC\x86 Narodno-Demokraticheskoi\xCC\x86 Respubliki','id'=>'53029833','timestamp'=>'2012-08-01T16:49:55.336Z'},{'title_display'=>'Koryo\xCC\x86 inmul yo\xCC\x86lcho\xCC\x86n','id'=>'77826928','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.353Z'},{'author_display'=>'Parikshit Sharma, Ogeti, 1930-','format'=>'Book','title_display'=>'Yas\xCC\x81odhara\xCC\x84-maha\xCC\x84ka\xCC\x84vyam','id'=>'78908283','timestamp'=>'2012-08-01T16:49:55.366Z'},{'author_display'=>'Is\xCC\xA3la\xCC\x84h\xCC\xA3i\xCC\x84, Ami\xCC\x84n Ah\xCC\xA3san, 1904-1997','format'=>'Book','title_display'=>'Pa\xCC\x84kista\xCC\x84ni\xCC\x84 \xCA\xBBaurat dora\xCC\x84he par','id'=>'79930185','timestamp'=>'2012-08-01T16:49:55.377Z'},{'author_display'=>'Na\xCC\x84ra\xCC\x84yan\xCC\xA3apan\xCC\xA3d\xCC\xA3ita, 17th cent','format'=>'Book','title_display'=>'A\xCC\x84s\xCC\x81les\xCC\xA3a\xCC\x84s\xCC\x81ataka of Na\xCC\x84ra\xCC\x84yan\xCC\xA3a Pan\xCC\xA3d\xCC\xA3ita','id'=>'85910001','timestamp'=>'2012-08-01T16:49:55.387Z'},{'title_display'=>'Shodede-yam Yehudiyim','id'=>'86207417','author_display'=>'Finkel, Chaim Jacob','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.402Z'},{'title_display'=>'A\xCC\x84shna\xCC\x84\xCA\xBCi\xCC\x84 ba\xCC\x84 h\xCC\xA3awzah\xCA\xB9ha\xCC\x84-yi \xCA\xBBilmi\xCC\x84yah-\xCA\xBCi Shi\xCC\x84\xCA\xBBah dar t\xCC\xA3u\xCC\x84l-i ta\xCC\x84ri\xCC\x84kh','id'=>'87931798','author_display'=>'Muvah\xCC\xA3h\xCC\xA3id Abt\xCC\xA3ah\xCC\xA3i\xCC\x84, H\xCC\xA3ujjat','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.419Z'},{'author_display'=>'Lomt\xCA\xBBat\xCA\xBBiz\xCC\x87e, C\xCC\x8Cola, 1879-1915','format'=>'Book','title_display'=>'Mrecvelobis mus\xCC\x8Cakis c\xCA\xBBxovrebis cesi','id'=>'90142413','timestamp'=>'2012-08-01T16:49:55.435Z'},{'title_display'=>'Pukhan po\xCC\x86mnyo\xCC\x86ngjip','id'=>'92117465','author_display'=>'Korea (North)','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.447Z'},{'title_display'=>'Sefer Mishnah berurah','id'=>'92828023','author_display'=>'Israel Meir, ha-Kohen, 1838-1933','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.464Z'},{'title_display'=>'Ajikto ku\xCC\x86ro\xCC\x86k cho\xCC\x86ro\xCC\x86k sasimnikka','id'=>'94120425','author_display'=>'Kim, Hong-sin, 1947-','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.488Z'},{'title_display'=>'Ma\xCA\xBBrakah-\xCA\xBCi jaha\xCC\x84n\xCA\xB9bi\xCC\x84ni\xCC\x84\xCA\xB9ha\xCC\x84','id'=>'96933325','author_display'=>'Raja\xCC\x84yi\xCC\x84, Farhang, 1952 or 3-','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.502Z'},{'author_display'=>'Na\xCC\x84ra\xCC\x84yan\xCC\xA3a Pan\xCC\xA3d\xCC\xA3ita\xCC\x84ca\xCC\x84rya, 13th cent','format'=>'Book','title_display'=>'Sumadhvavijayah\xCC\xA3','id'=>'2001417245','timestamp'=>'2012-08-01T16:49:55.515Z'},{'title_display'=>'al-H\xCC\xA3arb fi\xCC\x84 al-alfi\xCC\x84yah al-tha\xCC\x84lithah','id'=>'2003546302','author_display'=>'Wuld Mawla\xCC\x84y al-Zayn, Sayyid Muh\xCC\xA3ammad wuld Sayyid','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.529Z'},{'author_display'=>'Bstan-\xCA\xBCdzin-mkhas-grub, 1967-','format'=>'Book','title_display'=>'Bon-brgya\xCA\xBCi lo rgyus lugs gn\xCC\x83is gsal ba\xCA\xBCi me lon\xCC\x87 z\xCC\x81es bya ba bz\xCC\x81ugs so','id'=>'2004310986','timestamp'=>'2012-08-01T16:49:55.539Z'},{'title_display'=>'Thuqu\xCC\x84b fi\xCC\x84 \xCA\xBBaql al-ummah','id'=>'2005461726','author_display'=>'Abu\xCC\x84 al-Khayr, \xCA\xBBAli\xCC\x84 \xCA\xBBAbd al-H\xCC\xA3ami\xCC\x84d','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.551Z'},{'format'=>'Book','title_display'=>'Bituah\xCC\xA3 u-vit\xCC\xA3ah\xCC\xA3on sotsyali','id'=>'2005553155','timestamp'=>'2012-08-01T16:49:55.57Z'},{'title_display'=>'\"Strong Medicine speaks\"','id'=>'2007020969','author_display'=>'Hearth, Amy Hill, 1958-','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.59Z'},{'title_display'=>'Dris lan don gcig ma','id'=>'2008305903','author_display'=>'Dkon-mchog-rgya-mtsho, Ra-se, 1968-','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.602Z'},{'title_display'=>'Pluvial nectar of blessings','id'=>'2008308175','author_display'=>'N\xCC\x87ag-dban\xCC\x87-blo-bzan\xCC\x87-rgya-mtsho, Dalai Lama V, 1617-1682','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.621Z'}]},'facet_counts'=>{'facet_queries'=>{},'facet_fields'=>{'format'=>['Book',30],'lc_1letter_facet'=>['B - Philosophy, Psychology, Religion',6,'D - World History',6,'H - Social Sciences',4,'P - Language & Literature',4,'M - Music',3,'K - Law',2,'E - History of the Americas (General)',1,'G - Geography, Anthropology, Recreation',1,'U - Military Science',1],'lc_alpha_facet'=>['DS',5,'BQ',3,'PK',3,'BP',2,'HQ',2,'KPC',2,'BM',1,'DK',1,'E',1,'G',1],'lc_b4cutter_facet'=>['KPC13',2,'BM520.88.A53',1,'BP161.3',1,'BP44',1,'BQ4036',1,'BQ5593.P3',1,'BQ7684.4',1,'DK861.K3',1,'DS274',1,'DS318.84.N87',1],'language_facet'=>['Tibetan',6,'Hebrew',3,'Korean',3,'Persian',3,'Sanskrit',3,'Urdu',3,'Arabic',2,'English',2,'Japanese',2,'Russian',2],'pub_date'=>['2008',4,'1976',2,'1986',2,'1990',2,'1997',2,'2000',2,'1941',1,'1946',1,'1952',1,'1962',1],'subject_era_facet'=>['20th century',3,'1997-',2,'21st century',2,'1990-',1,'2005-2015',1,'Koryo\xCC\x86 period, 935-1392',1],'subject_geo_facet'=>['India',2,'Iran',2,'Japan',2,'Bon-brgya (China)',1,'Bridgeton',1,'China',1,'Economic history',1,'Hong Kong (China)',1,'Islamic countries',1,'Israel',1],'subject_topic_facet'=>['Japanese drama',2,'Kubo, Sakae, 1901-1958',2,'Political plays, Japanese',2,'Theater',2,'Women',2,'Accident insurance',1,'Buddhism',1,'Delaware Indians',1,'Delaware women',1,'Education and state',1]},'facet_dates'=>{},'facet_ranges'=>{}}}"
|
|
67
|
+
http_version: "1.1"
|
|
68
|
+
recorded_at: Thu, 16 Aug 2012 20:43:20 GMT
|
|
69
|
+
- request:
|
|
70
|
+
method: get
|
|
71
|
+
uri: http://127.0.0.1:8983/solr/select?wt=ruby&rows=25&fl=id%2C+title_display%2C+author_display%2C+format%2C+timestamp&sort=timestamp+asc&start=0
|
|
72
|
+
body:
|
|
73
|
+
encoding: US-ASCII
|
|
74
|
+
string: ""
|
|
75
|
+
headers: {}
|
|
76
|
+
|
|
77
|
+
response:
|
|
78
|
+
status:
|
|
79
|
+
code: 200
|
|
80
|
+
message: OK
|
|
81
|
+
headers:
|
|
82
|
+
content-type:
|
|
83
|
+
- text/plain; charset=utf-8
|
|
84
|
+
connection:
|
|
85
|
+
- close
|
|
86
|
+
body:
|
|
87
|
+
encoding: ASCII-8BIT
|
|
88
|
+
string: "{'responseHeader'=>{'status'=>0,'QTime'=>4,'params'=>{'fl'=>'id, title_display, author_display, format, timestamp','sort'=>'timestamp asc','wt'=>'ruby','start'=>'0','rows'=>'25'}},'response'=>{'numFound'=>30,'start'=>0,'docs'=>[{'author_display'=>'Ayaz, Shaikh, 1923-1997','format'=>'Book','title_display'=>'Fikr-i Aya\xCC\x84z','id'=>'00282214','timestamp'=>'2012-08-01T16:49:55.214Z'},{'author_display'=>'Ayaz, Shaikh, 1923-1997','format'=>'Book','title_display'=>'Sa\xCC\x84hiva\xCC\x84l jail ki\xCC\x84 d\xCC\xA3a\xCC\x84\xCA\xBCiri\xCC\x84','id'=>'00282371','timestamp'=>'2012-08-01T16:49:55.249Z'},{'title_display'=>'Naqdi\xCC\x84 bara\xCC\x84-yi tama\xCC\x84m-i fus\xCC\xA3u\xCC\x84l','id'=>'00313831','author_display'=>'Nu\xCC\x84ri\xCC\x84, \xCA\xBBAbd Alla\xCC\x84h, 1949-','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.276Z'},{'author_display'=>'Yoshida, Hajime, 1934-','format'=>'Book','title_display'=>'Kubo Sakae \"Kazanbaichi\" o yomu','id'=>'00314247','timestamp'=>'2012-08-01T16:49:55.307Z'},{'author_display'=>'Vi\xEF\xB8\xA0a\xEF\xB8\xA1tkin, M. P. (Mikhail Porfir\xCA\xB9evich), 1895-1967','format'=>'Book','title_display'=>'Ocherki po istorii Kazakhskoi\xCC\x86 SSR','id'=>'43037890','timestamp'=>'2012-08-01T16:49:55.322Z'},{'author_display'=>'Korea (North)','format'=>'Book','title_display'=>'Konstitut\xEF\xB8\xA0s\xEF\xB8\xA1ii\xEF\xB8\xA0a\xEF\xB8\xA1 i osnovnye zakonodatel\xCA\xB9nye akty Korei\xCC\x86skoi\xCC\x86 Narodno-Demokraticheskoi\xCC\x86 Respubliki','id'=>'53029833','timestamp'=>'2012-08-01T16:49:55.336Z'},{'title_display'=>'Koryo\xCC\x86 inmul yo\xCC\x86lcho\xCC\x86n','id'=>'77826928','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.353Z'},{'author_display'=>'Parikshit Sharma, Ogeti, 1930-','format'=>'Book','title_display'=>'Yas\xCC\x81odhara\xCC\x84-maha\xCC\x84ka\xCC\x84vyam','id'=>'78908283','timestamp'=>'2012-08-01T16:49:55.366Z'},{'author_display'=>'Is\xCC\xA3la\xCC\x84h\xCC\xA3i\xCC\x84, Ami\xCC\x84n Ah\xCC\xA3san, 1904-1997','format'=>'Book','title_display'=>'Pa\xCC\x84kista\xCC\x84ni\xCC\x84 \xCA\xBBaurat dora\xCC\x84he par','id'=>'79930185','timestamp'=>'2012-08-01T16:49:55.377Z'},{'author_display'=>'Na\xCC\x84ra\xCC\x84yan\xCC\xA3apan\xCC\xA3d\xCC\xA3ita, 17th cent','format'=>'Book','title_display'=>'A\xCC\x84s\xCC\x81les\xCC\xA3a\xCC\x84s\xCC\x81ataka of Na\xCC\x84ra\xCC\x84yan\xCC\xA3a Pan\xCC\xA3d\xCC\xA3ita','id'=>'85910001','timestamp'=>'2012-08-01T16:49:55.387Z'},{'title_display'=>'Shodede-yam Yehudiyim','id'=>'86207417','author_display'=>'Finkel, Chaim Jacob','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.402Z'},{'title_display'=>'A\xCC\x84shna\xCC\x84\xCA\xBCi\xCC\x84 ba\xCC\x84 h\xCC\xA3awzah\xCA\xB9ha\xCC\x84-yi \xCA\xBBilmi\xCC\x84yah-\xCA\xBCi Shi\xCC\x84\xCA\xBBah dar t\xCC\xA3u\xCC\x84l-i ta\xCC\x84ri\xCC\x84kh','id'=>'87931798','author_display'=>'Muvah\xCC\xA3h\xCC\xA3id Abt\xCC\xA3ah\xCC\xA3i\xCC\x84, H\xCC\xA3ujjat','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.419Z'},{'author_display'=>'Lomt\xCA\xBBat\xCA\xBBiz\xCC\x87e, C\xCC\x8Cola, 1879-1915','format'=>'Book','title_display'=>'Mrecvelobis mus\xCC\x8Cakis c\xCA\xBBxovrebis cesi','id'=>'90142413','timestamp'=>'2012-08-01T16:49:55.435Z'},{'title_display'=>'Pukhan po\xCC\x86mnyo\xCC\x86ngjip','id'=>'92117465','author_display'=>'Korea (North)','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.447Z'},{'title_display'=>'Sefer Mishnah berurah','id'=>'92828023','author_display'=>'Israel Meir, ha-Kohen, 1838-1933','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.464Z'},{'title_display'=>'Ajikto ku\xCC\x86ro\xCC\x86k cho\xCC\x86ro\xCC\x86k sasimnikka','id'=>'94120425','author_display'=>'Kim, Hong-sin, 1947-','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.488Z'},{'title_display'=>'Ma\xCA\xBBrakah-\xCA\xBCi jaha\xCC\x84n\xCA\xB9bi\xCC\x84ni\xCC\x84\xCA\xB9ha\xCC\x84','id'=>'96933325','author_display'=>'Raja\xCC\x84yi\xCC\x84, Farhang, 1952 or 3-','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.502Z'},{'author_display'=>'Na\xCC\x84ra\xCC\x84yan\xCC\xA3a Pan\xCC\xA3d\xCC\xA3ita\xCC\x84ca\xCC\x84rya, 13th cent','format'=>'Book','title_display'=>'Sumadhvavijayah\xCC\xA3','id'=>'2001417245','timestamp'=>'2012-08-01T16:49:55.515Z'},{'title_display'=>'al-H\xCC\xA3arb fi\xCC\x84 al-alfi\xCC\x84yah al-tha\xCC\x84lithah','id'=>'2003546302','author_display'=>'Wuld Mawla\xCC\x84y al-Zayn, Sayyid Muh\xCC\xA3ammad wuld Sayyid','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.529Z'},{'author_display'=>'Bstan-\xCA\xBCdzin-mkhas-grub, 1967-','format'=>'Book','title_display'=>'Bon-brgya\xCA\xBCi lo rgyus lugs gn\xCC\x83is gsal ba\xCA\xBCi me lon\xCC\x87 z\xCC\x81es bya ba bz\xCC\x81ugs so','id'=>'2004310986','timestamp'=>'2012-08-01T16:49:55.539Z'},{'title_display'=>'Thuqu\xCC\x84b fi\xCC\x84 \xCA\xBBaql al-ummah','id'=>'2005461726','author_display'=>'Abu\xCC\x84 al-Khayr, \xCA\xBBAli\xCC\x84 \xCA\xBBAbd al-H\xCC\xA3ami\xCC\x84d','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.551Z'},{'format'=>'Book','title_display'=>'Bituah\xCC\xA3 u-vit\xCC\xA3ah\xCC\xA3on sotsyali','id'=>'2005553155','timestamp'=>'2012-08-01T16:49:55.57Z'},{'title_display'=>'\"Strong Medicine speaks\"','id'=>'2007020969','author_display'=>'Hearth, Amy Hill, 1958-','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.59Z'},{'title_display'=>'Dris lan don gcig ma','id'=>'2008305903','author_display'=>'Dkon-mchog-rgya-mtsho, Ra-se, 1968-','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.602Z'},{'title_display'=>'Pluvial nectar of blessings','id'=>'2008308175','author_display'=>'N\xCC\x87ag-dban\xCC\x87-blo-bzan\xCC\x87-rgya-mtsho, Dalai Lama V, 1617-1682','format'=>'Book','timestamp'=>'2012-08-01T16:49:55.621Z'}]},'facet_counts'=>{'facet_queries'=>{},'facet_fields'=>{'format'=>['Book',30],'lc_1letter_facet'=>['B - Philosophy, Psychology, Religion',6,'D - World History',6,'H - Social Sciences',4,'P - Language & Literature',4,'M - Music',3,'K - Law',2,'E - History of the Americas (General)',1,'G - Geography, Anthropology, Recreation',1,'U - Military Science',1],'lc_alpha_facet'=>['DS',5,'BQ',3,'PK',3,'BP',2,'HQ',2,'KPC',2,'BM',1,'DK',1,'E',1,'G',1],'lc_b4cutter_facet'=>['KPC13',2,'BM520.88.A53',1,'BP161.3',1,'BP44',1,'BQ4036',1,'BQ5593.P3',1,'BQ7684.4',1,'DK861.K3',1,'DS274',1,'DS318.84.N87',1],'language_facet'=>['Tibetan',6,'Hebrew',3,'Korean',3,'Persian',3,'Sanskrit',3,'Urdu',3,'Arabic',2,'English',2,'Japanese',2,'Russian',2],'pub_date'=>['2008',4,'1976',2,'1986',2,'1990',2,'1997',2,'2000',2,'1941',1,'1946',1,'1952',1,'1962',1],'subject_era_facet'=>['20th century',3,'1997-',2,'21st century',2,'1990-',1,'2005-2015',1,'Koryo\xCC\x86 period, 935-1392',1],'subject_geo_facet'=>['India',2,'Iran',2,'Japan',2,'Bon-brgya (China)',1,'Bridgeton',1,'China',1,'Economic history',1,'Hong Kong (China)',1,'Islamic countries',1,'Israel',1],'subject_topic_facet'=>['Japanese drama',2,'Kubo, Sakae, 1901-1958',2,'Political plays, Japanese',2,'Theater',2,'Women',2,'Accident insurance',1,'Buddhism',1,'Delaware Indians',1,'Delaware women',1,'Education and state',1]},'facet_dates'=>{},'facet_ranges'=>{}}}"
|
|
89
|
+
http_version: "1.1"
|
|
90
|
+
recorded_at: Thu, 16 Aug 2012 20:43:20 GMT
|
|
91
|
+
- request:
|
|
92
|
+
method: get
|
|
93
|
+
uri: http://127.0.0.1:8983/solr/select?wt=ruby&fq=id%3A%2200282214%22&rows=10&fl=id%2C+title_display%2C+author_display%2C+format%2C+timestamp
|
|
94
|
+
body:
|
|
95
|
+
encoding: US-ASCII
|
|
96
|
+
string: ""
|
|
97
|
+
headers: {}
|
|
98
|
+
|
|
99
|
+
response:
|
|
100
|
+
status:
|
|
101
|
+
code: 200
|
|
102
|
+
message: OK
|
|
103
|
+
headers:
|
|
104
|
+
content-type:
|
|
105
|
+
- text/plain; charset=utf-8
|
|
106
|
+
connection:
|
|
107
|
+
- close
|
|
108
|
+
body:
|
|
109
|
+
encoding: ASCII-8BIT
|
|
110
|
+
string: "{'responseHeader'=>{'status'=>0,'QTime'=>3,'params'=>{'fl'=>'id, title_display, author_display, format, timestamp','wt'=>'ruby','fq'=>'id:\"00282214\"','rows'=>'10'}},'response'=>{'numFound'=>1,'start'=>0,'docs'=>[{'author_display'=>'Ayaz, Shaikh, 1923-1997','format'=>'Book','title_display'=>'Fikr-i Aya\xCC\x84z','id'=>'00282214','timestamp'=>'2012-08-01T16:49:55.214Z'}]},'facet_counts'=>{'facet_queries'=>{},'facet_fields'=>{'format'=>['Book',1],'lc_1letter_facet'=>['P - Language & Literature',1],'lc_alpha_facet'=>['PK',1],'lc_b4cutter_facet'=>['PK2788.9.A9',1],'language_facet'=>['Urdu',1],'pub_date'=>['1998',1],'subject_era_facet'=>[],'subject_geo_facet'=>[],'subject_topic_facet'=>[]},'facet_dates'=>{},'facet_ranges'=>{}}}"
|
|
111
|
+
http_version: "1.1"
|
|
112
|
+
recorded_at: Thu, 16 Aug 2012 20:43:20 GMT
|
|
113
|
+
recorded_with: VCR 2.2.4
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: blacklight_oai_provider
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
4
|
+
version: 0.1.0
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,11 +9,11 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2012-08-16 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rails
|
|
16
|
-
requirement:
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ~>
|
|
@@ -21,21 +21,31 @@ dependencies:
|
|
|
21
21
|
version: '3.0'
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements:
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
26
|
+
requirements:
|
|
27
|
+
- - ~>
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '3.0'
|
|
25
30
|
- !ruby/object:Gem::Dependency
|
|
26
31
|
name: blacklight
|
|
27
|
-
requirement:
|
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
|
28
33
|
none: false
|
|
29
34
|
requirements:
|
|
30
|
-
- -
|
|
35
|
+
- - ~>
|
|
31
36
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '
|
|
37
|
+
version: '3.2'
|
|
33
38
|
type: :runtime
|
|
34
39
|
prerelease: false
|
|
35
|
-
version_requirements:
|
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
+
none: false
|
|
42
|
+
requirements:
|
|
43
|
+
- - ~>
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: '3.2'
|
|
36
46
|
- !ruby/object:Gem::Dependency
|
|
37
47
|
name: oai
|
|
38
|
-
requirement:
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
39
49
|
none: false
|
|
40
50
|
requirements:
|
|
41
51
|
- - ! '>='
|
|
@@ -43,14 +53,101 @@ dependencies:
|
|
|
43
53
|
version: '0'
|
|
44
54
|
type: :runtime
|
|
45
55
|
prerelease: false
|
|
46
|
-
version_requirements:
|
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
+
none: false
|
|
58
|
+
requirements:
|
|
59
|
+
- - ! '>='
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
- !ruby/object:Gem::Dependency
|
|
63
|
+
name: rspec
|
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
|
65
|
+
none: false
|
|
66
|
+
requirements:
|
|
67
|
+
- - ! '>='
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
version: '0'
|
|
70
|
+
type: :development
|
|
71
|
+
prerelease: false
|
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
73
|
+
none: false
|
|
74
|
+
requirements:
|
|
75
|
+
- - ! '>='
|
|
76
|
+
- !ruby/object:Gem::Version
|
|
77
|
+
version: '0'
|
|
78
|
+
- !ruby/object:Gem::Dependency
|
|
79
|
+
name: rspec-rails
|
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
|
81
|
+
none: false
|
|
82
|
+
requirements:
|
|
83
|
+
- - ! '>='
|
|
84
|
+
- !ruby/object:Gem::Version
|
|
85
|
+
version: '0'
|
|
86
|
+
type: :development
|
|
87
|
+
prerelease: false
|
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
89
|
+
none: false
|
|
90
|
+
requirements:
|
|
91
|
+
- - ! '>='
|
|
92
|
+
- !ruby/object:Gem::Version
|
|
93
|
+
version: '0'
|
|
94
|
+
- !ruby/object:Gem::Dependency
|
|
95
|
+
name: capybara
|
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
|
97
|
+
none: false
|
|
98
|
+
requirements:
|
|
99
|
+
- - ! '>='
|
|
100
|
+
- !ruby/object:Gem::Version
|
|
101
|
+
version: '0'
|
|
102
|
+
type: :development
|
|
103
|
+
prerelease: false
|
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
105
|
+
none: false
|
|
106
|
+
requirements:
|
|
107
|
+
- - ! '>='
|
|
108
|
+
- !ruby/object:Gem::Version
|
|
109
|
+
version: '0'
|
|
110
|
+
- !ruby/object:Gem::Dependency
|
|
111
|
+
name: vcr
|
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
|
113
|
+
none: false
|
|
114
|
+
requirements:
|
|
115
|
+
- - ! '>='
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '0'
|
|
118
|
+
type: :development
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
none: false
|
|
122
|
+
requirements:
|
|
123
|
+
- - ! '>='
|
|
124
|
+
- !ruby/object:Gem::Version
|
|
125
|
+
version: '0'
|
|
126
|
+
- !ruby/object:Gem::Dependency
|
|
127
|
+
name: fakeweb
|
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
|
129
|
+
none: false
|
|
130
|
+
requirements:
|
|
131
|
+
- - ! '>='
|
|
132
|
+
- !ruby/object:Gem::Version
|
|
133
|
+
version: '0'
|
|
134
|
+
type: :development
|
|
135
|
+
prerelease: false
|
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
137
|
+
none: false
|
|
138
|
+
requirements:
|
|
139
|
+
- - ! '>='
|
|
140
|
+
- !ruby/object:Gem::Version
|
|
141
|
+
version: '0'
|
|
47
142
|
description:
|
|
48
143
|
email:
|
|
49
|
-
-
|
|
144
|
+
- chris@cbeer.info
|
|
50
145
|
executables: []
|
|
51
146
|
extensions: []
|
|
52
147
|
extra_rdoc_files: []
|
|
53
148
|
files:
|
|
149
|
+
- Gemfile
|
|
150
|
+
- Gemfile.lock
|
|
54
151
|
- MIT-LICENSE
|
|
55
152
|
- README.rdoc
|
|
56
153
|
- Rakefile
|
|
@@ -68,6 +165,20 @@ files:
|
|
|
68
165
|
- lib/blacklight_oai_provider/solr_document_wrapper.rb
|
|
69
166
|
- lib/blacklight_oai_provider/version.rb
|
|
70
167
|
- lib/generators/blacklight_oai_provider/blacklight_oai_provider_generator.rb
|
|
168
|
+
- spec/acceptance/blacklight_oai_provider_spec.rb
|
|
169
|
+
- spec/integration/blacklight_stub_spec.rb
|
|
170
|
+
- spec/internal/app/controllers/application_controller.rb
|
|
171
|
+
- spec/internal/app/models/solr_document.rb
|
|
172
|
+
- spec/internal/config/database.yml
|
|
173
|
+
- spec/internal/config/routes.rb
|
|
174
|
+
- spec/internal/config/solr.yml
|
|
175
|
+
- spec/internal/db/combustion_test.sqlite
|
|
176
|
+
- spec/internal/db/schema.rb
|
|
177
|
+
- spec/internal/log/.gitignore
|
|
178
|
+
- spec/internal/public/favicon.ico
|
|
179
|
+
- spec/lib/solr_document_extension_spec.rb
|
|
180
|
+
- spec/spec_helper.rb
|
|
181
|
+
- spec/vcr_cassettes/solr.yml
|
|
71
182
|
homepage: http://projectblacklight.org/
|
|
72
183
|
licenses: []
|
|
73
184
|
post_install_message:
|
|
@@ -88,8 +199,23 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
88
199
|
version: '0'
|
|
89
200
|
requirements: []
|
|
90
201
|
rubyforge_project: blacklight
|
|
91
|
-
rubygems_version: 1.8.
|
|
202
|
+
rubygems_version: 1.8.23
|
|
92
203
|
signing_key:
|
|
93
204
|
specification_version: 3
|
|
94
205
|
summary: Blacklight Oai Provider plugin
|
|
95
|
-
test_files:
|
|
206
|
+
test_files:
|
|
207
|
+
- spec/acceptance/blacklight_oai_provider_spec.rb
|
|
208
|
+
- spec/integration/blacklight_stub_spec.rb
|
|
209
|
+
- spec/internal/app/controllers/application_controller.rb
|
|
210
|
+
- spec/internal/app/models/solr_document.rb
|
|
211
|
+
- spec/internal/config/database.yml
|
|
212
|
+
- spec/internal/config/routes.rb
|
|
213
|
+
- spec/internal/config/solr.yml
|
|
214
|
+
- spec/internal/db/combustion_test.sqlite
|
|
215
|
+
- spec/internal/db/schema.rb
|
|
216
|
+
- spec/internal/log/.gitignore
|
|
217
|
+
- spec/internal/public/favicon.ico
|
|
218
|
+
- spec/lib/solr_document_extension_spec.rb
|
|
219
|
+
- spec/spec_helper.rb
|
|
220
|
+
- spec/vcr_cassettes/solr.yml
|
|
221
|
+
has_rdoc:
|