Warning: chmod(): Operation not permitted in /var/www/hopeinstoughton_www/wp-content/plugins/simple-universal-google-analytics/main.php on line 8 [0] in function chmod in /var/www/hopeinstoughton_www/wp-content/plugins/simple-universal-google-analytics/main.php on line 8 [1] in function include_once in /var/www/hopeinstoughton_www/wp-settings.php on line 560 [2] in function require_once in /var/www/hopeinstoughton_www/wp-config.php on line 85 [3] in function require_once in /var/www/hopeinstoughton_www/wp-load.php on line 50 [4] in function require_once in /var/www/hopeinstoughton_www/wp-blog-header.php on line 13 [5] in function require in /var/www/hopeinstoughton_www/index.php on line 17
| Server IP : 94.177.8.99 / Your IP : 216.73.217.165 Web Server : Apache/2.4.58 (Ubuntu) System : Linux aries 6.8.0-134-generic #134-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 26 18:43:11 UTC 2026 x86_64 User : www-data ( 33) PHP Version : 8.1.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /usr/lib/ruby/vendor_ruby/rubygems/ |
Upload File : |
# frozen_string_literal: true
##
# The Uri handles rubygems source URIs.
#
class Gem::Uri
##
# Parses and redacts uri
def self.redact(uri)
new(uri).redacted
end
##
# Parses uri, raising if it's invalid
def self.parse!(uri)
require "uri"
raise URI::InvalidURIError unless uri
return uri unless uri.is_a?(String)
# Always escape URI's to deal with potential spaces and such
# It should also be considered that source_uri may already be
# a valid URI with escaped characters. e.g. "{DESede}" is encoded
# as "%7BDESede%7D". If this is escaped again the percentage
# symbols will be escaped.
begin
URI.parse(uri)
rescue URI::InvalidURIError
URI.parse(URI::DEFAULT_PARSER.escape(uri))
end
end
##
# Parses uri, returning the original uri if it's invalid
def self.parse(uri)
parse!(uri)
rescue URI::InvalidURIError
uri
end
def initialize(source_uri)
@parsed_uri = parse(source_uri)
end
def redacted
return self unless valid_uri?
if token? || oauth_basic?
with_redacted_user
elsif password?
with_redacted_password
else
self
end
end
def to_s
@parsed_uri.to_s
end
def redact_credentials_from(text)
return text unless valid_uri? && password? && text.include?(to_s)
text.sub(password, "REDACTED")
end
def method_missing(method_name, *args, &blk)
if @parsed_uri.respond_to?(method_name)
@parsed_uri.send(method_name, *args, &blk)
else
super
end
end
def respond_to_missing?(method_name, include_private = false)
@parsed_uri.respond_to?(method_name, include_private) || super
end
protected
# Add a protected reader for the cloned instance to access the original object's parsed uri
attr_reader :parsed_uri
private
def parse!(uri)
self.class.parse!(uri)
end
def parse(uri)
self.class.parse(uri)
end
def with_redacted_user
clone.tap {|uri| uri.user = "REDACTED" }
end
def with_redacted_password
clone.tap {|uri| uri.password = "REDACTED" }
end
def valid_uri?
!@parsed_uri.is_a?(String)
end
def password?
!!password
end
def oauth_basic?
password == "x-oauth-basic"
end
def token?
!user.nil? && password.nil?
end
def initialize_copy(original)
@parsed_uri = original.parsed_uri.clone
end
end