From 26c39a797782c55d657f649f9d1b2a7753ba5f3e Mon Sep 17 00:00:00 2001 From: rulingcom Date: Sat, 24 Feb 2024 12:15:11 +0800 Subject: [PATCH] Add Ruby 3.1 support for socks. --- lib/uri/socks.rb | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/lib/uri/socks.rb b/lib/uri/socks.rb index 4cf050b..494e910 100644 --- a/lib/uri/socks.rb +++ b/lib/uri/socks.rb @@ -1,18 +1,32 @@ -require "uri/generic" +require 'uri/generic' module URI - class SOCKS < Generic + class Socks < Generic DEFAULT_PORT = 1080 COMPONENT = [:scheme, :userinfo, :host, :port, :query].freeze - end - @@schemes["SOCKS"] = SOCKS - @@schemes["SOCKS5"] = SOCKS - class SOCKS4 < SOCKS + def self.build(args) + tmp = Util.make_components_hash(self, args) + super(tmp) + end end - @@schemes["SOCKS4"] = SOCKS4 - class SOCKS4A < SOCKS + class Socks4 < Socks + end + + class Socks4A < Socks + end + + mapping = { + 'SOCKS' => Socks, + 'SOCKS5' => Socks, + 'SOCKS4' => Socks4, + 'SOCKS4A' => Socks4A + } + if URI::VERSION_CODE >= "001100" + mapping.each { |scheme, class_name| register_scheme scheme, class_name } + else + mapping.each { |scheme, class_name| @@schemes[scheme] = class_name } end - @@schemes["SOCKS4A"] = SOCKS4A end +