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 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