umlaut 4.0.1 → 4.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OGNlZDU2MTIxYjg1Y2ViYjZkNThjNDY4MjJhMDQ1ZDlkNTFjMjg5Mg==
4
+ M2JkNmQyMDRkYTIxNGE2YjZlOWNjYWM5MDY2NDk1MmNlYjBiMzg2Yw==
5
5
  data.tar.gz: !binary |-
6
- ZDYwM2IwZDE2MDVkMjY1ZDE2ZjRjZmVmYTg0MWMxNWM2ZjNlNDMxNw==
6
+ ZTEzMzAzNjM1OWZiMWY5YzAyZjFiYTBhZDYxYzE1MjdlMmVmMGU5ZQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZDJkODQ3OTZhY2VlMGE2OWNkMmZiZWJhM2RlZjY3ZDA0MzUwOWEzNGRiNGQy
10
- MmFjY2ZjNzFiYjQxNzY2Mzc0MzZiMTUyY2UxMDRhZDZjODAxMDZmNWY0ODU2
11
- ZGNhNTdjZDI0ZjgzMGM1NTdmNGUzNzUzYjlhYjViYTZkZDZjMjk=
9
+ YmFmZjIzMDUyN2RmNDIxMTI4MDJmNTI2ZjNhMDRkYmFlYjg0MzkwMTIzYWM4
10
+ YmEyMDA2MTNhZDJlNzk3NTc4YzczNzAyN2ZjODliY2E5MWMwYjI4NWRhZjY5
11
+ ZWMzNDEwODBjNmE0OTgwNTc2NmZjNDQxMjY5NDc0MWE2Y2Q3ZWY=
12
12
  data.tar.gz: !binary |-
13
- MzlhZmI2YmE3ZjFiOWM3MDhhNmM0MTdhZmM5N2U5NmYzYWVjOGYwMDg2Y2Vk
14
- NjVjNjQ2ZTc1MTlkYzViZmY4ZmE3MjE1Njc3ZTZlYTFmMjgwN2JhMWU1MDAz
15
- Y2YwNGM5Zjg4MjUwNGFhYjhmMzQ2YmQ0YmEyYzJjNTVlZGQwZDU=
13
+ YjY0OWQ0YTdjNDE5ZTI5ZDMwOWVmMTE1YmQ3ZTI2YmNhYjk5NTExMWM1NDNj
14
+ Mjg2YjIwOWYxNDQ1YTFlODcyNjEwOWUzMGQ0MjViNjJiZDU5N2MzZWFmNDNh
15
+ YjkxOGQ3NDI1ZWZjMTMzZWVlMjY0NmUyY2Q2NWYyMzdkMDNjMTM=
@@ -49,9 +49,9 @@ class ResourceController < UmlautController
49
49
  render(:text => remote_response.read)
50
50
  rescue Timeout::Error, Errno::ECONNREFUSED, Errno::ETIMEDOUT => e
51
51
  msg = "#{e.inspect}: waiting for image proxy from `#{url_str}`; timeout is currently set to #{HttpTimeout}s; returning broken image"
52
- relevant_backtrace = e.backtrace.find_all {|line| line =~ /umlaut/}
52
+ backtrace = Umlaut::Util.clean_backtrace(e)
53
53
 
54
- logger.warn("#{msg}\n #{relevant_backtrace.join("\n ")}")
54
+ logger.warn("#{msg}\n #{backtrace.join("\n ")}")
55
55
 
56
56
  response.headers['X-Original-Url'] = url_str
57
57
  render :text => msg, :status => 504
@@ -36,8 +36,8 @@ module Umlaut::ErrorHandling
36
36
 
37
37
  def log_error_with_context(exception, severity = :fatal)
38
38
  message = "\n#{exception.class} (#{exception.message}):\n"
39
- message << " uri: #{request.fullpath}\n\n"
40
- message << " params: #{params.inspect}\n\n"
39
+ message << " uri: #{request.fullpath}\n"
40
+ message << " params: #{params.inspect}\n"
41
41
  message << " Referer: #{request.referer}\n" if request.referer
42
42
  message << " User-Agent: #{request.user_agent}\n"
43
43
  message << " Client IP: #{request.remote_addr}\n\n"
@@ -142,7 +142,7 @@ class Collection
142
142
  # and logged to db as well as logfile if possible, only bugs in ServiceWave
143
143
  # itself should wind up caught here.
144
144
  Thread.current[:exception] = e
145
- logger.error("Background Service execution exception: #{e}\n\n " + Rails.backtrace_cleaner.clean(e.backtrace).join("\n"))
145
+ logger.error("Background Service execution exception: #{e.inspect}\n " + Umlaut::Util.clean_backtrace(e).join("\n "))
146
146
 
147
147
  # One exception is in test environment, when we may be intentionally
148
148
  # trying to get exceptions to propagate up from ServiceWave to here,
@@ -244,6 +244,10 @@ class Referent < ActiveRecord::Base
244
244
  def oclcnum
245
245
  return get_oclcnum(self)
246
246
  end
247
+
248
+ def doi
249
+ return get_doi(self)
250
+ end
247
251
 
248
252
  # Creates an OpenURL::ContextObject assembling all the data in this
249
253
  # referrent.
@@ -351,6 +355,10 @@ class Referent < ActiveRecord::Base
351
355
  if key == "journal" && metadata['atitle'].present?
352
356
  key = 'article'
353
357
  end
358
+
359
+ if key == "book" && metadata['atitle'].present?
360
+ key = "bookitem"
361
+ end
354
362
 
355
363
  label = I18n.t(key, :scope => "umlaut.citation.genre", :default => "")
356
364
  label = nil if label.blank?
@@ -163,13 +163,7 @@ class ServiceWave
163
163
 
164
164
  protected
165
165
  def clean_backtrace(exception)
166
- if defined?(Rails) && Rails.respond_to?(:backtrace_cleaner)
167
- trace = Rails.backtrace_cleaner.clean(exception.backtrace)
168
- trace = Rails.backtrace_cleaner.clean(exception.backtrace, :all) if trace.empty?
169
- return trace
170
- else
171
- return exception.backtrace
172
- end
166
+ Umlaut::Util.clean_backtrace(exception)
173
167
  end
174
168
 
175
169
 
@@ -277,8 +277,9 @@ class Amazon < Service
277
277
  end
278
278
 
279
279
  end
280
- # Enhance with full author name string even if aulast is already present, because full string may be useful for worldcat identities.
281
- unless (metadata['au'] )
280
+
281
+ # Don't overwrite aulast with our full au
282
+ unless (metadata['au'] || metadata['aulast'])
282
283
  if author = (item_attributes.at("Author"))
283
284
  request.referent.enhance_referent('au', author.inner_text)
284
285
  end
@@ -28,7 +28,10 @@ class IsbnLink < Service
28
28
  def handle(umlaut_request)
29
29
 
30
30
  isbn = get_isbn(umlaut_request.referent)
31
-
31
+
32
+ # remove hyphens, some services don't like them.
33
+ isbn = isbn.gsub('-', '') if isbn.present?
34
+
32
35
  # No isbn, nothing we can do.
33
36
  return umlaut_request.dispatched(self, true) if isbn.blank?
34
37
 
@@ -100,7 +100,7 @@ class Sfx < Service
100
100
  return @base_url
101
101
  end
102
102
 
103
- def handle(request)
103
+ def handle(request)
104
104
  client = self.initialize_client(request)
105
105
  begin
106
106
  response = self.do_request(client)
@@ -256,13 +256,11 @@ class Sfx < Service
256
256
 
257
257
 
258
258
  # Okay, keep track of best fit ctx for metadata enhancement
259
- if request.referent.format == "journal"
260
- if ( umlaut_service == 'fulltext')
261
- best_fulltext_ctx = perl_data
262
- best_nofulltext_ctx = nil
263
- elsif best_nofulltext_ctx == nil
264
- best_nofulltext_ctx = perl_data
265
- end
259
+ if ( umlaut_service == 'fulltext')
260
+ best_fulltext_ctx = perl_data
261
+ best_nofulltext_ctx = nil
262
+ elsif best_nofulltext_ctx == nil
263
+ best_nofulltext_ctx = perl_data
266
264
  end
267
265
 
268
266
  if ( umlaut_service ) # Okay, it's in services or targets of interest
@@ -399,7 +397,9 @@ class Sfx < Service
399
397
  :service_type_value => "highlighted_link")
400
398
  end
401
399
 
400
+
402
401
  # Did we find a ctx best fit for enhancement?
402
+
403
403
  if best_fulltext_ctx
404
404
  enhance_referent(request, best_fulltext_ctx)
405
405
  elsif best_nofulltext_ctx
@@ -673,15 +673,18 @@ class Sfx < Service
673
673
  # Second argument is a Nokogiri element representing the <perldata>
674
674
  # tag and children.
675
675
  def enhance_referent(request, perl_data)
676
+
677
+
676
678
  ActiveRecord::Base.connection_pool.with_connection do
677
679
  metadata = request.referent.metadata
678
680
 
679
681
  sfx_co = Sfx.parse_perl_data(perl_data)
680
682
 
681
683
  sfx_metadata = sfx_co.referent.metadata
684
+
682
685
  # Do NOT enhance for metadata type 'BOOK', unreliable matching from
683
- # SFX!
684
- return if sfx_metadata["object_type"] == "BOOK" || sfx_metadata["genre"] == "book"
686
+ # SFX! UNLESS we requested based on a DOI or ISBN, that's reliable.
687
+ return if request.referent.isbn.blank? && request.referent.doi.blank? && (sfx_metadata["object_type"] == "BOOK" || sfx_metadata["genre"] == "book")
685
688
 
686
689
  # If we already had metadata for journal title and the SFX one
687
690
  # differs, we want to over-write it. This is good for ambiguous
@@ -1,4 +1,6 @@
1
+ require 'umlaut/version'
1
2
  require 'umlaut/routes'
3
+ require 'umlaut/util'
2
4
 
3
5
  # not sure why including openurl gem doesn't do the require, but it
4
6
  # seems to need this.
@@ -0,0 +1,24 @@
1
+ module Umlaut
2
+ module Util
3
+
4
+ module_function
5
+
6
+ # Provide a prettified and cleaned exception backtrace array from an exception,
7
+ # using the Rails backtrace cleaner, as configured in the app. Umlaut configures
8
+ # it, in an initializer declared in umlaut.rb, to prettify and include Umlaut trace lines.
9
+ #
10
+ # This will produce a stack trace similar to what Rails logs by default for uncaught
11
+ # exceptions. We use it for exception logging in several places.
12
+ #
13
+ # Pass in the exception itself, not `exception.backtrace`.
14
+ def clean_backtrace(exception)
15
+ if defined?(Rails) && Rails.respond_to?(:backtrace_cleaner)
16
+ trace = Rails.backtrace_cleaner.clean(exception.backtrace)
17
+ trace = Rails.backtrace_cleaner.clean(exception.backtrace, :all) if trace.empty?
18
+ return trace
19
+ else
20
+ return exception.backtrace
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,5 +1,5 @@
1
1
  module Umlaut
2
- VERSION = "4.0.1"
2
+ VERSION = "4.0.2"
3
3
 
4
4
  # This is used in Umlaut's .gemspec for generating the gem,
5
5
  # and is also used in the umlaut app generator to make sure
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: umlaut
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.1
4
+ version: 4.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Rochkind, et al
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-21 00:00:00.000000000 Z
11
+ date: 2014-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -509,6 +509,7 @@ files:
509
509
  - lib/truncate_to_db_limit.rb
510
510
  - lib/umlaut.rb
511
511
  - lib/umlaut/routes.rb
512
+ - lib/umlaut/util.rb
512
513
  - lib/umlaut/version.rb
513
514
  homepage: https://github.com/team-umlaut/umlaut
514
515
  licenses: []