move fiber selector logic from persistent plugin into its own sub-plugin

This commit is contained in:
HoneyryderChuck 2025-08-21 16:26:25 +01:00
parent 92e891919f
commit d19f5150a1
2 changed files with 12 additions and 19 deletions

View File

@ -18,13 +18,18 @@ module HTTPX
# https://gitlab.com/os85/httpx/wikis/Persistent
#
module Persistent
def self.load_dependencies(klass)
max_retries = if klass.default_options.respond_to?(:max_retries)
[klass.default_options.max_retries, 1].max
else
1
class << self
def load_dependencies(klass)
require_relative "fiber_selector"
klass.plugin(FiberSelector)
max_retries = if klass.default_options.respond_to?(:max_retries)
[klass.default_options.max_retries, 1].max
else
1
end
klass.plugin(:retries, max_retries: max_retries)
end
klass.plugin(:retries, max_retries: max_retries)
end
def self.extra_options(options)
@ -54,18 +59,6 @@ module HTTPX
# consequences.
(!ex.is_a?(RequestTimeoutError) || @options.max_retries != 1)
end
def get_current_selector
super(&nil) || begin
return unless block_given?
default = yield
set_current_selector(default)
default
end
end
end
end
register_plugin :persistent, Persistent

View File

@ -9,6 +9,6 @@ module HTTPX
end
end
type sessionPersistent = Session & Persistent::InstanceMethods
type sessionPersistent = Session & FiberSelector::InstanceMethods & Persistent::InstanceMethods
end
end