umlaut 3.0.0beta2 → 3.0.0beta3

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.
Files changed (58) hide show
  1. data/app/assets/javascripts/umlaut/{expand_contract_toggle.js → expand_contract_toggle.js.erb} +4 -4
  2. data/app/controllers/store_controller.rb +2 -6
  3. data/lib/service_adaptors/primo_service.rb +39 -14
  4. data/lib/service_adaptors/sfx.rb +23 -22
  5. data/lib/service_adaptors/worldcat_identities.rb +3 -3
  6. data/lib/umlaut/version.rb +1 -1
  7. data/test/integration/permalinks_test.rb +19 -0
  8. metadata +45 -132
  9. data/lib/exlibris/aleph/patron.rb +0 -64
  10. data/lib/exlibris/aleph/record.rb +0 -54
  11. data/lib/exlibris/aleph/rest_api.rb +0 -29
  12. data/lib/exlibris/primo/holding.rb +0 -186
  13. data/lib/exlibris/primo/related_link.rb +0 -17
  14. data/lib/exlibris/primo/rsrc.rb +0 -17
  15. data/lib/exlibris/primo/searcher.rb +0 -297
  16. data/lib/exlibris/primo/source/aleph.rb +0 -46
  17. data/lib/exlibris/primo/source/distribution/nyu_aleph.rb +0 -344
  18. data/lib/exlibris/primo/toc.rb +0 -17
  19. data/lib/exlibris/primo_ws.rb +0 -140
  20. data/test/dummy/tmp/cache/assets/C2A/410/sprockets%2Fd654b74912b4773a2534616863fb6565 +0 -0
  21. data/test/dummy/tmp/cache/assets/C45/A30/sprockets%2F39494895e462697b478d3d0c79298a26 +0 -0
  22. data/test/dummy/tmp/cache/assets/C5F/340/sprockets%2F99692920160b7a279b86a80415b79db7 +0 -0
  23. data/test/dummy/tmp/cache/assets/C70/4D0/sprockets%2F034ad2036e623081bd352800786dfe80 +0 -0
  24. data/test/dummy/tmp/cache/assets/C80/980/sprockets%2Fc94807409c1523d43e18d25f35d93c41 +0 -0
  25. data/test/dummy/tmp/cache/assets/CBD/730/sprockets%2F034c1086748b981c36672d5a56e7fed6 +0 -0
  26. data/test/dummy/tmp/cache/assets/CBF/B60/sprockets%2F08ca89671549936265dcb673bf02e36f +0 -0
  27. data/test/dummy/tmp/cache/assets/CC9/9F0/sprockets%2F306166316e2cafd13c15e62b51a2339d +0 -0
  28. data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  29. data/test/dummy/tmp/cache/assets/CF7/2B0/sprockets%2F25a7c73655bd3598173b39d9f98bcd46 +0 -0
  30. data/test/dummy/tmp/cache/assets/CFE/080/sprockets%2F37fe9f4255baddbd549a659914929398 +0 -0
  31. data/test/dummy/tmp/cache/assets/D16/F90/sprockets%2F5fe3c021048c6f9a6086bed7736d87b1 +0 -0
  32. data/test/dummy/tmp/cache/assets/D24/360/sprockets%2F6987b047a96dc685ba3cf39b31477f6d +0 -0
  33. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  34. data/test/dummy/tmp/cache/assets/D33/FD0/sprockets%2F2ba0b4e6334a77b923e5f770381bb2bf +0 -0
  35. data/test/dummy/tmp/cache/assets/D37/2B0/sprockets%2F40834fb07d7318c1fddd5003bd9e04f6 +0 -0
  36. data/test/dummy/tmp/cache/assets/D43/0D0/sprockets%2F682843a8d0795a5fbcfeb2f0c81727d0 +0 -0
  37. data/test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  38. data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  39. data/test/dummy/tmp/cache/assets/D6C/7D0/sprockets%2F8a05d6981ec0d38c51739bef0b3a9c2b +0 -0
  40. data/test/dummy/tmp/cache/assets/D74/4C0/sprockets%2F64fdf30f75592d6e45fcfc45a48d20a2 +0 -0
  41. data/test/dummy/tmp/cache/assets/D94/FF0/sprockets%2F3b56a1aa77de0d570c38a4a9d5f4b1d6 +0 -0
  42. data/test/dummy/tmp/cache/assets/D97/6B0/sprockets%2Fb070e8c799d1a4ad5e62e0a1ae3b83e6 +0 -0
  43. data/test/dummy/tmp/cache/assets/DA6/A80/sprockets%2F92e26d8e58d5bcc8b8f6c25d1b05b9c1 +0 -0
  44. data/test/dummy/tmp/cache/assets/DC0/D20/sprockets%2F1ccf7405cd252dcec4bf23af82e2563a +0 -0
  45. data/test/dummy/tmp/cache/assets/DD2/D80/sprockets%2Fc66d103807d0f971fbbcf9aa8b8b27ee +0 -0
  46. data/test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  47. data/test/dummy/tmp/cache/assets/DE8/790/sprockets%2Fd1333bde2b9aafcc712d11dd09ab35d8 +0 -0
  48. data/test/dummy/tmp/cache/assets/DF7/960/sprockets%2F99ac6db10b44a64fbba4ee847b35ba8b +0 -0
  49. data/test/dummy/tmp/cache/assets/DFC/040/sprockets%2F15ea81cf915c0cb1dfc9cc04c9fef364 +0 -0
  50. data/test/dummy/tmp/cache/assets/DFD/300/sprockets%2Fabac9489cf7f1db8ef00d72a1571ee1e +0 -0
  51. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  52. data/test/dummy/tmp/cache/assets/E38/FE0/sprockets%2Fe1fc875efa817cbb94a5d8de25ea4e6b +0 -0
  53. data/test/dummy/tmp/cache/assets/E5F/960/sprockets%2Fdc007b6cad5c7ef08e33ec28cfff0ef6 +0 -0
  54. data/test/unit/aleph_patron_test.rb +0 -44
  55. data/test/unit/aleph_record_benchmarks.rb +0 -32
  56. data/test/unit/aleph_record_test.rb +0 -35
  57. data/test/unit/primo_searcher_test.rb +0 -415
  58. data/test/unit/primo_ws_test.rb +0 -147
@@ -5,15 +5,15 @@ jQuery(document).ready(function($) {
5
5
  var content = $(this).next(".expand_contract_content");
6
6
  var icon = $(this).parent().find('img.toggle_icon');
7
7
 
8
- if (content.is(":visible")) {
9
- icon.attr("src", icon.attr("src").replace("list_open.png", "list_closed.png"));
8
+ if (content.is(":visible")) {
9
+ icon.attr("src", '<%= image_path("list_closed.png") %>');
10
10
  $(this).find(".expand_contract_action_label").text("Show ");
11
11
 
12
12
  content.hide();
13
13
 
14
14
  }
15
- else {
16
- icon.attr("src", icon.attr("src").replace("list_closed.png", "list_open.png"));
15
+ else {
16
+ icon.attr("src", '<%= image_path("list_open.png") %>');
17
17
  $(this).find(".expand_contract_action_label").text("Hide ");
18
18
  content.show();
19
19
  }
@@ -3,12 +3,8 @@ class StoreController < UmlautController
3
3
  require 'openurl'
4
4
  def index
5
5
 
6
- perm = Permalink.where(params[:id]).first
7
-
8
- unless perm
9
- raise NotFound.new("Permalink request could not be resolved. Returning 404. Permalink id: #{params[:id]}")
10
- end
11
-
6
+ perm = Permalink.find(params[:id])
7
+
12
8
  co = OpenURL::ContextObject.new
13
9
 
14
10
  # We might have a link to a Referent in our db, or we might
@@ -119,9 +119,12 @@
119
119
  # user system total real
120
120
  # PrimoService Minimum Config: 3.470000 0.050000 3.520000 ( 4.567797)
121
121
  # PrimoService Default Config: 3.420000 0.050000 3.470000 ( 3.990271)
122
-
123
122
  class PrimoService < Service
123
+ require 'exlibris-primo'
124
+
124
125
  required_config_params :base_url, :vid, :institution
126
+ # For matching purposes.
127
+ attr_reader :title, :author
125
128
 
126
129
  # Overwrites Service#new.
127
130
  def initialize(config)
@@ -187,10 +190,10 @@ class PrimoService < Service
187
190
  # Overwrites Service#handle.
188
191
  def handle(request)
189
192
  @identifier = request.referrer_id
190
- primo_id = @identifier.match(/primo-(.+)/)[1] if primo_identifier? unless @identifier.nil? or @identifier.match(/primo-(.+)/).nil?
193
+ @primo_id = @identifier.match(/primo-(.+)/)[1] if primo_identifier? unless @identifier.nil? or @identifier.match(/primo-(.+)/).nil?
191
194
  # DEPRECATED
192
195
  # Extend OpenURL standard to take Primo Doc Id
193
- primo_id = request.referent.metadata['primo'] unless request.referent.metadata['primo'].nil?
196
+ @primo_id = request.referent.metadata['primo'] unless request.referent.metadata['primo'].nil?
194
197
  Rails.logger.warn("Use of 'rft.primo' is deprecated. Please use the identifier instead.") unless request.referent.metadata['primo'].nil?
195
198
  # End DEPRECATED
196
199
  searcher_setup = {
@@ -198,13 +201,14 @@ class PrimoService < Service
198
201
  :config => primo_config
199
202
  }
200
203
  # don't send mal-formed issn
201
- issn = request.referent.metadata['issn'] if request.referent.metadata['issn'] =~ /\d{4}(-)?\d{3}(\d|X)/
202
- title = title(request)
204
+ @issn = request.referent.metadata['issn'] if request.referent.metadata['issn'] =~ /\d{4}(-)?\d{3}(\d|X)/
205
+ @isbn = request.referent.metadata['isbn']
206
+ @title = title(request)
203
207
  search_params = {
204
- :primo_id => primo_id,
205
- :isbn => request.referent.metadata['isbn'],
206
- :issn => issn,
207
- :title => title,
208
+ :primo_id => @primo_id,
209
+ :isbn => @isbn,
210
+ :issn => @issn,
211
+ :title => @title,
208
212
  :author => author(request),
209
213
  :genre => request.referent.metadata['genre']
210
214
  }
@@ -220,7 +224,7 @@ class PrimoService < Service
220
224
  end
221
225
  # Enhance the referent with metadata from Primo Searcher if primo id is present
222
226
  # i.e. if we did our search with the Primo system number
223
- if primo_id and @service_types.include?("referent_enhance")
227
+ if @primo_id and @service_types.include?("referent_enhance")
224
228
  @referent_enhancements.each do |key, options|
225
229
  value = (options[:value].nil?) ? key.to_sym : options[:value].to_sym
226
230
  request.referent.enhance_referent(
@@ -229,10 +233,10 @@ class PrimoService < Service
229
233
  ) if primo_searcher.respond_to? value and not primo_searcher.method(value).call.nil?
230
234
  end
231
235
  end
232
- # Get cover image only if primo_id is defined
236
+ # Get cover image only if @primo_id is defined
233
237
  # TODO: make cover image service smarter and only
234
238
  # include things that are actually URLs.
235
- if primo_id and @service_types.include?("cover_image")
239
+ if @primo_id and @service_types.include?("cover_image")
236
240
  cover_image = primo_searcher.cover_image
237
241
  unless cover_image.nil?
238
242
  request.add_service_response(
@@ -253,6 +257,11 @@ class PrimoService < Service
253
257
  @holding_attributes.each do |attr|
254
258
  service_data[attr] = holding.method(attr).call
255
259
  end
260
+ # Umlaut specific attributes.
261
+ service_data[:match_reliability] =
262
+ (reliable_match?(:title => holding.title, :author => holding.author)) ?
263
+ ServiceResponse::MatchExact : ServiceResponse::MatchUnsure
264
+ service_data[:request_link_supports_ajax_call] = false
256
265
  # Only add one service type, either "primo_source" OR "holding", not both.
257
266
  service_type = (@service_types.include?("primo_source")) ? "primo_source" : "holding"
258
267
  # Add some other holding information for compatibility with default holding partial
@@ -272,12 +281,12 @@ class PrimoService < Service
272
281
  if @service_types.include?("holding_search")
273
282
  if holdings.empty? and
274
283
  not primo_identifier? and
275
- not title.nil?
284
+ not @title.nil?
276
285
  service_data = {}
277
286
  service_data[:type] = "link_to_search"
278
287
  service_data[:display_text] = (@holding_search_text.nil?) ? "Search for this title." : @holding_search_text
279
288
  service_data[:note] = ""
280
- service_data[:url] = @base_url+"/primo_library/libweb/action/dlSearch.do?institution=#{@holding_search_institution}&vid=#{@vid}&onCampus=false&query=#{CGI::escape("title,exact,"+title)}&indx=1&bulkSize=10&group=GUEST"
289
+ service_data[:url] = @base_url+"/primo_library/libweb/action/dlSearch.do?institution=#{@holding_search_institution}&vid=#{@vid}&onCampus=false&query=#{CGI::escape("title,exact,"+@title)}&indx=1&bulkSize=10&group=GUEST"
281
290
  request.add_service_response(
282
291
  service_data.merge(
283
292
  :service => self,
@@ -390,6 +399,22 @@ class PrimoService < Service
390
399
  end
391
400
 
392
401
  private
402
+ # Determine how sure we are that this is a match.
403
+ # Dynamically compares record metadata to input values
404
+ # based on the values passed in.
405
+ # Minimum requirement is to check title.
406
+ def reliable_match?(record_metadata)
407
+ return true unless (@primo_id.nil? or @primo_id.empty?)
408
+ return true unless (@issn.nil? or @issn.empty?) and (@isbn.nil? or @isbn.empty?)
409
+ return false if (record_metadata.nil? or record_metadata.empty? or record_metadata[:title].nil? or record_metadata[:title].empty?)
410
+ # Titles must be equal
411
+ return false unless record_metadata[:title].downcase.eql?(@title.downcase)
412
+ # Compare record metadata with metadata that was passed in.
413
+ # Only check if the record metadata value contains the input value since we can't be too strict.
414
+ record_metadata.each { |type, value| return false if value.downcase.match("#{self.method(type).call}".downcase).nil?}
415
+ return true
416
+ end
417
+
393
418
  def primo_config
394
419
  default_file = "#{Rails.root}/config/primo.yml"
395
420
  config_file = @primo_config.nil? ? default_file : "#{Rails.root}/config/"+ @primo_config
@@ -193,8 +193,7 @@ class Sfx < Service
193
193
  # double-escaped, weirdly), so
194
194
  # we need to extract the string, unescape it, and then feed it to Nokogiri
195
195
  # again.
196
- ctx_obj_atts =
197
- CGI.unescapeHTML( sfx_obj.at('./ctx_obj_attributes').inner_html)
196
+ ctx_obj_atts = sfx_obj.at('./ctx_obj_attributes').inner_text
198
197
 
199
198
  perl_data = Nokogiri::XML( ctx_obj_atts )
200
199
  # parse it into an OpenURL, we might need it like that.
@@ -205,16 +204,16 @@ class Sfx < Service
205
204
  # get SFX objectID
206
205
  object_id_node =
207
206
  perl_data.at("./perldata/hash/item[@key='rft.object_id']")
208
- object_id = object_id_node ? object_id_node.inner_html : nil
207
+ object_id = object_id_node ? object_id_node.inner_text : nil
209
208
 
210
209
  # Get SFX requestID
211
210
  request_id_node =
212
211
  perl_data.at("./perldata/hash/item[@key='sfx.request_id']")
213
- request_id = request_id_node ? request_id_node.inner_html : nil
212
+ request_id = request_id_node ? request_id_node.inner_text : nil
214
213
 
215
214
  # Get targets service ids
216
215
  sfx_target_service_ids =
217
- sfx_obj.search('ctx_obj_targets/target/target_service_id').collect {|e| e.inner_html}
216
+ sfx_obj.search('ctx_obj_targets/target/target_service_id').collect {|e| e.inner_text}
218
217
 
219
218
 
220
219
 
@@ -225,12 +224,12 @@ class Sfx < Service
225
224
  response_data = {}
226
225
 
227
226
  # First check @extra_targets_of_interest
228
- sfx_target_name = target.at('./target_name').inner_html
227
+ sfx_target_name = target.at('./target_name').inner_text
229
228
  umlaut_service = @extra_targets_of_interest[sfx_target_name]
230
229
 
231
230
  # If not found, look for it in services_of_interest
232
231
  unless ( umlaut_service )
233
- sfx_service_type = target.at("./service_type").inner_html
232
+ sfx_service_type = target.at("./service_type").inner_text
234
233
  umlaut_service = @services_of_interest[sfx_service_type]
235
234
  end
236
235
 
@@ -257,12 +256,12 @@ class Sfx < Service
257
256
 
258
257
  if ( umlaut_service ) # Okay, it's in services or targets of interest
259
258
  if (target/"./displayer")
260
- source = "SFX/"+(target/"./displayer").inner_html
259
+ source = "SFX/"+(target/"./displayer").inner_text
261
260
  else
262
261
  source = "SFX"+URI.parse(self.url).path
263
262
  end
264
263
 
265
- target_service_id = (target/"./target_service_id").inner_html
264
+ target_service_id = (target/"./target_service_id").inner_text
266
265
 
267
266
  coverage = nil
268
267
  if ( @get_coverage )
@@ -270,12 +269,12 @@ class Sfx < Service
270
269
  # in the SFX Admin API configuration.
271
270
  thresholds_str = ""
272
271
  target.search('coverage/coverage_text/threshold_text/coverage_statement').each do | threshold |
273
- thresholds_str += threshold.inner_html.to_s + ".\n";
272
+ thresholds_str += threshold.inner_text.to_s + ".\n";
274
273
  end
275
274
 
276
275
  embargoes_str = "";
277
276
  target.search('coverage/coverage_text/embargo_text/embargo_statement').each do |embargo |
278
- embargoes_str += embargo.inner_html.to_s + ".\n";
277
+ embargoes_str += embargo.inner_text.to_s + ".\n";
279
278
  end
280
279
 
281
280
  unless ( thresholds_str.blank? && embargoes_str.blank? )
@@ -312,12 +311,12 @@ class Sfx < Service
312
311
  if ( sfx_service_type == 'getDocumentDelivery' )
313
312
  value_string = request_id
314
313
  else
315
- value_string = (target/"./target_service_id").inner_html
314
+ value_string = (target/"./target_service_id").inner_text
316
315
  end
317
-
318
- response_data[:url] = CGI.unescapeHTML((target/"./target_url").inner_html)
319
- response_data[:notes] = related_note.to_s + CGI.unescapeHTML((target/"./note").inner_html)
320
- response_data[:authentication] = CGI.unescapeHTML((target/"./authentication").inner_html)
316
+
317
+ response_data[:url] = CGI.unescapeHTML((target/"./target_url").inner_text)
318
+ response_data[:notes] = related_note.to_s + CGI.unescapeHTML((target/"./note").inner_text)
319
+ response_data[:authentication] = CGI.unescapeHTML((target/"./authentication").inner_text)
321
320
  response_data[:source] = source
322
321
  response_data[:coverage] = coverage if coverage
323
322
 
@@ -325,7 +324,7 @@ class Sfx < Service
325
324
  response_data[:sfx_base_url] = @base_url
326
325
  response_data[:sfx_obj_index] = sfx_obj_index + 1 # sfx is 1 indexed
327
326
  response_data[:sfx_target_index] = target_index + 1
328
- response_data[:sfx_request_id] = (perl_data/"//hash/item[@key='sfx.request_id']").first.inner_html
327
+ response_data[:sfx_request_id] = (perl_data/"//hash/item[@key='sfx.request_id']").first.inner_text
329
328
  response_data[:sfx_target_service_id] = target_service_id
330
329
  response_data[:sfx_target_name] = sfx_target_name
331
330
  # At url-generation time, the request isn't available to us anymore,
@@ -342,7 +341,7 @@ class Sfx < Service
342
341
  # Some debug info
343
342
  response_data[:debug_info] =" Target: #{sfx_target_name} ; SFX object ID: #{object_id}"
344
343
 
345
- response_data[:display_text] = (target/"./target_public_name").inner_html
344
+ response_data[:display_text] = (target/"./target_public_name").inner_text
346
345
 
347
346
  request.add_service_response(
348
347
  response_data.merge(
@@ -453,7 +452,7 @@ class Sfx < Service
453
452
  doc.search('perldata/hash/item').each do |item|
454
453
  key = item['key'].to_s
455
454
 
456
- value = item.inner_html
455
+ value = item.inner_text
457
456
 
458
457
  # Some normalization. SFX uses rft.year, which is not actually
459
458
  # legal. Stick it in rft.date instead.
@@ -477,11 +476,13 @@ class Sfx < Service
477
476
  array_i = array_items[0] unless array_items.blank?
478
477
 
479
478
  prefix = prefix.slice(1, prefix.length)
480
- value = array_i ? array_i.inner_html : nil
479
+ value = array_i ? array_i.inner_text : nil
481
480
  end
482
481
 
483
482
  # But this still has HTML entities in it sometimes. Now we've
484
483
  # got to decode THAT.
484
+ # TODO: Are we sure we need to do this? We need an example
485
+ # from SFX result to test, it's potentially expensive.
485
486
  value = html_ent_coder.decode(value)
486
487
 
487
488
  # object_type? Fix that to be the right way.
@@ -497,13 +498,13 @@ class Sfx < Service
497
498
  if (prefix=='@rft_id')
498
499
  identifiers = item.search('array/item')
499
500
  identifiers.each do |id|
500
- co.referent.add_identifier(id.inner_html)
501
+ co.referent.add_identifier(id.inner_text)
501
502
  end
502
503
  end
503
504
  if (prefix=='@rfr_id')
504
505
  identifiers = item.search('array/item')
505
506
  identifiers.each do |id|
506
- co.referrer.add_identifier(id.inner_html)
507
+ co.referrer.add_identifier(id.inner_text)
507
508
  end
508
509
  end
509
510
  end
@@ -135,7 +135,7 @@ class WorldcatIdentities < Service
135
135
  # we only request 1 record to hopefully speed things up.
136
136
  link = @url + index + '?query=' +query + "&maximumRecords=1"
137
137
 
138
- result = open(link).read
138
+ result = open(link, "Accept" => "text/xml").read
139
139
  xml = Nokogiri::XML(result)
140
140
 
141
141
  # Identities namespaces are all over the place, it's too hard
@@ -143,8 +143,8 @@ class WorldcatIdentities < Service
143
143
  # instead.
144
144
  xml.remove_namespaces!
145
145
 
146
-
147
146
  return nil if xml.at("numberOfRecords").inner_text == '0'
147
+
148
148
  create_link(request, xml)
149
149
  create_wikipedia_link(request, xml) if @wikipedia_link
150
150
  create_openurl_widely_held(request, xml) if @openurl_widely_held
@@ -588,4 +588,4 @@ class WorldcatIdentities < Service
588
588
  "wit" => "Witness"
589
589
  }
590
590
 
591
- end
591
+ end
@@ -1,3 +1,3 @@
1
1
  module Umlaut
2
- VERSION = "3.0.0beta2"
2
+ VERSION = "3.0.0beta3"
3
3
  end
@@ -0,0 +1,19 @@
1
+ require 'test_helper'
2
+
3
+ class PermalinksTest < ActionDispatch::IntegrationTest
4
+
5
+
6
+ test "missing id" do
7
+ sess = open_session
8
+
9
+ missing_id = 999999999
10
+
11
+ sess.get "/go/#{missing_id}"
12
+
13
+ assert_response(:missing)
14
+
15
+ end
16
+
17
+
18
+
19
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: umlaut
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0beta2
4
+ version: 3.0.0beta3
5
5
  prerelease: 5
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-28 00:00:00.000000000Z
12
+ date: 2012-03-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &76003100 !ruby/object:Gem::Requirement
16
+ requirement: &131198600 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.2.2
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *76003100
24
+ version_requirements: *131198600
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: jquery-rails
27
- requirement: &76002660 !ruby/object:Gem::Requirement
27
+ requirement: &131198180 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *76002660
35
+ version_requirements: *131198180
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: nokogiri
38
- requirement: &76002040 !ruby/object:Gem::Requirement
38
+ requirement: &131197620 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - =
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.5.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *76002040
46
+ version_requirements: *131197620
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: openurl
49
- requirement: &76001480 !ruby/object:Gem::Requirement
49
+ requirement: &131197120 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.3.0
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *76001480
57
+ version_requirements: *131197120
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: marc
60
- requirement: &76000980 !ruby/object:Gem::Requirement
60
+ requirement: &131196640 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 0.4.3
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *76000980
68
+ version_requirements: *131196640
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: isbn
71
- requirement: &76000560 !ruby/object:Gem::Requirement
71
+ requirement: &131196260 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *76000560
79
+ version_requirements: *131196260
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: htmlentities
82
- requirement: &75998660 !ruby/object:Gem::Requirement
82
+ requirement: &131195800 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *75998660
90
+ version_requirements: *131195800
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: multi_json
93
- requirement: &75998200 !ruby/object:Gem::Requirement
93
+ requirement: &133072740 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :runtime
100
100
  prerelease: false
101
- version_requirements: *75998200
101
+ version_requirements: *133072740
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: confstruct
104
- requirement: &75997580 !ruby/object:Gem::Requirement
104
+ requirement: &133072240 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0.2'
110
110
  type: :runtime
111
111
  prerelease: false
112
- version_requirements: *75997580
112
+ version_requirements: *133072240
113
113
  - !ruby/object:Gem::Dependency
114
- name: soap4r-ruby1.9
115
- requirement: &75997140 !ruby/object:Gem::Requirement
114
+ name: exlibris-primo
115
+ requirement: &133071820 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,21 +120,10 @@ dependencies:
120
120
  version: '0'
121
121
  type: :runtime
122
122
  prerelease: false
123
- version_requirements: *75997140
124
- - !ruby/object:Gem::Dependency
125
- name: httparty
126
- requirement: &75996580 !ruby/object:Gem::Requirement
127
- none: false
128
- requirements:
129
- - - ! '>='
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :runtime
133
- prerelease: false
134
- version_requirements: *75996580
123
+ version_requirements: *133071820
135
124
  - !ruby/object:Gem::Dependency
136
125
  name: single_test
137
- requirement: &75996060 !ruby/object:Gem::Requirement
126
+ requirement: &133071280 !ruby/object:Gem::Requirement
138
127
  none: false
139
128
  requirements:
140
129
  - - ~>
@@ -142,10 +131,10 @@ dependencies:
142
131
  version: 0.5.1
143
132
  type: :development
144
133
  prerelease: false
145
- version_requirements: *75996060
134
+ version_requirements: *133071280
146
135
  - !ruby/object:Gem::Dependency
147
136
  name: uglifier
148
- requirement: &75995540 !ruby/object:Gem::Requirement
137
+ requirement: &133070860 !ruby/object:Gem::Requirement
149
138
  none: false
150
139
  requirements:
151
140
  - - ! '>='
@@ -153,10 +142,21 @@ dependencies:
153
142
  version: '0'
154
143
  type: :development
155
144
  prerelease: false
156
- version_requirements: *75995540
145
+ version_requirements: *133070860
157
146
  - !ruby/object:Gem::Dependency
158
147
  name: therubyracer
159
- requirement: &75995060 !ruby/object:Gem::Requirement
148
+ requirement: &133070400 !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: *133070400
157
+ - !ruby/object:Gem::Dependency
158
+ name: ruby-prof
159
+ requirement: &133069980 !ruby/object:Gem::Requirement
160
160
  none: false
161
161
  requirements:
162
162
  - - ! '>='
@@ -164,7 +164,7 @@ dependencies:
164
164
  version: '0'
165
165
  type: :development
166
166
  prerelease: false
167
- version_requirements: *75995060
167
+ version_requirements: *133069980
168
168
  description:
169
169
  email:
170
170
  - umlaut-general@rubyforge.org
@@ -216,8 +216,8 @@ files:
216
216
  - app/assets/javascripts/umlaut/ajax_windows.js
217
217
  - app/assets/javascripts/umlaut/simple_visible_toggle.js
218
218
  - app/assets/javascripts/umlaut/ensure_window_size.js.erb
219
- - app/assets/javascripts/umlaut/expand_contract_toggle.js
220
219
  - app/assets/javascripts/umlaut/search_autocomplete.js
220
+ - app/assets/javascripts/umlaut/expand_contract_toggle.js.erb
221
221
  - app/assets/stylesheets/umlaut.css
222
222
  - app/models/sfx_url.rb
223
223
  - app/models/crossref_lookup.rb
@@ -319,17 +319,6 @@ files:
319
319
  - lib/CronTab.rb
320
320
  - lib/marc_helper.rb
321
321
  - lib/opensearch_feed.rb
322
- - lib/exlibris/primo_ws.rb
323
- - lib/exlibris/primo/source/aleph.rb
324
- - lib/exlibris/primo/source/distribution/nyu_aleph.rb
325
- - lib/exlibris/primo/toc.rb
326
- - lib/exlibris/primo/holding.rb
327
- - lib/exlibris/primo/searcher.rb
328
- - lib/exlibris/primo/rsrc.rb
329
- - lib/exlibris/primo/related_link.rb
330
- - lib/exlibris/aleph/record.rb
331
- - lib/exlibris/aleph/rest_api.rb
332
- - lib/exlibris/aleph/patron.rb
333
322
  - lib/holding.rb
334
323
  - lib/umlaut_configurable.rb
335
324
  - lib/umlaut/routes.rb
@@ -385,40 +374,7 @@ files:
385
374
  - README.md
386
375
  - ./test/integration/request_test.rb
387
376
  - ./test/integration/request_reuse_test.rb
388
- - ./test/dummy/tmp/cache/assets/DA6/A80/sprockets%2F92e26d8e58d5bcc8b8f6c25d1b05b9c1
389
- - ./test/dummy/tmp/cache/assets/D16/F90/sprockets%2F5fe3c021048c6f9a6086bed7736d87b1
390
- - ./test/dummy/tmp/cache/assets/DE8/790/sprockets%2Fd1333bde2b9aafcc712d11dd09ab35d8
391
- - ./test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6
392
- - ./test/dummy/tmp/cache/assets/D94/FF0/sprockets%2F3b56a1aa77de0d570c38a4a9d5f4b1d6
393
- - ./test/dummy/tmp/cache/assets/CBD/730/sprockets%2F034c1086748b981c36672d5a56e7fed6
394
- - ./test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953
395
- - ./test/dummy/tmp/cache/assets/E5F/960/sprockets%2Fdc007b6cad5c7ef08e33ec28cfff0ef6
396
- - ./test/dummy/tmp/cache/assets/D24/360/sprockets%2F6987b047a96dc685ba3cf39b31477f6d
397
- - ./test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705
398
- - ./test/dummy/tmp/cache/assets/CFE/080/sprockets%2F37fe9f4255baddbd549a659914929398
399
- - ./test/dummy/tmp/cache/assets/DFD/300/sprockets%2Fabac9489cf7f1db8ef00d72a1571ee1e
400
- - ./test/dummy/tmp/cache/assets/CF7/2B0/sprockets%2F25a7c73655bd3598173b39d9f98bcd46
401
- - ./test/dummy/tmp/cache/assets/D43/0D0/sprockets%2F682843a8d0795a5fbcfeb2f0c81727d0
402
- - ./test/dummy/tmp/cache/assets/C80/980/sprockets%2Fc94807409c1523d43e18d25f35d93c41
403
- - ./test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994
404
- - ./test/dummy/tmp/cache/assets/D6C/7D0/sprockets%2F8a05d6981ec0d38c51739bef0b3a9c2b
405
- - ./test/dummy/tmp/cache/assets/D37/2B0/sprockets%2F40834fb07d7318c1fddd5003bd9e04f6
406
- - ./test/dummy/tmp/cache/assets/DFC/040/sprockets%2F15ea81cf915c0cb1dfc9cc04c9fef364
407
- - ./test/dummy/tmp/cache/assets/DF7/960/sprockets%2F99ac6db10b44a64fbba4ee847b35ba8b
408
- - ./test/dummy/tmp/cache/assets/CBF/B60/sprockets%2F08ca89671549936265dcb673bf02e36f
409
- - ./test/dummy/tmp/cache/assets/D97/6B0/sprockets%2Fb070e8c799d1a4ad5e62e0a1ae3b83e6
410
- - ./test/dummy/tmp/cache/assets/CC9/9F0/sprockets%2F306166316e2cafd13c15e62b51a2339d
411
- - ./test/dummy/tmp/cache/assets/E38/FE0/sprockets%2Fe1fc875efa817cbb94a5d8de25ea4e6b
412
- - ./test/dummy/tmp/cache/assets/C70/4D0/sprockets%2F034ad2036e623081bd352800786dfe80
413
- - ./test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655
414
- - ./test/dummy/tmp/cache/assets/C45/A30/sprockets%2F39494895e462697b478d3d0c79298a26
415
- - ./test/dummy/tmp/cache/assets/DC0/D20/sprockets%2F1ccf7405cd252dcec4bf23af82e2563a
416
- - ./test/dummy/tmp/cache/assets/D74/4C0/sprockets%2F64fdf30f75592d6e45fcfc45a48d20a2
417
- - ./test/dummy/tmp/cache/assets/C5F/340/sprockets%2F99692920160b7a279b86a80415b79db7
418
- - ./test/dummy/tmp/cache/assets/DD2/D80/sprockets%2Fc66d103807d0f971fbbcf9aa8b8b27ee
419
- - ./test/dummy/tmp/cache/assets/C2A/410/sprockets%2Fd654b74912b4773a2534616863fb6565
420
- - ./test/dummy/tmp/cache/assets/D33/FD0/sprockets%2F2ba0b4e6334a77b923e5f770381bb2bf
421
- - ./test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af
377
+ - ./test/integration/permalinks_test.rb
422
378
  - ./test/dummy/tmp/performance/ProfilerTest#test_puts_foo_process_time_graph.html
423
379
  - ./test/dummy/tmp/performance/BenchmarkerTest#test_puts_foo_gc_time.csv
424
380
  - ./test/dummy/tmp/performance/minus.png
@@ -465,13 +421,8 @@ files:
465
421
  - ./test/dummy/db/schema.rb
466
422
  - ./test/dummy/db/migrate/20120229192032_umlaut_init.umlaut.rb
467
423
  - ./test/performance/browsing_test.rb
468
- - ./test/unit/aleph_record_benchmarks.rb
469
424
  - ./test/unit/aws_product_sign_test.rb
470
425
  - ./test/unit/service_test.rb
471
- - ./test/unit/aleph_patron_test.rb
472
- - ./test/unit/primo_ws_test.rb
473
- - ./test/unit/primo_searcher_test.rb
474
- - ./test/unit/aleph_record_test.rb
475
426
  - ./test/unit/collection_test.rb
476
427
  - ./test/unit/active_record_connection_pool_test.rb
477
428
  - ./test/unit/service_response_test.rb
@@ -500,7 +451,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
500
451
  version: '0'
501
452
  segments:
502
453
  - 0
503
- hash: 4604852421173402450
454
+ hash: 907568800525957015
504
455
  required_rubygems_version: !ruby/object:Gem::Requirement
505
456
  none: false
506
457
  requirements:
@@ -509,7 +460,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
509
460
  version: 1.3.1
510
461
  requirements: []
511
462
  rubyforge_project:
512
- rubygems_version: 1.8.10
463
+ rubygems_version: 1.8.15
513
464
  signing_key:
514
465
  specification_version: 3
515
466
  summary: For Libraries, a just-in-time last-mile service aggregator, taking OpenURL
@@ -517,40 +468,7 @@ summary: For Libraries, a just-in-time last-mile service aggregator, taking Open
517
468
  test_files:
518
469
  - ./test/integration/request_test.rb
519
470
  - ./test/integration/request_reuse_test.rb
520
- - ./test/dummy/tmp/cache/assets/DA6/A80/sprockets%2F92e26d8e58d5bcc8b8f6c25d1b05b9c1
521
- - ./test/dummy/tmp/cache/assets/D16/F90/sprockets%2F5fe3c021048c6f9a6086bed7736d87b1
522
- - ./test/dummy/tmp/cache/assets/DE8/790/sprockets%2Fd1333bde2b9aafcc712d11dd09ab35d8
523
- - ./test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6
524
- - ./test/dummy/tmp/cache/assets/D94/FF0/sprockets%2F3b56a1aa77de0d570c38a4a9d5f4b1d6
525
- - ./test/dummy/tmp/cache/assets/CBD/730/sprockets%2F034c1086748b981c36672d5a56e7fed6
526
- - ./test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953
527
- - ./test/dummy/tmp/cache/assets/E5F/960/sprockets%2Fdc007b6cad5c7ef08e33ec28cfff0ef6
528
- - ./test/dummy/tmp/cache/assets/D24/360/sprockets%2F6987b047a96dc685ba3cf39b31477f6d
529
- - ./test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705
530
- - ./test/dummy/tmp/cache/assets/CFE/080/sprockets%2F37fe9f4255baddbd549a659914929398
531
- - ./test/dummy/tmp/cache/assets/DFD/300/sprockets%2Fabac9489cf7f1db8ef00d72a1571ee1e
532
- - ./test/dummy/tmp/cache/assets/CF7/2B0/sprockets%2F25a7c73655bd3598173b39d9f98bcd46
533
- - ./test/dummy/tmp/cache/assets/D43/0D0/sprockets%2F682843a8d0795a5fbcfeb2f0c81727d0
534
- - ./test/dummy/tmp/cache/assets/C80/980/sprockets%2Fc94807409c1523d43e18d25f35d93c41
535
- - ./test/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994
536
- - ./test/dummy/tmp/cache/assets/D6C/7D0/sprockets%2F8a05d6981ec0d38c51739bef0b3a9c2b
537
- - ./test/dummy/tmp/cache/assets/D37/2B0/sprockets%2F40834fb07d7318c1fddd5003bd9e04f6
538
- - ./test/dummy/tmp/cache/assets/DFC/040/sprockets%2F15ea81cf915c0cb1dfc9cc04c9fef364
539
- - ./test/dummy/tmp/cache/assets/DF7/960/sprockets%2F99ac6db10b44a64fbba4ee847b35ba8b
540
- - ./test/dummy/tmp/cache/assets/CBF/B60/sprockets%2F08ca89671549936265dcb673bf02e36f
541
- - ./test/dummy/tmp/cache/assets/D97/6B0/sprockets%2Fb070e8c799d1a4ad5e62e0a1ae3b83e6
542
- - ./test/dummy/tmp/cache/assets/CC9/9F0/sprockets%2F306166316e2cafd13c15e62b51a2339d
543
- - ./test/dummy/tmp/cache/assets/E38/FE0/sprockets%2Fe1fc875efa817cbb94a5d8de25ea4e6b
544
- - ./test/dummy/tmp/cache/assets/C70/4D0/sprockets%2F034ad2036e623081bd352800786dfe80
545
- - ./test/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655
546
- - ./test/dummy/tmp/cache/assets/C45/A30/sprockets%2F39494895e462697b478d3d0c79298a26
547
- - ./test/dummy/tmp/cache/assets/DC0/D20/sprockets%2F1ccf7405cd252dcec4bf23af82e2563a
548
- - ./test/dummy/tmp/cache/assets/D74/4C0/sprockets%2F64fdf30f75592d6e45fcfc45a48d20a2
549
- - ./test/dummy/tmp/cache/assets/C5F/340/sprockets%2F99692920160b7a279b86a80415b79db7
550
- - ./test/dummy/tmp/cache/assets/DD2/D80/sprockets%2Fc66d103807d0f971fbbcf9aa8b8b27ee
551
- - ./test/dummy/tmp/cache/assets/C2A/410/sprockets%2Fd654b74912b4773a2534616863fb6565
552
- - ./test/dummy/tmp/cache/assets/D33/FD0/sprockets%2F2ba0b4e6334a77b923e5f770381bb2bf
553
- - ./test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af
471
+ - ./test/integration/permalinks_test.rb
554
472
  - ./test/dummy/tmp/performance/ProfilerTest#test_puts_foo_process_time_graph.html
555
473
  - ./test/dummy/tmp/performance/BenchmarkerTest#test_puts_foo_gc_time.csv
556
474
  - ./test/dummy/tmp/performance/minus.png
@@ -597,13 +515,8 @@ test_files:
597
515
  - ./test/dummy/db/schema.rb
598
516
  - ./test/dummy/db/migrate/20120229192032_umlaut_init.umlaut.rb
599
517
  - ./test/performance/browsing_test.rb
600
- - ./test/unit/aleph_record_benchmarks.rb
601
518
  - ./test/unit/aws_product_sign_test.rb
602
519
  - ./test/unit/service_test.rb
603
- - ./test/unit/aleph_patron_test.rb
604
- - ./test/unit/primo_ws_test.rb
605
- - ./test/unit/primo_searcher_test.rb
606
- - ./test/unit/aleph_record_test.rb
607
520
  - ./test/unit/collection_test.rb
608
521
  - ./test/unit/active_record_connection_pool_test.rb
609
522
  - ./test/unit/service_response_test.rb