Skip to content

Commit 3c83e43

Browse files
authored
Merge pull request #91 from code4lib/allow_faraday_2
Allow Faraday 2.x
2 parents 12ef08b + b879d3b commit 3c83e43

File tree

3 files changed

+22
-6
lines changed

3 files changed

+22
-6
lines changed

lib/oai/client.rb

+16-2
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,8 @@ def initialize(base_url, options={})
9595
follow_redirects = 5 if follow_redirects == true
9696

9797
if follow_redirects
98-
require 'faraday_middleware'
98+
require 'faraday/follow_redirects'
99+
builder.use Faraday::FollowRedirects::Middleware
99100
builder.response :follow_redirects, :limit => follow_redirects.to_i
100101
end
101102
builder.adapter :net_http
@@ -330,14 +331,27 @@ def parse_date(value)
330331
# Regex is from WebCollab:
331332
# http://webcollab.sourceforge.net/unicode.html
332333
def strip_invalid_utf_8_chars(xml)
333-
xml && xml.gsub(/[\x00-\x08\x10\x0B\x0C\x0E-\x19\x7F]
334+
return nil unless xml
335+
336+
# If it's in a specific encoding other than BINARY, it may trigger
337+
# an exception to try to gsub these illegal bytes. Temporarily
338+
# put it in BINARY. NOTE: We're not totally sure what's going on
339+
# with encodings in this gem in general, it might not be totally reasonable.
340+
orig_encoding = xml.encoding
341+
xml.force_encoding("BINARY")
342+
343+
xml = xml.gsub(/[\x00-\x08\x10\x0B\x0C\x0E-\x19\x7F]
334344
| [\x00-\x7F][\x80-\xBF]+
335345
| ([\xC0\xC1]|[\xF0-\xFF])[\x80-\xBF]*
336346
| [\xC2-\xDF]((?![\x80-\xBF])|[\x80-\xBF]{2,})
337347
| [\xE0-\xEF](([\x80-\xBF](?![\x80-\xBF]))
338348
| (?![\x80-\xBF]{2})|[\x80-\xBF]{3,})/x, '?')\
339349
.gsub(/\xE0[\x80-\x9F][\x80-\xBF]
340350
| \xED[\xA0-\xBF][\x80-\xBF]/,'?')
351+
352+
xml.force_encoding(orig_encoding)
353+
354+
xml
341355
end
342356

343357
end

ruby-oai.gemspec

+4-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@ Gem::Specification.new do |s|
1212
s.executables = 'oai'
1313

1414
s.add_dependency('builder', '>=3.1.0')
15-
s.add_dependency('faraday')
16-
s.add_dependency('faraday_middleware')
15+
s.add_dependency('faraday', "< 3")
16+
#s.add_dependency('faraday_middleware')
17+
s.add_dependency("faraday-follow_redirects", ">= 0.3.0", "< 2")
18+
1719

1820
s.add_development_dependency "activerecord", ">= 5.2.0", "< 7.1"
1921
s.add_development_dependency "appraisal"

test/client/tc_http_client.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ def test_http_client_handles_trailing_slash_redirects
5858
end
5959

6060
faraday_stub = Faraday.new do |builder|
61-
require 'faraday_middleware'
62-
builder.use FaradayMiddleware::FollowRedirects
61+
require 'faraday/follow_redirects'
62+
builder.use Faraday::FollowRedirects::Middleware
6363
builder.adapter :test, stubs
6464
end
6565

0 commit comments

Comments
 (0)