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