summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJohn Keiser <john@johnkeiser.com>2016-08-22 12:02:29 -0700
committerJohn Keiser <john@johnkeiser.com>2016-08-22 13:44:20 -0700
commit28a00bdf0511969215920f47c7338f4d214c8337 (patch)
tree727efc3fa555f1123eb4176ca2b44a3bbe7f93f0 /lib
parentd2def622dfdabe56ea638bed1a63af81275681c2 (diff)
downloadchef-28a00bdf0511969215920f47c7338f4d214c8337.tar.gz
Stop using obsolete URI.escape; use Addressable::URI instead.
See http://stackoverflow.com/questions/2824126/whats-the-difference-between-uri-escape-and-cgi-escape#answer-13059657 for details on why.
Diffstat (limited to 'lib')
-rw-r--r--lib/chef/knife/search.rb4
-rw-r--r--lib/chef/mixin/uris.rb3
-rw-r--r--lib/chef/search/query.rb15
3 files changed, 13 insertions, 9 deletions
diff --git a/lib/chef/knife/search.rb b/lib/chef/knife/search.rb
index 38d1ab3f42..d102c1e955 100644
--- a/lib/chef/knife/search.rb
+++ b/lib/chef/knife/search.rb
@@ -18,6 +18,7 @@
require "chef/knife"
require "chef/knife/core/node_presenter"
+require "addressable/uri"
class Chef
class Knife
@@ -85,8 +86,7 @@ class Chef
end
q = Chef::Search::Query.new
- escaped_query = URI.escape(@query,
- Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
+ escaped_query = Addressable::URI.encode_component(@query, Addressable::URI::CharacterClasses::QUERY)
result_items = []
result_count = 0
diff --git a/lib/chef/mixin/uris.rb b/lib/chef/mixin/uris.rb
index 24e8a4f9ed..7dc04d662b 100644
--- a/lib/chef/mixin/uris.rb
+++ b/lib/chef/mixin/uris.rb
@@ -17,6 +17,7 @@
#
require "uri"
+require "addressable/uri"
class Chef
module Mixin
@@ -34,7 +35,7 @@ class Chef
URI.parse(source)
rescue URI::InvalidURIError
Chef::Log.warn("#{source} was an invalid URI. Trying to escape invalid characters")
- URI.parse(URI.escape(source))
+ URI.parse(Addressable::URI.encode(source))
end
end
diff --git a/lib/chef/search/query.rb b/lib/chef/search/query.rb
index 024ec38a16..bea8205935 100644
--- a/lib/chef/search/query.rb
+++ b/lib/chef/search/query.rb
@@ -21,6 +21,7 @@ require "chef/exceptions"
require "chef/server_api"
require "uri"
+require "addressable/uri"
class Chef
class Search
@@ -134,15 +135,17 @@ WARNDEP
args_h
end
- def escape(s)
- s && URI.escape(s.to_s)
+ QUERY_PARAM_VALUE = Addressable::URI::CharacterClasses::QUERY + "\\&\\;"
+
+ def escape_value(s)
+ s && Addressable::URI.encode_component(s.to_s, QUERY_PARAM_VALUE)
end
def create_query_string(type, query, rows, start, sort)
- qstr = "search/#{type}?q=#{escape(query)}"
- qstr += "&sort=#{escape(sort)}" if sort
- qstr += "&start=#{escape(start)}" if start
- qstr += "&rows=#{escape(rows)}" if rows
+ qstr = "search/#{type}?q=#{escape_value(query)}"
+ qstr += "&sort=#{escape_value(sort)}" if sort
+ qstr += "&start=#{escape_value(start)}" if start
+ qstr += "&rows=#{escape_value(rows)}" if rows
qstr
end