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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c181e960b6639886aa6ef318e40e78f9f8db0846
4
- data.tar.gz: b56327ab29bb0032bc6914cc674f41cf330d3609
3
+ metadata.gz: 5353c7f332e965904370d4defe3ffddc1c188992
4
+ data.tar.gz: b2fb35896f412a06d76c3889337b9741f14d4bc9
5
5
  SHA512:
6
- metadata.gz: 578554408924a621087faeb1d83ee418f7238ce9fc9fd171084853b9566620c03ccfeeeb20ae320fb08f7798b2959b7305d101862fa3205bd46521bfb4a19719
7
- data.tar.gz: 9cc7a39fd98a1d6cb67e99d41e71c8befe0105b90655a2427be75d46f6dbabbdb02431afd9d75563af5a10ef58b3d1cd3458dba90dbc990838a4c3afe9b02ab0
6
+ metadata.gz: c586fb16ec00a3b975b24ff65a762e9aaff0993d4578fee0ed2f4f8f8b142e9abfb95f61fadccaf40ac2d2375bc13ea1c365f4178f399f30de85028b1e552646
7
+ data.tar.gz: cbc65d09fa611f4f25cd51d9529b0722e3be36ee3cfc1b226467d6d2beb67d72383a6b59ef14195e67838bcbc3e5b9c885ab4b2ff203670479a374cd29852160
@@ -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 => 6
38
+ :open_timeout => 12
38
39
  }
39
40
  @valid_config_keys = @config.keys
40
41
  end
@@ -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
@@ -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
- @PageNumber = value.to_i + 1
553
+ # when 'start'
554
+ # @PageNumber = value.to_i + 1
550
555
 
551
556
  # ====================================================================================
552
557
  # highlight
@@ -88,7 +88,7 @@ module EBSCO
88
88
  # returns solr search response format
89
89
  def to_solr
90
90
 
91
- solr_start = (page_number-1) * results_per_page
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'] || 1
356
+ retrieval_criteria['PageNumber']
356
357
  end
357
358
 
358
359
  # Results per page. Returns an integer.
@@ -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
- @search_options.add_actions("GoToPage(#{cached_results.page_number+1})", @info)
298
- next_result_set = search({}, true, false)
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
- result_next = cached_results.records[result_index+1]
302
- end
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
- # first result in set that's not the very first result, get previous result
309
- if result_index == 0 and rid != 1
310
- @search_options.add_actions("GoToPage(#{cached_results.page_number-1})", @info)
311
- previous_result_set = search({}, true, false)
312
- result_prev = previous_result_set.records.last
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
- results.records = [result_prev, result_next]
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
- # replacements to avoid duplicate caches
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::DEBUG
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 Faraday.default_adapter
770
+ conn.adapter :net_http_persistent
770
771
  end
771
772
  end
772
773
 
@@ -1,5 +1,5 @@
1
1
  module EBSCO
2
2
  module EDS
3
- VERSION = '0.2.9.pre'
3
+ VERSION = '0.3.0.pre'
4
4
  end
5
5
  end
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.2.9.pre
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-07-31 00:00:00.000000000 Z
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