umlaut 3.0.0beta2 → 3.0.0beta3

Sign up to get free protection for your applications and to get access to all the features.
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