umlaut 3.0.0 → 3.0.1
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.
@@ -5,6 +5,9 @@
|
|
5
5
|
|
6
6
|
class ResolveController < UmlautController
|
7
7
|
|
8
|
+
|
9
|
+
|
10
|
+
|
8
11
|
before_filter :init_processing
|
9
12
|
# Init processing will look at this list, and for actions mentioned,
|
10
13
|
# will not create a @user_request if an existing one can't be found.
|
@@ -151,6 +154,13 @@ class ResolveController < UmlautController
|
|
151
154
|
# so we do this weird one.
|
152
155
|
session[nil] = nil
|
153
156
|
|
157
|
+
# We have to clean the params of bad char encoding bytes, or it causes
|
158
|
+
# no end of problems later. We can't just refuse to process, sources
|
159
|
+
# do send us bad bytes, I'm afraid.
|
160
|
+
params.values.each do |v|
|
161
|
+
EnsureValidEncoding.ensure_valid_encoding!(v, :invalid => :replace)
|
162
|
+
end
|
163
|
+
|
154
164
|
# Create an UmlautRequest object.
|
155
165
|
options = {}
|
156
166
|
if ( @@no_create_request_actions.include?(params[:action]) )
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
require 'open-uri'
|
3
|
+
|
4
|
+
|
5
|
+
class JournalTocs < Service
|
6
|
+
include MetadataHelper
|
7
|
+
|
8
|
+
def service_types_generated
|
9
|
+
return [ServiceTypeValue['table_of_contents']]
|
10
|
+
end
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
@base_url = 'http://www.journaltocs.ac.uk/api'
|
14
|
+
super
|
15
|
+
end
|
16
|
+
|
17
|
+
def handle(request)
|
18
|
+
issn = get_issn(request.referent)
|
19
|
+
|
20
|
+
# Can only work with an ISSN
|
21
|
+
unless issn
|
22
|
+
return request.dispatched(self, true)
|
23
|
+
end
|
24
|
+
|
25
|
+
xml = Nokogiri::XML( open(request_url(url)) )
|
26
|
+
|
27
|
+
items = xml.search("//rss:item")
|
28
|
+
|
29
|
+
unless items.length > 0
|
30
|
+
# found nothing, no match, or no contents.
|
31
|
+
return request.dispatched(self, true)
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
def request_url(issn)
|
40
|
+
return "#{@base_url.chomp('/')}/#{issn}?output=articles"
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
def xml_ns
|
45
|
+
{ "rdf" => "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
|
46
|
+
"rss" => "http://purl.org/rss/1.0/",
|
47
|
+
"prism"="http://prismstandard.org/namespaces/1.2/basic/",
|
48
|
+
"dc"="http://purl.org/dc/elements/1.1/",
|
49
|
+
"mn"="http://usefulinc.com/rss/manifest/",
|
50
|
+
"content"="http://purl.org/rss/1.0/modules/content/"
|
51
|
+
}
|
52
|
+
end
|
53
|
+
|
54
|
+
# Given a Nokogiri list of rss:items, returns a list of OpenURL::ContextObjects
|
55
|
+
def extract_items(items)
|
56
|
+
items.collect do |item|
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
class Item
|
63
|
+
attr_accessor :title,
|
64
|
+
end
|
65
|
+
|
66
|
+
|
67
|
+
end
|
68
|
+
|
data/lib/umlaut/version.rb
CHANGED
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.
|
4
|
+
version: 3.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
requirements:
|
67
67
|
- - ! '>='
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: 0.
|
69
|
+
version: 0.4.0
|
70
70
|
type: :runtime
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -74,7 +74,7 @@ dependencies:
|
|
74
74
|
requirements:
|
75
75
|
- - ! '>='
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: 0.
|
77
|
+
version: 0.4.0
|
78
78
|
- !ruby/object:Gem::Dependency
|
79
79
|
name: marc
|
80
80
|
requirement: !ruby/object:Gem::Requirement
|
@@ -177,6 +177,22 @@ dependencies:
|
|
177
177
|
- - ~>
|
178
178
|
- !ruby/object:Gem::Version
|
179
179
|
version: 0.1.0
|
180
|
+
- !ruby/object:Gem::Dependency
|
181
|
+
name: ensure_valid_encoding
|
182
|
+
requirement: !ruby/object:Gem::Requirement
|
183
|
+
none: false
|
184
|
+
requirements:
|
185
|
+
- - ! '>='
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
none: false
|
192
|
+
requirements:
|
193
|
+
- - ! '>='
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
version: '0'
|
180
196
|
- !ruby/object:Gem::Dependency
|
181
197
|
name: single_test
|
182
198
|
requirement: !ruby/object:Gem::Requirement
|
@@ -406,6 +422,7 @@ files:
|
|
406
422
|
- lib/service_adaptors/request_to_fixture.rb
|
407
423
|
- lib/service_adaptors/isi.rb
|
408
424
|
- lib/service_adaptors/primo_service.rb
|
425
|
+
- lib/service_adaptors/journal_tocs.progress
|
409
426
|
- lib/service_adaptors/open_library.rb
|
410
427
|
- lib/service_adaptors/elsevier_cover.rb
|
411
428
|
- lib/service_adaptors/ulrichs_link.rb
|
@@ -558,7 +575,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
558
575
|
version: '0'
|
559
576
|
segments:
|
560
577
|
- 0
|
561
|
-
hash:
|
578
|
+
hash: 2563544091378142822
|
562
579
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
563
580
|
none: false
|
564
581
|
requirements:
|
@@ -567,7 +584,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
567
584
|
version: '0'
|
568
585
|
segments:
|
569
586
|
- 0
|
570
|
-
hash:
|
587
|
+
hash: 2563544091378142822
|
571
588
|
requirements: []
|
572
589
|
rubyforge_project:
|
573
590
|
rubygems_version: 1.8.24
|