ebsco-eds 0.2.9.pre → 0.3.0.pre
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 +4 -4
- data/ebsco-eds.gemspec +1 -0
- data/lib/ebsco/eds/configuration.rb +2 -1
- data/lib/ebsco/eds/info.rb +1 -1
- data/lib/ebsco/eds/options.rb +8 -3
- data/lib/ebsco/eds/results.rb +4 -3
- data/lib/ebsco/eds/session.rb +31 -30
- data/lib/ebsco/eds/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5353c7f332e965904370d4defe3ffddc1c188992
|
4
|
+
data.tar.gz: b2fb35896f412a06d76c3889337b9741f14d4bc9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c586fb16ec00a3b975b24ff65a762e9aaff0993d4578fee0ed2f4f8f8b142e9abfb95f61fadccaf40ac2d2375bc13ea1c365f4178f399f30de85028b1e552646
|
7
|
+
data.tar.gz: cbc65d09fa611f4f25cd51d9529b0722e3be36ee3cfc1b226467d6d2beb67d72383a6b59ef14195e67838bcbc3e5b9c885ab4b2ff203670479a374cd29852160
|
data/ebsco-eds.gemspec
CHANGED
@@ -44,6 +44,7 @@ Gem::Specification.new do |spec|
|
|
44
44
|
spec.add_dependency 'citeproc-ruby', '~> 1.0', '>= 1.0.2'
|
45
45
|
spec.add_dependency 'csl-styles', '~> 1.0', '>= 1.0.1.5'
|
46
46
|
spec.add_dependency 'activesupport', '~> 5.0'
|
47
|
+
spec.add_dependency 'net-http-persistent', '~> 2.9'
|
47
48
|
|
48
49
|
spec.add_development_dependency 'bundler', '~> 1.13'
|
49
50
|
spec.add_development_dependency 'rake', '~> 12.0'
|
@@ -28,13 +28,14 @@ module EBSCO
|
|
28
28
|
:user_agent => 'EBSCO EDS GEM v0.0.1',
|
29
29
|
:interface_id => 'edsapi_ruby_gem',
|
30
30
|
:log => 'faraday.log',
|
31
|
+
:log_level => 'INFO',
|
31
32
|
:max_attempts => 2,
|
32
33
|
:max_results_per_page => 100,
|
33
34
|
:ebook_preferred_format => 'ebook-pdf',
|
34
35
|
:use_cache => true,
|
35
36
|
:eds_cache_dir => ENV['TMPDIR'] || '/tmp',
|
36
37
|
:timeout => 60,
|
37
|
-
:open_timeout =>
|
38
|
+
:open_timeout => 12
|
38
39
|
}
|
39
40
|
@valid_config_keys = @config.keys
|
40
41
|
end
|
data/lib/ebsco/eds/info.rb
CHANGED
@@ -144,7 +144,7 @@ module EBSCO
|
|
144
144
|
# ====================================================================================
|
145
145
|
|
146
146
|
def default_results_per_page
|
147
|
-
@view_result_settings['ResultsPerPage']
|
147
|
+
@view_result_settings['ResultsPerPage'].to_i
|
148
148
|
end
|
149
149
|
|
150
150
|
def max_results_per_page
|
data/lib/ebsco/eds/options.rb
CHANGED
@@ -41,6 +41,11 @@ module EBSCO
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
+
# add page default of 1
|
45
|
+
unless options.has_key?('page') || options.has_key?('page_number')
|
46
|
+
options['page'] = 1
|
47
|
+
end
|
48
|
+
|
44
49
|
options.each do |key, value|
|
45
50
|
|
46
51
|
case key
|
@@ -50,7 +55,7 @@ module EBSCO
|
|
50
55
|
|
51
56
|
# SOLR: Need to add page actions whenever other actions are present since the other actions
|
52
57
|
# will always reset the page to 1 even though a PageNumber is present in RetrievalCriteria.
|
53
|
-
when 'page'
|
58
|
+
when 'page', 'page_number'
|
54
59
|
@Actions.push "GoToPage(#{value.to_i})"
|
55
60
|
|
56
61
|
# solr facet translation
|
@@ -545,8 +550,8 @@ module EBSCO
|
|
545
550
|
when :page_number, 'page_number', 'page'
|
546
551
|
@PageNumber = value.to_i
|
547
552
|
# solr starts at page 0
|
548
|
-
when 'start'
|
549
|
-
|
553
|
+
# when 'start'
|
554
|
+
# @PageNumber = value.to_i + 1
|
550
555
|
|
551
556
|
# ====================================================================================
|
552
557
|
# highlight
|
data/lib/ebsco/eds/results.rb
CHANGED
@@ -88,7 +88,7 @@ module EBSCO
|
|
88
88
|
# returns solr search response format
|
89
89
|
def to_solr
|
90
90
|
|
91
|
-
solr_start =
|
91
|
+
solr_start = 0
|
92
92
|
hl_hash = {}
|
93
93
|
solr_docs = []
|
94
94
|
research_starters = []
|
@@ -105,6 +105,7 @@ module EBSCO
|
|
105
105
|
end
|
106
106
|
solr_docs.push(record.to_attr_hash)
|
107
107
|
}
|
108
|
+
solr_start = solr_docs[0]['eds_result_id']-1
|
108
109
|
end
|
109
110
|
|
110
111
|
if @research_starters.any?
|
@@ -289,7 +290,7 @@ module EBSCO
|
|
289
290
|
# "AutoSuggest"=>"n"
|
290
291
|
# }
|
291
292
|
def search_criteria
|
292
|
-
if @results['SearchRequestGet']['QueryString']
|
293
|
+
if @results['SearchRequestGet'] && @results['SearchRequestGet']['QueryString']
|
293
294
|
params = CGI::parse(@results['SearchRequestGet']['QueryString'])
|
294
295
|
sc = {}
|
295
296
|
sc['SearchMode'] = params['searchmode'].nil? ? 'all' : params['searchmode'][0].to_s
|
@@ -352,7 +353,7 @@ module EBSCO
|
|
352
353
|
|
353
354
|
# Current page number for the results. Returns an integer.
|
354
355
|
def page_number
|
355
|
-
retrieval_criteria['PageNumber']
|
356
|
+
retrieval_criteria['PageNumber']
|
356
357
|
end
|
357
358
|
|
358
359
|
# Results per page. Returns an integer.
|
data/lib/ebsco/eds/session.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
require 'ebsco/eds/version'
|
2
2
|
require 'ebsco/eds/info'
|
3
3
|
require 'ebsco/eds/results'
|
4
|
+
require 'net/http/persistent'
|
4
5
|
require 'faraday'
|
5
6
|
require 'faraday/detailed_logger'
|
6
7
|
require 'faraday_middleware'
|
8
|
+
require 'faraday/adapter/net_http_persistent'
|
9
|
+
require 'faraday_eds_middleware'
|
7
10
|
require 'logger'
|
8
11
|
require 'json'
|
9
12
|
require 'active_support'
|
10
|
-
require 'faraday_eds_middleware'
|
11
13
|
require 'ebsco/eds/configuration'
|
12
14
|
require 'digest/md5'
|
13
15
|
|
@@ -127,7 +129,6 @@ module EBSCO
|
|
127
129
|
end :
|
128
130
|
@debug = @config[:debug]
|
129
131
|
|
130
|
-
|
131
132
|
# use cache for auth token and info calls?
|
132
133
|
if @use_cache
|
133
134
|
cache_dir = File.join(@cache_dir, 'faraday_eds_cache')
|
@@ -222,8 +223,6 @@ module EBSCO
|
|
222
223
|
end
|
223
224
|
end
|
224
225
|
|
225
|
-
# todo: need a lookahead and lookbehind option for blacklight next/previous detail page - do search but don't change the current_page
|
226
|
-
|
227
226
|
# :category: Search & Retrieve Methods
|
228
227
|
# Performs a simple search. All other search options assume default values.
|
229
228
|
#
|
@@ -290,38 +289,44 @@ module EBSCO
|
|
290
289
|
max = rpp * pnum
|
291
290
|
min = max - rpp + 1
|
292
291
|
result_index = rid - min
|
293
|
-
cached_results = search(options)
|
292
|
+
cached_results = search(options, false, false)
|
293
|
+
cached_results_found = cached_results.stat_total_hits
|
294
294
|
|
295
295
|
# last result in set, get next result
|
296
296
|
if rid == max
|
297
|
-
|
298
|
-
|
297
|
+
options_next = options
|
298
|
+
options_next['page'] = cached_results.page_number+1
|
299
|
+
next_result_set = search(options_next, false, false)
|
299
300
|
result_next = next_result_set.records.first
|
300
301
|
else
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
if result_next.nil?
|
305
|
-
puts 'ERROR: result_next is nil'
|
302
|
+
unless rid == cached_results_found
|
303
|
+
result_next = cached_results.records[result_index+1]
|
304
|
+
end
|
306
305
|
end
|
307
306
|
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
307
|
+
if result_index == 0
|
308
|
+
# first result in set that's not the very first result, get previous result
|
309
|
+
if rid != 1
|
310
|
+
options_previous = options
|
311
|
+
options_previous['page'] = cached_results.page_number-1
|
312
|
+
previous_result_set = search(options_previous, false, false)
|
313
|
+
result_prev = previous_result_set.records.last
|
314
|
+
end
|
313
315
|
else
|
314
316
|
result_prev = cached_results.records[result_index-1]
|
315
317
|
end
|
316
318
|
|
317
|
-
if result_prev.nil?
|
318
|
-
puts 'ERROR: result_prev is nil'
|
319
|
-
end
|
320
|
-
|
321
319
|
# return json result set with just the previous and next records in it
|
322
320
|
r = empty_results(cached_results.stat_total_hits)
|
323
321
|
results = EBSCO::EDS::Results.new(r)
|
324
|
-
|
322
|
+
next_previous_records = []
|
323
|
+
unless result_prev.nil?
|
324
|
+
next_previous_records << result_prev
|
325
|
+
end
|
326
|
+
unless result_next.nil?
|
327
|
+
next_previous_records << result_next
|
328
|
+
end
|
329
|
+
results.records = next_previous_records
|
325
330
|
results.to_solr
|
326
331
|
|
327
332
|
end
|
@@ -669,11 +674,7 @@ module EBSCO
|
|
669
674
|
json_payload = JSON.generate(payload)
|
670
675
|
# add a cache_id to post search requests to make them cacheable
|
671
676
|
if path == '/edsapi/rest/Search'
|
672
|
-
#
|
673
|
-
json_payload = json_payload.gsub(/"PageNumber":[0-9]+,/,'')
|
674
|
-
json_payload = json_payload.gsub(/"ResultsPerPage":"([0-9]+)"/,'"ResultsPerPage":\1')
|
675
|
-
json_payload = json_payload.gsub(/"Actions":\[]/,'"Actions":["GoToPage(1)"]')
|
676
|
-
# puts 'CHECKSUM PAYLOAD: ' + json_payload.inspect
|
677
|
+
# puts 'CHECKSUM PAYLOAD: ' + json_payload
|
677
678
|
checksum = Digest::MD5.hexdigest json_payload
|
678
679
|
path << '?cache_id=' + checksum
|
679
680
|
end
|
@@ -752,7 +753,7 @@ module EBSCO
|
|
752
753
|
|
753
754
|
def connection
|
754
755
|
logger = Logger.new(@config[:log])
|
755
|
-
logger.level = Logger
|
756
|
+
logger.level = Logger.const_get(@config[:log_level])
|
756
757
|
Faraday.new(url: @config[:eds_api_base]) do |conn|
|
757
758
|
conn.headers['Content-Type'] = 'application/json;charset=UTF-8'
|
758
759
|
conn.headers['Accept'] = 'application/json'
|
@@ -760,13 +761,13 @@ module EBSCO
|
|
760
761
|
conn.headers['x-authenticationToken'] = @auth_token ? @auth_token : ''
|
761
762
|
conn.headers['User-Agent'] = @config[:user_agent]
|
762
763
|
conn.request :url_encoded
|
763
|
-
conn.use :eds_caching_middleware, store: @cache_store if @use_cache
|
764
|
+
conn.use :eds_caching_middleware, store: @cache_store, logger: @debug ? logger : nil if @use_cache
|
764
765
|
conn.use :eds_exception_middleware
|
765
766
|
conn.response :json, content_type: /\bjson$/
|
766
767
|
conn.response :detailed_logger, logger if @debug
|
767
768
|
conn.options[:open_timeout] = @config[:open_timeout]
|
768
769
|
conn.options[:timeout] = @config[:timeout]
|
769
|
-
conn.adapter
|
770
|
+
conn.adapter :net_http_persistent
|
770
771
|
end
|
771
772
|
end
|
772
773
|
|
data/lib/ebsco/eds/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ebsco-eds
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bill McKinney
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-08-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday
|
@@ -211,6 +211,20 @@ dependencies:
|
|
211
211
|
- - "~>"
|
212
212
|
- !ruby/object:Gem::Version
|
213
213
|
version: '5.0'
|
214
|
+
- !ruby/object:Gem::Dependency
|
215
|
+
name: net-http-persistent
|
216
|
+
requirement: !ruby/object:Gem::Requirement
|
217
|
+
requirements:
|
218
|
+
- - "~>"
|
219
|
+
- !ruby/object:Gem::Version
|
220
|
+
version: '2.9'
|
221
|
+
type: :runtime
|
222
|
+
prerelease: false
|
223
|
+
version_requirements: !ruby/object:Gem::Requirement
|
224
|
+
requirements:
|
225
|
+
- - "~>"
|
226
|
+
- !ruby/object:Gem::Version
|
227
|
+
version: '2.9'
|
214
228
|
- !ruby/object:Gem::Dependency
|
215
229
|
name: bundler
|
216
230
|
requirement: !ruby/object:Gem::Requirement
|