From 1725375d282c3e35c06688bec54b2b348f43e679 Mon Sep 17 00:00:00 2001
From: muxcmux <storm.bg@gmail.com>
Date: Mon, 22 Aug 2022 12:24:51 +0300
Subject: [PATCH] Upgrade Faraday

* Use CGI.escape
* Make the blob gem use the local common gem
---
 Gemfile                                       | 26 +++++++++----------
 blob/Gemfile                                  |  2 ++
 blob/azure-storage-blob.gemspec               |  2 +-
 common/azure-storage-common.gemspec           | 24 ++++++++---------
 common/lib/azure/core.rb                      |  4 +--
 common/lib/azure/storage/common/autoload.rb   |  3 ++-
 .../azure/storage/common/core/http_client.rb  |  2 +-
 file/Gemfile                                  |  2 ++
 file/azure-storage-file.gemspec               |  2 +-
 queue/Gemfile                                 |  2 ++
 queue/azure-storage-queue.gemspec             |  2 +-
 table/Gemfile                                 |  2 ++
 table/azure-storage-table.gemspec             |  2 +-
 .../lib/azure/storage/table/table_service.rb  | 10 ++-----
 14 files changed, 44 insertions(+), 41 deletions(-)

diff --git a/Gemfile b/Gemfile
index 12f59ee..eb31b0c 100644
--- a/Gemfile
+++ b/Gemfile
@@ -24,17 +24,17 @@
 # THE SOFTWARE.
 #--------------------------------------------------------------------------
 source "https://rubygems.org" do
-  gem "faraday",             "~> 1.0", :require => false
-  gem "faraday_middleware",  "~> 1.0.0.rc1", :require => false
-  gem "net-http-persistent", "~> 4.0", :require => false
-  gem "nokogiri",          "~> 1", ">= 1.10.8", :require => false
-  gem "adal",                "~> 1.0", :require => false
-  gem "dotenv",              "~> 2.0", :require => false
-  gem "minitest",            "~> 5", :require => false
-  gem "minitest-reporters",  "~> 1", :require => false
-  gem "mocha",               "~> 1.0", :require => false
-  gem "rake",                "~> 13.0", :require => false
-  gem "timecop",             "~> 0.7", :require => false
-  gem "yard",                "~> 0.9", ">= 0.9.11", :require => false
-  gem "coveralls",           require: false
+  gem "faraday",                     "~> 2.0", :require => false
+  gem "faraday-net_http_persistent", "~> 2", :require => false
+  gem "faraday-follow_redirects",    "~> 0.3", :require => false
+  gem "nokogiri",                    "~> 1", ">= 1.10.8", :require => false
+  gem "adal",                        "~> 1.0", :require => false
+  gem "dotenv",                      "~> 2.0", :require => false
+  gem "minitest",                    "~> 5", :require => false
+  gem "minitest-reporters",          "~> 1", :require => false
+  gem "mocha",                       "~> 1.0", :require => false
+  gem "rake",                        "~> 13.0", :require => false
+  gem "timecop",                     "~> 0.7", :require => false
+  gem "yard",                        "~> 0.9", ">= 0.9.11", :require => false
+  gem "coveralls",                   require: false
 end
diff --git a/blob/Gemfile b/blob/Gemfile
index 46caa9a..7ec3963 100644
--- a/blob/Gemfile
+++ b/blob/Gemfile
@@ -25,6 +25,8 @@
 #--------------------------------------------------------------------------
 source "https://rubygems.org"
 
+gem 'azure-storage-common', path: '../common'
+
 gemspec name: "azure-storage-blob"
 
 gem "coveralls", require: false
diff --git a/blob/azure-storage-blob.gemspec b/blob/azure-storage-blob.gemspec
index bc45e52..cb959b6 100644
--- a/blob/azure-storage-blob.gemspec
+++ b/blob/azure-storage-blob.gemspec
@@ -40,7 +40,7 @@ Gem::Specification.new do |s|
 
   s.required_ruby_version = ">= 2.3.0"
 
-  s.add_runtime_dependency("azure-storage-common",    "~> 2.0")
+  s.add_runtime_dependency("azure-storage-common")
   s.add_runtime_dependency("nokogiri",                "~> 1", ">= 1.10.8")
   s.add_development_dependency("dotenv",              "~> 2.0")
   s.add_development_dependency("minitest",            "~> 5")
diff --git a/common/azure-storage-common.gemspec b/common/azure-storage-common.gemspec
index 2a614e5..69d1b19 100644
--- a/common/azure-storage-common.gemspec
+++ b/common/azure-storage-common.gemspec
@@ -41,16 +41,16 @@ Gem::Specification.new do |s|
 
   s.required_ruby_version = ">= 2.3.0"
 
-  s.add_runtime_dependency('faraday',                 '~> 1.0')
-  s.add_runtime_dependency('faraday_middleware',      "~> 1.0", ">= 1.0.0.rc1")
-  s.add_runtime_dependency("net-http-persistent",     '~> 4.0')
-  s.add_runtime_dependency("nokogiri",                "~> 1", ">= 1.10.8")
-  s.add_development_dependency("dotenv",              "~> 2.0")
-  s.add_development_dependency("minitest",            "~> 5")
-  s.add_development_dependency("minitest-reporters",  "~> 1")
-  s.add_development_dependency("mocha",               "~> 1.0")
-  s.add_development_dependency("rake",                "~> 13.0")
-  s.add_development_dependency("timecop",             "~> 0.7")
-  s.add_development_dependency("yard",                "~> 0.9", ">= 0.9.11")
-  s.add_development_dependency('bundler',             '~> 1.11')
+  s.add_runtime_dependency('faraday',                     '~> 2')
+  s.add_runtime_dependency('faraday-net_http_persistent', "~> 2")
+  s.add_runtime_dependency('faraday-follow_redirects',    "~> 0.3")
+  s.add_runtime_dependency("nokogiri",                    "~> 1", ">= 1.10.8")
+  s.add_development_dependency("dotenv",                  "~> 2.0")
+  s.add_development_dependency("minitest",                "~> 5")
+  s.add_development_dependency("minitest-reporters",      "~> 1")
+  s.add_development_dependency("mocha",                   "~> 1.0")
+  s.add_development_dependency("rake",                    "~> 13.0")
+  s.add_development_dependency("timecop",                 "~> 0.7")
+  s.add_development_dependency("yard",                    "~> 0.9", ">= 0.9.11")
+  s.add_development_dependency('bundler',                 '~> 1.11')
 end
diff --git a/common/lib/azure/core.rb b/common/lib/azure/core.rb
index 4bdf286..ce41e67 100644
--- a/common/lib/azure/core.rb
+++ b/common/lib/azure/core.rb
@@ -16,7 +16,8 @@
 require 'rubygems'
 require 'nokogiri'
 require 'faraday'
-require 'faraday_middleware'
+require 'faraday/follow_redirects'
+require 'faraday/net_http_persistent'
 
 module Azure
   module Core
@@ -43,5 +44,4 @@ module Azure
       autoload :SignerFilter,                 'azure/core/http/signer_filter'
     end
   end
-
 end
diff --git a/common/lib/azure/storage/common/autoload.rb b/common/lib/azure/storage/common/autoload.rb
index 57b1db1..75e144b 100644
--- a/common/lib/azure/storage/common/autoload.rb
+++ b/common/lib/azure/storage/common/autoload.rb
@@ -30,7 +30,8 @@ require "base64"
 require "openssl"
 require "uri"
 require "faraday"
-require "faraday_middleware"
+require "faraday/follow_redirects"
+require "faraday/net_http_persistent"
 
 require "azure/storage/common/core/autoload"
 require "azure/storage/common/default"
diff --git a/common/lib/azure/storage/common/core/http_client.rb b/common/lib/azure/storage/common/core/http_client.rb
index 4fdc06f..0898b70 100644
--- a/common/lib/azure/storage/common/core/http_client.rb
+++ b/common/lib/azure/storage/common/core/http_client.rb
@@ -71,7 +71,7 @@ module Azure::Storage::Common::Core
                           URI::parse(ENV["HTTPS_PROXY"])
                         end || nil
         Faraday.new(uri, ssl: ssl_options, proxy: proxy_options) do |conn|
-          conn.use FaradayMiddleware::FollowRedirects
+          conn.use Faraday::FollowRedirects::Middleware
           conn.adapter :net_http_persistent, pool_size: 5 do |http|
             # yields Net::HTTP::Persistent
             http.idle_timeout = 100
diff --git a/file/Gemfile b/file/Gemfile
index 388aaaf..2dc669b 100644
--- a/file/Gemfile
+++ b/file/Gemfile
@@ -25,6 +25,8 @@
 #--------------------------------------------------------------------------
 source "https://rubygems.org"
 
+gem 'azure-storage-common', path: '../common'
+
 gemspec name: "azure-storage-file"
 
 gem "coveralls", require: false
diff --git a/file/azure-storage-file.gemspec b/file/azure-storage-file.gemspec
index 6f5f739..dc3c7e5 100644
--- a/file/azure-storage-file.gemspec
+++ b/file/azure-storage-file.gemspec
@@ -40,7 +40,7 @@ Gem::Specification.new do |s|
 
   s.required_ruby_version = ">= 2.3.0"
 
-  s.add_runtime_dependency("azure-storage-common",    "~> 2.0")
+  s.add_runtime_dependency("azure-storage-common")
   s.add_runtime_dependency("nokogiri",                "~> 1", ">= 1.10.8")
   s.add_development_dependency("dotenv",              "~> 2.0")
   s.add_development_dependency("minitest",            "~> 5")
diff --git a/queue/Gemfile b/queue/Gemfile
index 91b4043..ff3c041 100644
--- a/queue/Gemfile
+++ b/queue/Gemfile
@@ -25,6 +25,8 @@
 #--------------------------------------------------------------------------
 source "https://rubygems.org"
 
+gem 'azure-storage-common', path: '../common'
+
 gemspec name: "azure-storage"
 
 gem "coveralls", require: false
diff --git a/queue/azure-storage-queue.gemspec b/queue/azure-storage-queue.gemspec
index 1295bd3..1f5cede 100644
--- a/queue/azure-storage-queue.gemspec
+++ b/queue/azure-storage-queue.gemspec
@@ -40,7 +40,7 @@ Gem::Specification.new do |s|
 
   s.required_ruby_version = ">= 2.3.0"
 
-  s.add_runtime_dependency("azure-storage-common",    "~> 2.0")
+  s.add_runtime_dependency("azure-storage-common")
   s.add_runtime_dependency("nokogiri",                "~> 1", ">= 1.10.8")
   s.add_development_dependency("dotenv",              "~> 2.0")
   s.add_development_dependency("minitest",            "~> 5")
diff --git a/table/Gemfile b/table/Gemfile
index 0b659b5..8314181 100644
--- a/table/Gemfile
+++ b/table/Gemfile
@@ -25,6 +25,8 @@
 #--------------------------------------------------------------------------
 source "https://rubygems.org"
 
+gem 'azure-storage-common', path: '../common'
+
 gemspec name: "azure-storage-table"
 
 gem "coveralls", require: false
diff --git a/table/azure-storage-table.gemspec b/table/azure-storage-table.gemspec
index 1c78ea4..2c87be4 100644
--- a/table/azure-storage-table.gemspec
+++ b/table/azure-storage-table.gemspec
@@ -40,7 +40,7 @@ Gem::Specification.new do |s|
 
   s.required_ruby_version = ">= 2.3.0"
 
-  s.add_runtime_dependency("azure-storage-common",    "~> 2.0")
+  s.add_runtime_dependency("azure-storage-common")
   s.add_runtime_dependency("nokogiri",                "~> 1", ">= 1.10.8")
   s.add_development_dependency("dotenv",              "~> 2.0")
   s.add_development_dependency("minitest",            "~> 5")
diff --git a/table/lib/azure/storage/table/table_service.rb b/table/lib/azure/storage/table/table_service.rb
index 6357b64..b3f040b 100644
--- a/table/lib/azure/storage/table/table_service.rb
+++ b/table/lib/azure/storage/table/table_service.rb
@@ -24,6 +24,7 @@
 # THE SOFTWARE.
 #--------------------------------------------------------------------------
 require "azure/storage/table/auth/shared_key"
+require "cgi"
 
 module Azure::Storage
   include Azure::Storage::Common::Service
@@ -741,14 +742,7 @@ module Azure::Storage
 
       protected
         def encodeODataUriValue(value)
-          # Replace each single quote (') with double single quotes ('') not double
-          # quotes (")
-          value = value.gsub("'", "''")
-
-          # Encode the special URL characters
-          value = URI.escape(value)
-
-          value
+          CGI.escape(value)
         end
 
       protected
-- 
GitLab