Merge pull request #19938 from Homebrew/cgi

Phase out using `cgi` library
This commit is contained in:
Bo Anderson 2025-05-13 00:48:27 +00:00 committed by GitHub
commit 17de33e9ef
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 8 additions and 11 deletions

View File

@ -11,8 +11,6 @@ require "cask/migrator"
require "cask/quarantine" require "cask/quarantine"
require "cask/tab" require "cask/tab"
require "cgi"
module Cask module Cask
# Installer for a {Cask}. # Installer for a {Cask}.
class Installer class Installer

View File

@ -5,7 +5,6 @@ require "json"
require "time" require "time"
require "unpack_strategy" require "unpack_strategy"
require "lazy_object" require "lazy_object"
require "cgi"
require "lock_file" require "lock_file"
require "system_command" require "system_command"
@ -384,9 +383,12 @@ class AbstractFileDownloadStrategy < AbstractDownloadStrategy
if url.match?(URI::DEFAULT_PARSER.make_regexp) if url.match?(URI::DEFAULT_PARSER.make_regexp)
uri = URI(url) uri = URI(url)
if uri.query if (uri_query = uri.query.presence)
query_params = CGI.parse(uri.query) URI.decode_www_form(uri_query).each do |key, param|
query_params["response-content-disposition"].each do |param| components[:query] << param if search_query
next if key != "response-content-disposition"
query_basename = param[/attachment;\s*filename=(["']?)(.+)\1/i, 2] query_basename = param[/attachment;\s*filename=(["']?)(.+)\1/i, 2]
return File.basename(query_basename) if query_basename return File.basename(query_basename) if query_basename
end end
@ -397,10 +399,6 @@ class AbstractFileDownloadStrategy < AbstractDownloadStrategy
URI::DEFAULT_PARSER.unescape(part).presence URI::DEFAULT_PARSER.unescape(part).presence
end end
end end
if search_query && (uri_query = uri.query.presence)
components[:query] = URI.decode_www_form(uri_query).map { _2 }
end
else else
components[:path] = [url] components[:path] = [url]
end end

View File

@ -346,7 +346,8 @@ class Version
sig { params(spec: T.any(String, Pathname), detected_from_url: T::Boolean).returns(Version) } sig { params(spec: T.any(String, Pathname), detected_from_url: T::Boolean).returns(Version) }
def self.parse(spec, detected_from_url: false) def self.parse(spec, detected_from_url: false)
spec = CGI.unescape(spec.to_s) if detected_from_url # This type of full-URL decoding is not technically correct but we only need a rough decode for version parsing.
spec = URI.decode_www_form_component(spec.to_s) if detected_from_url
spec = Pathname(spec) spec = Pathname(spec)