From 5a25e285a49dcde8da8eaef80cca3123d1e010c4 Mon Sep 17 00:00:00 2001
From: Chedli Bourguiba <chedli.bourguiba@edu.esiee.fr>
Date: Sat, 8 Oct 2022 18:24:20 +0200
Subject: [PATCH 1/3] Simple support for ruby 3

This has been detected by my gem's tests
---
 lib/fog/openstack/storage/requests/delete_multiple_objects.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/fog/openstack/storage/requests/delete_multiple_objects.rb b/lib/fog/openstack/storage/requests/delete_multiple_objects.rb
index ca69fecfa..4fd7163df 100644
--- a/lib/fog/openstack/storage/requests/delete_multiple_objects.rb
+++ b/lib/fog/openstack/storage/requests/delete_multiple_objects.rb
@@ -45,7 +45,7 @@ class Real
         def delete_multiple_objects(container, object_names, options = {})
           body = object_names.map do |name|
             object_name = container ? "#{container}/#{name}" : name
-            URI.encode(object_name)
+            CGI.escapeS(object_name)
           end.join("\n")
 
           response = request({

From 123d362e7f9c14d4747aeda89eadaa9bf555d0ac Mon Sep 17 00:00:00 2001
From: Chedli Bourguiba <chedli.bourguiba@edu.esiee.fr>
Date: Sat, 8 Oct 2022 18:28:38 +0200
Subject: [PATCH 2/3] Update delete_multiple_objects.rb

---
 lib/fog/openstack/storage/requests/delete_multiple_objects.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/fog/openstack/storage/requests/delete_multiple_objects.rb b/lib/fog/openstack/storage/requests/delete_multiple_objects.rb
index 4fd7163df..fc7c6b67a 100644
--- a/lib/fog/openstack/storage/requests/delete_multiple_objects.rb
+++ b/lib/fog/openstack/storage/requests/delete_multiple_objects.rb
@@ -45,7 +45,7 @@ class Real
         def delete_multiple_objects(container, object_names, options = {})
           body = object_names.map do |name|
             object_name = container ? "#{container}/#{name}" : name
-            CGI.escapeS(object_name)
+            CGI.escape(object_name)
           end.join("\n")
 
           response = request({

From 794aa8b36a06d47d52ed39626d9ab97db5bef341 Mon Sep 17 00:00:00 2001
From: chaadow <chedli@hoggo.com>
Date: Sat, 8 Oct 2022 18:36:29 +0200
Subject: [PATCH 3/3] Replace URI.encode by CGI.escape in all project

---
 .gitignore                                                      | 1 +
 lib/fog/openstack/compute/requests/delete_service.rb            | 2 +-
 lib/fog/openstack/compute/requests/disable_service.rb           | 2 +-
 .../openstack/compute/requests/disable_service_log_reason.rb    | 2 +-
 lib/fog/openstack/compute/requests/enable_service.rb            | 2 +-
 lib/fog/openstack/workflow/v2/requests/delete_action.rb         | 2 +-
 lib/fog/openstack/workflow/v2/requests/delete_cron_trigger.rb   | 2 +-
 lib/fog/openstack/workflow/v2/requests/delete_environment.rb    | 2 +-
 lib/fog/openstack/workflow/v2/requests/delete_workbook.rb       | 2 +-
 lib/fog/openstack/workflow/v2/requests/get_action.rb            | 2 +-
 lib/fog/openstack/workflow/v2/requests/get_cron_trigger.rb      | 2 +-
 lib/fog/openstack/workflow/v2/requests/get_environment.rb       | 2 +-
 lib/fog/openstack/workflow/v2/requests/get_workbook.rb          | 2 +-
 13 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/.gitignore b/.gitignore
index fd17499cc..c6ca92b78 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
 /.bundle/
 /.yardoc
 /Gemfile.lock
+/tags
 /_yardoc/
 /coverage/
 /doc/
diff --git a/lib/fog/openstack/compute/requests/delete_service.rb b/lib/fog/openstack/compute/requests/delete_service.rb
index 6193a3da9..b3b3e3cc5 100644
--- a/lib/fog/openstack/compute/requests/delete_service.rb
+++ b/lib/fog/openstack/compute/requests/delete_service.rb
@@ -4,7 +4,7 @@ class Compute
       class Real
         def delete_service(uuid, optional_params = nil)
           # Encode all params
-          optional_params = optional_params.each { |k, v| optional_params[k] = URI.encode(v) } if optional_params
+          optional_params = optional_params.each { |k, v| optional_params[k] = CGI.escape(v) } if optional_params
 
           request(
             :expects => [202, 204],
diff --git a/lib/fog/openstack/compute/requests/disable_service.rb b/lib/fog/openstack/compute/requests/disable_service.rb
index cc20f0e4f..a6b7a6d6b 100644
--- a/lib/fog/openstack/compute/requests/disable_service.rb
+++ b/lib/fog/openstack/compute/requests/disable_service.rb
@@ -6,7 +6,7 @@ def disable_service(host, binary, optional_params = nil)
           data = {"host" => host, "binary" => binary}
 
           # Encode all params
-          optional_params = optional_params.each { |k, v| optional_params[k] = URI.encode(v) } if optional_params
+          optional_params = optional_params.each { |k, v| optional_params[k] = CGI.escape(v) } if optional_params
 
           request(
             :body    => Fog::JSON.encode(data),
diff --git a/lib/fog/openstack/compute/requests/disable_service_log_reason.rb b/lib/fog/openstack/compute/requests/disable_service_log_reason.rb
index c18c834f6..d035c2c91 100644
--- a/lib/fog/openstack/compute/requests/disable_service_log_reason.rb
+++ b/lib/fog/openstack/compute/requests/disable_service_log_reason.rb
@@ -6,7 +6,7 @@ def disable_service_log_reason(host, binary, disabled_reason, optional_params =
           data = {"host" => host, "binary" => binary, "disabled_reason" => disabled_reason}
 
           # Encode all params
-          optional_params = optional_params.each { |k, v| optional_params[k] = URI.encode(v) } if optional_params
+          optional_params = optional_params.each { |k, v| optional_params[k] = CGI.escape(v) } if optional_params
 
           request(
             :body    => Fog::JSON.encode(data),
diff --git a/lib/fog/openstack/compute/requests/enable_service.rb b/lib/fog/openstack/compute/requests/enable_service.rb
index cc146268c..66aed3a6a 100644
--- a/lib/fog/openstack/compute/requests/enable_service.rb
+++ b/lib/fog/openstack/compute/requests/enable_service.rb
@@ -6,7 +6,7 @@ def enable_service(host, binary, optional_params = nil)
           data = {"host" => host, "binary" => binary}
 
           # Encode all params
-          optional_params = optional_params.each { |k, v| optional_params[k] = URI.encode(v) } if optional_params
+          optional_params = optional_params.each { |k, v| optional_params[k] = CGI.escape(v) } if optional_params
 
           request(
             :body    => Fog::JSON.encode(data),
diff --git a/lib/fog/openstack/workflow/v2/requests/delete_action.rb b/lib/fog/openstack/workflow/v2/requests/delete_action.rb
index 4c4918980..384e8d153 100644
--- a/lib/fog/openstack/workflow/v2/requests/delete_action.rb
+++ b/lib/fog/openstack/workflow/v2/requests/delete_action.rb
@@ -7,7 +7,7 @@ def delete_action(name)
             request(
               :expects => 204,
               :method  => "DELETE",
-              :path    => "actions/#{URI.encode(name)}"
+              :path    => "actions/#{CGI.escape(name)}"
             )
           end
         end
diff --git a/lib/fog/openstack/workflow/v2/requests/delete_cron_trigger.rb b/lib/fog/openstack/workflow/v2/requests/delete_cron_trigger.rb
index 9cf48bc51..9e8ba465d 100644
--- a/lib/fog/openstack/workflow/v2/requests/delete_cron_trigger.rb
+++ b/lib/fog/openstack/workflow/v2/requests/delete_cron_trigger.rb
@@ -7,7 +7,7 @@ def delete_cron_trigger(name)
             request(
               :expects => 204,
               :method  => "DELETE",
-              :path    => "cron_triggers/#{URI.encode(name)}"
+              :path    => "cron_triggers/#{CGI.escape(name)}"
             )
           end
         end
diff --git a/lib/fog/openstack/workflow/v2/requests/delete_environment.rb b/lib/fog/openstack/workflow/v2/requests/delete_environment.rb
index 21308810f..b43595693 100644
--- a/lib/fog/openstack/workflow/v2/requests/delete_environment.rb
+++ b/lib/fog/openstack/workflow/v2/requests/delete_environment.rb
@@ -7,7 +7,7 @@ def delete_environment(name)
             request(
               :expects => 204,
               :method  => "DELETE",
-              :path    => "environments/#{URI.encode(name)}"
+              :path    => "environments/#{CGI.escape(name)}"
             )
           end
         end
diff --git a/lib/fog/openstack/workflow/v2/requests/delete_workbook.rb b/lib/fog/openstack/workflow/v2/requests/delete_workbook.rb
index 649caea29..6916510e5 100644
--- a/lib/fog/openstack/workflow/v2/requests/delete_workbook.rb
+++ b/lib/fog/openstack/workflow/v2/requests/delete_workbook.rb
@@ -7,7 +7,7 @@ def delete_workbook(name)
             request(
               :expects => 204,
               :method  => "DELETE",
-              :path    => "workbooks/#{URI.encode(name)}"
+              :path    => "workbooks/#{CGI.escape(name)}"
             )
           end
         end
diff --git a/lib/fog/openstack/workflow/v2/requests/get_action.rb b/lib/fog/openstack/workflow/v2/requests/get_action.rb
index c937c48f7..758e78135 100644
--- a/lib/fog/openstack/workflow/v2/requests/get_action.rb
+++ b/lib/fog/openstack/workflow/v2/requests/get_action.rb
@@ -7,7 +7,7 @@ def get_action(name)
             request(
               :expects => 200,
               :method  => "GET",
-              :path    => "actions/#{URI.encode(name)}"
+              :path    => "actions/#{CGI.escape(name)}"
             )
           end
         end
diff --git a/lib/fog/openstack/workflow/v2/requests/get_cron_trigger.rb b/lib/fog/openstack/workflow/v2/requests/get_cron_trigger.rb
index 924362d6d..d856101f6 100644
--- a/lib/fog/openstack/workflow/v2/requests/get_cron_trigger.rb
+++ b/lib/fog/openstack/workflow/v2/requests/get_cron_trigger.rb
@@ -7,7 +7,7 @@ def get_cron_trigger(name)
             request(
               :expects => 200,
               :method  => "GET",
-              :path    => "cron_triggers/#{URI.encode(name)}"
+              :path    => "cron_triggers/#{CGI.escape(name)}"
             )
           end
         end
diff --git a/lib/fog/openstack/workflow/v2/requests/get_environment.rb b/lib/fog/openstack/workflow/v2/requests/get_environment.rb
index 5bdad97db..191968f92 100644
--- a/lib/fog/openstack/workflow/v2/requests/get_environment.rb
+++ b/lib/fog/openstack/workflow/v2/requests/get_environment.rb
@@ -7,7 +7,7 @@ def get_environment(name)
             request(
               :expects => 200,
               :method  => "GET",
-              :path    => "environments/#{URI.encode(name)}"
+              :path    => "environments/#{CGI.escape(name)}"
             )
           end
         end
diff --git a/lib/fog/openstack/workflow/v2/requests/get_workbook.rb b/lib/fog/openstack/workflow/v2/requests/get_workbook.rb
index 33597a310..d923b3b37 100644
--- a/lib/fog/openstack/workflow/v2/requests/get_workbook.rb
+++ b/lib/fog/openstack/workflow/v2/requests/get_workbook.rb
@@ -7,7 +7,7 @@ def get_workbook(name)
             request(
               :expects => 200,
               :method  => "GET",
-              :path    => "workbooks/#{URI.encode(name)}"
+              :path    => "workbooks/#{CGI.escape(name)}"
             )
           end
         end