ebsco-eds 0.2.9.pre → 0.3.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- 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
|