celsius-primo 0.1.0 → 0.1.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 37c4c29f6c4f873b2f929b380362845ba4e513eb
4
- data.tar.gz: 76af2449733322049f428754700526343f41f56d
3
+ metadata.gz: f3f7b728ecbbe4008a335bae93d8b58ba3a1048c
4
+ data.tar.gz: 2d0c321eca3a8c5699896f8cdec6cc366547f0b9
5
5
  SHA512:
6
- metadata.gz: a67d06feaed0fa3d26dae68903a9682ebad6f03f2914e9c3dad25f387e0bfdf522e32cfb11269447559f0dcf5dfdc4efb2da42e9d1ffb1a87e0b65c8eddbd83a
7
- data.tar.gz: 8c56e644babdebd78977da0463d52a3790462678ce05e12b579da6bc9fa6aac95ef1dad6b9faf258ac203f9cbe3b6f99e656206867fc555a01c8e1edf186b3b9
6
+ metadata.gz: a59c3dde3b0ddeabb2bffbc1f7e8a15a5e0b13aa1ca49657fc5726cff8f2fc694b7afed96930094ff01cd7b48d2f4d57bd117a5f1c938bbc3a8e4196717df5e6
7
+ data.tar.gz: b7d68517a37ff1f17de6ca513566f21efcb1b312fdbda7767fee4e98ef5dffdfb690bbff03f342d4e44c05e8b6ae4883813cf6d0906dbc281d84b22549aa7e10
data/.travis.yml CHANGED
@@ -3,6 +3,3 @@ rvm:
3
3
  - "2.0"
4
4
  - "2.1"
5
5
  - "2.2"
6
- addons:
7
- code_climate:
8
- repo_token: a999fcd17508dad4db657c87561e60a073111b1db3903ee35d8d11c6a76fcd63
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-nav", "~> 0.2.3"
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 [![Build Status](https://travis-ci.org/ubpb/celsius-primo.svg?branch=master)](https://travis-ci.org/ubpb/celsius-primo) [![Test Coverage](https://codeclimate.com/github/ubpb/celsius-primo/badges/coverage.svg)](https://codeclimate.com/github/ubpb/celsius-primo) [![Code Climate](https://codeclimate.com/github/ubpb/celsius-primo/badges/gpa.svg)](https://codeclimate.com/github/ubpb/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
- facet_name:
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
- facet_value:
12
+ facet_values:
13
13
  facet_lang:
14
14
  en: Englisch
15
15
  english: Englisch
@@ -1,5 +1,5 @@
1
1
  en:
2
- facet_name:
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
- facet_value:
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
- if match_queries = Celsius::Hash.deep_find_key(search_request, :match)
12
- binding.pry
13
- raise "unimplemented!"
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|
@@ -1,5 +1,5 @@
1
1
  module Celsius
2
2
  module Primo
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
5
5
  end
@@ -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
@@ -1489,6 +1489,9 @@ facets:
1489
1489
  count: 1
1490
1490
  - term: '2001'
1491
1491
  count: 1
1492
+ facet_domain:
1493
+ _type: terms
1494
+ terms: []
1492
1495
  facet_lang:
1493
1496
  _type: terms
1494
1497
  terms:
@@ -1166,4 +1166,89 @@ http_interactions:
1166
1166
  Michael&quot;,&quot;&#xD6;ggl, Bernd&quot;]}&lt;/lad01&gt; \n&lt;/addata&gt;\n&lt;/record&gt;&lt;/PrimoNMBib&gt;&lt;sear:LINKS&gt;&lt;sear:thumbnail/&gt;&lt;sear:linktotoc&gt;errorPage&lt;/sear:linktotoc&gt;&lt;/sear:LINKS&gt;&lt;/sear:DOC&gt;&lt;/sear:DOCSET&gt;&lt;/sear:RESULT&gt;&lt;sear:searchToken&gt;0&lt;/sear:searchToken&gt;&lt;/sear:JAGROOT&gt;&lt;/sear:SEGMENTS&gt;</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/">&lt;sear:SEGMENTS
1249
+ xmlns:sear=&quot;http://www.exlibrisgroup.com/xsd/jaguar/search&quot;&gt;&lt;sear:JAGROOT&gt;&lt;sear:RESULT&gt;&lt;sear:QUERYTRANSFORMS/&gt;&lt;sear:FACETLIST/&gt;&lt;sear:DOCSET
1250
+ HIT_TIME=&quot;178&quot; TOTALHITS=&quot;0&quot; FIRSTHIT=&quot;1&quot; LASTHIT=&quot;0&quot;
1251
+ TOTAL_TIME=&quot;215&quot; IS_LOCAL=&quot;true&quot;/&gt;&lt;/sear:RESULT&gt;&lt;sear:searchToken&gt;0&lt;/sear:searchToken&gt;&lt;/sear:JAGROOT&gt;&lt;/sear:SEGMENTS&gt;</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
- search_request = YAML.load(read_asset("adapter/search/search_request.yml"))
37
- expected_search_result = YAML.load(read_asset("adapter/search/search_result.yml"))
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
- expect(adapter.search(search_request)).to eq(expected_search_result)
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.0
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-21 00:00:00.000000000 Z
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