Skip to content

Commit 17de33e

Browse files
authored
Merge pull request #19938 from Homebrew/cgi
Phase out using `cgi` library
2 parents 75a5f03 + 923be69 commit 17de33e

File tree

3 files changed

+8
-11
lines changed

3 files changed

+8
-11
lines changed

Library/Homebrew/cask/installer.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
require "cask/quarantine"
1212
require "cask/tab"
1313

14-
require "cgi"
15-
1614
module Cask
1715
# Installer for a {Cask}.
1816
class Installer

Library/Homebrew/download_strategy.rb

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
require "time"
66
require "unpack_strategy"
77
require "lazy_object"
8-
require "cgi"
98
require "lock_file"
109
require "system_command"
1110

@@ -384,9 +383,12 @@ def parse_basename(url, search_query: true)
384383
if url.match?(URI::DEFAULT_PARSER.make_regexp)
385384
uri = URI(url)
386385

387-
if uri.query
388-
query_params = CGI.parse(uri.query)
389-
query_params["response-content-disposition"].each do |param|
386+
if (uri_query = uri.query.presence)
387+
URI.decode_www_form(uri_query).each do |key, param|
388+
components[:query] << param if search_query
389+
390+
next if key != "response-content-disposition"
391+
390392
query_basename = param[/attachment;\s*filename=(["']?)(.+)\1/i, 2]
391393
return File.basename(query_basename) if query_basename
392394
end
@@ -397,10 +399,6 @@ def parse_basename(url, search_query: true)
397399
URI::DEFAULT_PARSER.unescape(part).presence
398400
end
399401
end
400-
401-
if search_query && (uri_query = uri.query.presence)
402-
components[:query] = URI.decode_www_form(uri_query).map { _2 }
403-
end
404402
else
405403
components[:path] = [url]
406404
end

Library/Homebrew/version.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,8 @@ def self.detect(url, **specs)
346346

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

351352
spec = Pathname(spec)
352353

0 commit comments

Comments
 (0)