ebsco-eds 0.3.9.pre → 0.3.10.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ebsco-eds.gemspec +1 -0
- data/lib/ebsco/eds/configuration.rb +2 -1
- data/lib/ebsco/eds/record.rb +15 -2
- data/lib/ebsco/eds/session.rb +34 -23
- data/lib/ebsco/eds/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d7cb58338dd3b45c9b2413aef42f374c017133d1
|
4
|
+
data.tar.gz: 9758d4f58edac9420f206cd39bbddf3f89ad0e62
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ceffcd8ae42678e12cad2302a7e667e5b2bde94b960d8dea7b841a3d44ec88fec65869b5ab5d597df7a030e7786c4357da0aa35007322dfffabbd91d16268b2
|
7
|
+
data.tar.gz: ebadaa47d521204c0c7090fbd111de0da7605084b55d3591b1906c68a5e655e8155ebd63e277bfbeaa3ba79bd87f243430913b3295998a3c15976c8a5a13bcb4
|
data/ebsco-eds.gemspec
CHANGED
@@ -45,6 +45,7 @@ Gem::Specification.new do |spec|
|
|
45
45
|
spec.add_dependency 'csl-styles', '~> 1.0', '>= 1.0.1.5'
|
46
46
|
spec.add_dependency 'activesupport', '~> 5.0'
|
47
47
|
spec.add_dependency 'net-http-persistent', '~> 2.9'
|
48
|
+
spec.add_dependency 'sanitize', '~> 4.5.0'
|
48
49
|
|
49
50
|
spec.add_development_dependency 'bundler', '~> 1.13'
|
50
51
|
spec.add_development_dependency 'rake', '~> 12.0'
|
data/lib/ebsco/eds/record.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
require 'json'
|
3
3
|
require 'cgi'
|
4
|
+
require 'sanitize'
|
4
5
|
|
5
6
|
module EBSCO
|
6
7
|
|
@@ -750,7 +751,7 @@ module EBSCO
|
|
750
751
|
if _item_property.nil?
|
751
752
|
nil
|
752
753
|
else
|
753
|
-
|
754
|
+
sanitize_data(_item_property['Data'])
|
754
755
|
end
|
755
756
|
end
|
756
757
|
end
|
@@ -764,11 +765,23 @@ module EBSCO
|
|
764
765
|
if _item_property.nil?
|
765
766
|
nil
|
766
767
|
else
|
767
|
-
|
768
|
+
sanitize_data(_item_property['Data'])
|
768
769
|
end
|
769
770
|
end
|
770
771
|
end
|
771
772
|
|
773
|
+
# sanitize html, allow custom links
|
774
|
+
def sanitize_data(data)
|
775
|
+
html = CGI.unescapeHTML(data.to_s)
|
776
|
+
sanitize_config = Sanitize::Config.merge(Sanitize::Config::RELAXED,
|
777
|
+
:elements => Sanitize::Config::RELAXED[:elements] + ['relatesto', 'searchlink'],
|
778
|
+
:attributes => Sanitize::Config::RELAXED[:attributes].merge(
|
779
|
+
'searchlink' => ['fieldcode', 'term']
|
780
|
+
)
|
781
|
+
)
|
782
|
+
Sanitize.fragment(html, sanitize_config)
|
783
|
+
end
|
784
|
+
|
772
785
|
# dynamically add item metadata as 'eds_extra_ItemNameOrLabel'
|
773
786
|
def add_extra_item_accessors(item)
|
774
787
|
key = item['Name'] ? item['Name'].gsub(/\s+/, '_') : item['Label'].gsub(/\s+/, '_')
|
data/lib/ebsco/eds/session.rb
CHANGED
@@ -133,6 +133,14 @@ module EBSCO
|
|
133
133
|
|
134
134
|
(ENV.has_key? 'EDS_HOSTS') ? @api_hosts_list = ENV['EDS_HOSTS'].split(',') : @api_hosts_list = @config[:api_hosts_list]
|
135
135
|
|
136
|
+
(ENV.has_key? 'EDS_RECOVER_FROM_BAD_SOURCE_TYPE') ?
|
137
|
+
if %w(y Y yes Yes true True).include?(ENV['EDS_RECOVER_FROM_BAD_SOURCE_TYPE'])
|
138
|
+
@recover_130 = true
|
139
|
+
else
|
140
|
+
@recover_130 = false
|
141
|
+
end :
|
142
|
+
@recover_130 = @config[:recover_from_bad_source_type]
|
143
|
+
|
136
144
|
# use cache for auth token, info, search and retrieve calls?
|
137
145
|
if @use_cache
|
138
146
|
cache_dir = File.join(@cache_dir, 'faraday_eds_cache')
|
@@ -796,29 +804,32 @@ module EBSCO
|
|
796
804
|
end
|
797
805
|
|
798
806
|
# invalid source type, attempt to recover gracefully
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
807
|
+
when '130'
|
808
|
+
if @recover_130
|
809
|
+
bad_source_type = e.fault[:error_body]['DetailedErrorDescription']
|
810
|
+
bad_source_type.gsub!(/Value Provided\s+/, '')
|
811
|
+
bad_source_type.gsub!(/\.\s*$/, '')
|
812
|
+
new_actions = []
|
813
|
+
payload.Actions.each { |action|
|
814
|
+
if action.downcase.start_with?('addfacetfilter(sourcetype:')
|
815
|
+
if bad_source_type.nil?
|
816
|
+
# skip the source type since we don't know if it's bad or not
|
817
|
+
else
|
818
|
+
if !action.include?('SourceType:'+bad_source_type+')')
|
819
|
+
# not a bad source type, keep it
|
820
|
+
new_actions >> action
|
821
|
+
end
|
822
|
+
end
|
823
|
+
else
|
824
|
+
# not a source type action, add it
|
825
|
+
new_actions << action
|
826
|
+
end
|
827
|
+
}
|
828
|
+
payload.Actions = new_actions
|
829
|
+
do_request(method, path: path, payload: payload, attempt: attempt+1)
|
830
|
+
else
|
831
|
+
raise e
|
832
|
+
end
|
822
833
|
|
823
834
|
else
|
824
835
|
raise e
|
data/lib/ebsco/eds/version.rb
CHANGED
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.3.
|
4
|
+
version: 0.3.10.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-09-
|
12
|
+
date: 2017-09-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday
|
@@ -225,6 +225,20 @@ dependencies:
|
|
225
225
|
- - "~>"
|
226
226
|
- !ruby/object:Gem::Version
|
227
227
|
version: '2.9'
|
228
|
+
- !ruby/object:Gem::Dependency
|
229
|
+
name: sanitize
|
230
|
+
requirement: !ruby/object:Gem::Requirement
|
231
|
+
requirements:
|
232
|
+
- - "~>"
|
233
|
+
- !ruby/object:Gem::Version
|
234
|
+
version: 4.5.0
|
235
|
+
type: :runtime
|
236
|
+
prerelease: false
|
237
|
+
version_requirements: !ruby/object:Gem::Requirement
|
238
|
+
requirements:
|
239
|
+
- - "~>"
|
240
|
+
- !ruby/object:Gem::Version
|
241
|
+
version: 4.5.0
|
228
242
|
- !ruby/object:Gem::Dependency
|
229
243
|
name: bundler
|
230
244
|
requirement: !ruby/object:Gem::Requirement
|