celsius-primo 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +0 -3
- data/Gemfile +2 -1
- data/README.md +5 -1
- data/lib/celsius/primo/locales/de.yml +2 -2
- data/lib/celsius/primo/locales/en.yml +2 -2
- data/lib/celsius/primo/soap_api/searcher/search_brief/search_result_transformation/add_missing_facets.rb +13 -3
- data/lib/celsius/primo/version.rb +1 -1
- data/spec/assets/adapter/search/empty_search_result.yml +36 -0
- data/spec/assets/adapter/search/search_request_with_empty_result.yml +54 -0
- data/spec/assets/adapter/search/search_result.yml +3 -0
- data/spec/cassettes/Celsius_Primo_Adapter/_search/returns_a_normalized_search_result.yml +85 -0
- data/spec/celsius-primo/adapter_spec.rb +11 -3
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f3f7b728ecbbe4008a335bae93d8b58ba3a1048c
|
4
|
+
data.tar.gz: 2d0c321eca3a8c5699896f8cdec6cc366547f0b9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a59c3dde3b0ddeabb2bffbc1f7e8a15a5e0b13aa1ca49657fc5726cff8f2fc694b7afed96930094ff01cd7b48d2f4d57bd117a5f1c938bbc3a8e4196717df5e6
|
7
|
+
data.tar.gz: b7d68517a37ff1f17de6ca513566f21efcb1b312fdbda7767fee4e98ef5dffdfb690bbff03f342d4e44c05e8b6ae4883813cf6d0906dbc281d84b22549aa7e10
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -7,7 +7,8 @@ gemspec
|
|
7
7
|
gem "codeclimate-test-reporter", group: :test, require: nil
|
8
8
|
|
9
9
|
gem "pry", "~> 0.9.12.6"
|
10
|
-
gem "pry-
|
10
|
+
gem "pry-byebug", "<= 1.3.2"
|
11
|
+
gem "pry-rescue", "~> 1.4.1"
|
11
12
|
gem "pry-stack_explorer", "~> 0.4.9.1"
|
12
13
|
gem "pry-syntax-hacks", "~> 0.0.6"
|
13
14
|
|
data/README.md
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
-
# Celsius::Primo
|
1
|
+
# Celsius::Primo
|
2
|
+
|
3
|
+
[![Build Status](https://travis-ci.org/ubpb/celsius-primo.svg?branch=master)](https://travis-ci.org/ubpb/celsius-primo)
|
4
|
+
[![Test Coverage](https://codeclimate.com/github/ubpb/celsius-primo/badges/coverage.svg)](https://codeclimate.com/github/ubpb/celsius-primo)
|
5
|
+
[![Code Climate](https://codeclimate.com/github/ubpb/celsius-primo/badges/gpa.svg)](https://codeclimate.com/github/ubpb/celsius-primo)
|
2
6
|
|
3
7
|
Celsius::Primo aims to provide an adapter layer above various Primo apis. The goal is, to use primo in a way similar to Elasticsearch by translating Elasticsearch requests to Primo requests and vice versa.
|
4
8
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
de:
|
2
|
-
|
2
|
+
facet_names:
|
3
3
|
facet_creator: Autor / Autorin
|
4
4
|
facet_lang: Sprache
|
5
5
|
facet_rtype: Typ der Ressource
|
@@ -9,7 +9,7 @@ de:
|
|
9
9
|
facet_domain: Quelle
|
10
10
|
facet_creationdate: Erscheinungsjahr
|
11
11
|
|
12
|
-
|
12
|
+
facet_values:
|
13
13
|
facet_lang:
|
14
14
|
en: Englisch
|
15
15
|
english: Englisch
|
@@ -1,5 +1,5 @@
|
|
1
1
|
en:
|
2
|
-
|
2
|
+
facet_names:
|
3
3
|
facet_creator: Creator
|
4
4
|
facet_lang: Language
|
5
5
|
facet_rtype: Resource type
|
@@ -9,7 +9,7 @@ en:
|
|
9
9
|
facet_domain: Domain
|
10
10
|
facet_creationdate: Creation date
|
11
11
|
|
12
|
-
|
12
|
+
facet_values:
|
13
13
|
facet_lang:
|
14
14
|
aar: Afar
|
15
15
|
abk: Abkhaz
|
@@ -8,15 +8,25 @@ class Celsius::Primo::SoapApi::Searcher::SearchBrief::SearchResultTransformation
|
|
8
8
|
# Sometimes, requested facets do not show up in search result, so we have to (re)add them
|
9
9
|
#
|
10
10
|
def call
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
(search_request["facets"] || {}).each do |facet_name, requested_facet|
|
12
|
+
unless target["facets"][facet_name]
|
13
|
+
if requested_facet["terms"]
|
14
|
+
target["facets"][facet_name] = empty_search_result_terms_facet
|
15
|
+
end
|
16
|
+
end
|
14
17
|
end
|
15
18
|
end
|
16
19
|
|
17
20
|
#
|
18
21
|
private
|
19
22
|
#
|
23
|
+
def empty_search_result_terms_facet
|
24
|
+
{
|
25
|
+
"_type" => "terms",
|
26
|
+
"terms" => []
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
20
30
|
=begin
|
21
31
|
# handle primo bug where requested facets don't show up in search response
|
22
32
|
process "//match", source: -> { @search_request} do |match, target|
|
@@ -0,0 +1,36 @@
|
|
1
|
+
---
|
2
|
+
took:
|
3
|
+
hits:
|
4
|
+
hits: []
|
5
|
+
total: 0
|
6
|
+
facets:
|
7
|
+
facet_tlevel:
|
8
|
+
_type: terms
|
9
|
+
terms: []
|
10
|
+
facet_creator:
|
11
|
+
_type: terms
|
12
|
+
terms: []
|
13
|
+
facet_local31:
|
14
|
+
_type: terms
|
15
|
+
terms: []
|
16
|
+
facet_topic:
|
17
|
+
_type: terms
|
18
|
+
terms: []
|
19
|
+
facet_creationdate:
|
20
|
+
_type: terms
|
21
|
+
terms: []
|
22
|
+
facet_domain:
|
23
|
+
_type: terms
|
24
|
+
terms: []
|
25
|
+
facet_lang:
|
26
|
+
_type: terms
|
27
|
+
terms: []
|
28
|
+
facet_local15:
|
29
|
+
_type: terms
|
30
|
+
terms: []
|
31
|
+
facet_local32:
|
32
|
+
_type: terms
|
33
|
+
terms: []
|
34
|
+
facet_local33:
|
35
|
+
_type: terms
|
36
|
+
terms: []
|
@@ -0,0 +1,54 @@
|
|
1
|
+
---
|
2
|
+
facets:
|
3
|
+
facet_tlevel:
|
4
|
+
terms:
|
5
|
+
field: facet_tlevel
|
6
|
+
shard_size: 75
|
7
|
+
facet_creator:
|
8
|
+
terms:
|
9
|
+
field: facet_creator
|
10
|
+
shard_size: 75
|
11
|
+
facet_local31:
|
12
|
+
terms:
|
13
|
+
field: facet_local31
|
14
|
+
shard_size: 75
|
15
|
+
facet_topic:
|
16
|
+
terms:
|
17
|
+
field: facet_topic
|
18
|
+
shard_size: 75
|
19
|
+
facet_creationdate:
|
20
|
+
terms:
|
21
|
+
field: facet_creationdate
|
22
|
+
shard_size: 75
|
23
|
+
facet_domain:
|
24
|
+
terms:
|
25
|
+
field: facet_domain
|
26
|
+
shard_size: 75
|
27
|
+
facet_lang:
|
28
|
+
terms:
|
29
|
+
field: facet_lang
|
30
|
+
shard_size: 75
|
31
|
+
facet_local15:
|
32
|
+
terms:
|
33
|
+
field: facet_local15
|
34
|
+
shard_size: 75
|
35
|
+
facet_local32:
|
36
|
+
terms:
|
37
|
+
field: facet_local32
|
38
|
+
shard_size: 75
|
39
|
+
facet_local33:
|
40
|
+
terms:
|
41
|
+
field: facet_local33
|
42
|
+
shard_size: 75
|
43
|
+
from: 0
|
44
|
+
query:
|
45
|
+
bool:
|
46
|
+
must:
|
47
|
+
- query_string:
|
48
|
+
default_operator: AND
|
49
|
+
fields:
|
50
|
+
- _all
|
51
|
+
query: fooobasdasd
|
52
|
+
size: 20
|
53
|
+
sort:
|
54
|
+
- _score
|
@@ -1166,4 +1166,89 @@ http_interactions:
|
|
1166
1166
|
Michael","Öggl, Bernd"]}</lad01> \n</addata>\n</record></PrimoNMBib><sear:LINKS><sear:thumbnail/><sear:linktotoc>errorPage</sear:linktotoc></sear:LINKS></sear:DOC></sear:DOCSET></sear:RESULT><sear:searchToken>0</sear:searchToken></sear:JAGROOT></sear:SEGMENTS></searchBriefReturn></ns1:searchBriefResponse></soapenv:Body></soapenv:Envelope>"
|
1167
1167
|
http_version:
|
1168
1168
|
recorded_at: Tue, 13 Jan 2015 12:22:11 GMT
|
1169
|
+
- request:
|
1170
|
+
method: post
|
1171
|
+
uri: http://primo.kobv.de/primo_library/libweb/webservices/services/searcher
|
1172
|
+
body:
|
1173
|
+
encoding: UTF-8
|
1174
|
+
string: |
|
1175
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
1176
|
+
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:impl="http://primo.kobv.de/PrimoWebServices/services/searcher" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ins0="http://xml.apache.org/xml-soap">
|
1177
|
+
<env:Body>
|
1178
|
+
<impl:searchBrief>
|
1179
|
+
<searchRequestStr>
|
1180
|
+
<![CDATA[
|
1181
|
+
<searchRequest xmlns="http://www.exlibris.com/primo/xsd/wsRequest" xmlns:uic="http://www.exlibris.com/primo/xsd/primoview/uicomponents">
|
1182
|
+
<PrimoSearchRequest xmlns="http://www.exlibris.com/primo/xsd/search/request">
|
1183
|
+
<QueryTerms>
|
1184
|
+
<BoolOpeator>AND</BoolOpeator>
|
1185
|
+
<QueryTerm>
|
1186
|
+
<IndexField>any</IndexField>
|
1187
|
+
<PrecisionOperator>contains</PrecisionOperator>
|
1188
|
+
<Value>fooobasdasd</Value>
|
1189
|
+
</QueryTerm>
|
1190
|
+
</QueryTerms>
|
1191
|
+
<StartIndex>1</StartIndex>
|
1192
|
+
<BulkSize>20</BulkSize>
|
1193
|
+
<DidUMeanEnabled>false</DidUMeanEnabled>
|
1194
|
+
<HighlightingEnabled>false</HighlightingEnabled>
|
1195
|
+
<Languages>
|
1196
|
+
<Language>ger</Language>
|
1197
|
+
<Language>eng</Language>
|
1198
|
+
</Languages>
|
1199
|
+
<SortByList>
|
1200
|
+
<SortField>relevance</SortField>
|
1201
|
+
</SortByList>
|
1202
|
+
<Locations>
|
1203
|
+
<uic:Location type="local" value="scope:(PAD_ALEPH)"/>
|
1204
|
+
</Locations>
|
1205
|
+
</PrimoSearchRequest>
|
1206
|
+
<onCampus>false</onCampus>
|
1207
|
+
<institution>PAD</institution>
|
1208
|
+
</searchRequest>
|
1209
|
+
]]>
|
1210
|
+
</searchRequestStr>
|
1211
|
+
</impl:searchBrief>
|
1212
|
+
</env:Body>
|
1213
|
+
</env:Envelope>
|
1214
|
+
headers:
|
1215
|
+
Content-Type:
|
1216
|
+
- application/xml
|
1217
|
+
Soapaction:
|
1218
|
+
- searchBrief
|
1219
|
+
Accept-Encoding:
|
1220
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
1221
|
+
Accept:
|
1222
|
+
- "*/*"
|
1223
|
+
User-Agent:
|
1224
|
+
- Ruby
|
1225
|
+
response:
|
1226
|
+
status:
|
1227
|
+
code: 200
|
1228
|
+
message: OK
|
1229
|
+
headers:
|
1230
|
+
Server:
|
1231
|
+
- Apache-Coyote/1.1
|
1232
|
+
Set-Cookie:
|
1233
|
+
- JSESSIONID=22D4A36836338D7F0514B31871117235; Path=/primo_library/libweb/;
|
1234
|
+
HttpOnly
|
1235
|
+
Vary:
|
1236
|
+
- Accept-Encoding
|
1237
|
+
Content-Type:
|
1238
|
+
- text/xml;charset=utf-8
|
1239
|
+
Transfer-Encoding:
|
1240
|
+
- chunked
|
1241
|
+
Date:
|
1242
|
+
- Thu, 22 Jan 2015 10:24:53 GMT
|
1243
|
+
body:
|
1244
|
+
encoding: UTF-8
|
1245
|
+
string: <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
|
1246
|
+
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ns1:searchBriefResponse
|
1247
|
+
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://primo.kobv.de/PrimoWebServices/services/searcher"><searchBriefReturn
|
1248
|
+
xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"><sear:SEGMENTS
|
1249
|
+
xmlns:sear="http://www.exlibrisgroup.com/xsd/jaguar/search"><sear:JAGROOT><sear:RESULT><sear:QUERYTRANSFORMS/><sear:FACETLIST/><sear:DOCSET
|
1250
|
+
HIT_TIME="178" TOTALHITS="0" FIRSTHIT="1" LASTHIT="0"
|
1251
|
+
TOTAL_TIME="215" IS_LOCAL="true"/></sear:RESULT><sear:searchToken>0</sear:searchToken></sear:JAGROOT></sear:SEGMENTS></searchBriefReturn></ns1:searchBriefResponse></soapenv:Body></soapenv:Envelope>
|
1252
|
+
http_version:
|
1253
|
+
recorded_at: Thu, 22 Jan 2015 10:24:51 GMT
|
1169
1254
|
recorded_with: VCR 2.9.3
|
@@ -32,11 +32,19 @@ describe Celsius::Primo::Adapter do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
describe "#search" do
|
35
|
+
asset_dir = "adapter/search"
|
36
|
+
|
35
37
|
it "returns a normalized search result", :vcr do
|
36
|
-
|
37
|
-
|
38
|
+
[
|
39
|
+
["#{asset_dir}/search_request.yml", "#{asset_dir}/search_result.yml"],
|
40
|
+
["#{asset_dir}/search_request_with_empty_result.yml", "#{asset_dir}/empty_search_result.yml"]
|
41
|
+
]
|
42
|
+
.each do |search_request_yaml_filename, search_response_yaml_filename|
|
43
|
+
search_request = YAML.load(read_asset(search_request_yaml_filename))
|
44
|
+
expected_search_result = YAML.load(read_asset(search_response_yaml_filename))
|
38
45
|
|
39
|
-
|
46
|
+
expect(adapter.search(search_request)).to eq(expected_search_result)
|
47
|
+
end
|
40
48
|
end
|
41
49
|
|
42
50
|
context "if a the adapter specifies a timeout" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: celsius-primo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Sievers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: celsius
|
@@ -212,7 +212,9 @@ files:
|
|
212
212
|
- lib/celsius/primo/version.rb
|
213
213
|
- spec/assets/adapter/mget/mget_request.yml
|
214
214
|
- spec/assets/adapter/mget/mget_result.yml
|
215
|
+
- spec/assets/adapter/search/empty_search_result.yml
|
215
216
|
- spec/assets/adapter/search/search_request.yml
|
217
|
+
- spec/assets/adapter/search/search_request_with_empty_result.yml
|
216
218
|
- spec/assets/adapter/search/search_result.yml
|
217
219
|
- spec/cassettes/Celsius_Primo_Adapter/_mget/returns_a_normalzed_mget_result.yml
|
218
220
|
- spec/cassettes/Celsius_Primo_Adapter/_search/returns_a_normalized_search_result.yml
|
@@ -246,7 +248,9 @@ summary: Generic primo celsius adapter
|
|
246
248
|
test_files:
|
247
249
|
- spec/assets/adapter/mget/mget_request.yml
|
248
250
|
- spec/assets/adapter/mget/mget_result.yml
|
251
|
+
- spec/assets/adapter/search/empty_search_result.yml
|
249
252
|
- spec/assets/adapter/search/search_request.yml
|
253
|
+
- spec/assets/adapter/search/search_request_with_empty_result.yml
|
250
254
|
- spec/assets/adapter/search/search_result.yml
|
251
255
|
- spec/cassettes/Celsius_Primo_Adapter/_mget/returns_a_normalzed_mget_result.yml
|
252
256
|
- spec/cassettes/Celsius_Primo_Adapter/_search/returns_a_normalized_search_result.yml
|