Improve _fetch compatibility layer.
This commit is contained in:
parent
06a5811b4b
commit
ab04cfed83
@ -2,21 +2,41 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class AbstractDownloadStrategy
|
class AbstractDownloadStrategy
|
||||||
module Compat
|
module CompatFetch
|
||||||
def fetch(timeout: nil)
|
def fetch(timeout: nil)
|
||||||
super()
|
super()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
module Compat_Fetch # rubocop:disable Naming/ClassAndModuleCamelCase
|
||||||
|
def _fetch(*args, **options)
|
||||||
|
options[:timeout] = nil unless options.key?(:timeout)
|
||||||
|
|
||||||
|
begin
|
||||||
|
super
|
||||||
|
rescue ArgumentError => e
|
||||||
|
raise unless e.message.include?("timeout")
|
||||||
|
|
||||||
|
odeprecated "`def _fetch` in a subclass of `CurlDownloadStrategy`"
|
||||||
|
options.delete(:timeout)
|
||||||
|
super(*args, **options)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def method_added(method)
|
def method_added(method)
|
||||||
if method == :fetch && instance_method(method).arity.zero?
|
if method == :fetch && instance_method(method).arity.zero?
|
||||||
odeprecated "`def fetch` in a subclass of #{self}",
|
odeprecated "`def fetch` in a subclass of `#{self}`",
|
||||||
"`def fetch(timeout: nil, **options)` and output a warning " \
|
"`def fetch(timeout: nil, **options)` and output a warning " \
|
||||||
"when `options` contains new unhandled options"
|
"when `options` contains new unhandled options"
|
||||||
|
|
||||||
class_eval do
|
class_eval do
|
||||||
prepend Compat
|
prepend CompatFetch
|
||||||
|
end
|
||||||
|
elsif method == :_fetch
|
||||||
|
class_eval do
|
||||||
|
prepend Compat_Fetch
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,2 @@
|
|||||||
# typed: strict
|
# typed: strict
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require_relative "late/download_strategy"
|
|
||||||
|
|||||||
@ -1,20 +0,0 @@
|
|||||||
# typed: false
|
|
||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
class CurlDownloadStrategy
|
|
||||||
module Compat
|
|
||||||
def _fetch(*args, **options)
|
|
||||||
unless options.key?(:timeout)
|
|
||||||
odeprecated "#{self.class}#_fetch"
|
|
||||||
options[:timeout] = nil
|
|
||||||
end
|
|
||||||
super(*args, **options)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
prepend Compat
|
|
||||||
end
|
|
||||||
|
|
||||||
class CurlPostDownloadStrategy
|
|
||||||
prepend Compat
|
|
||||||
end
|
|
||||||
Loading…
x
Reference in New Issue
Block a user