From fd265547021e54d74671f4bda7896feab860e692 Mon Sep 17 00:00:00 2001 From: wang--ge Date: Sat, 20 Aug 2022 17:24:39 +0800 Subject: [PATCH] replace URI.escape with Addressable::URI.escape --- src/api/app/helpers/maintenance_helper.rb | 10 +++++----- src/api/app/helpers/webui/webui_helper.rb | 2 +- src/api/app/models/package.rb | 7 ++++--- src/api/app/models/project.rb | 5 +++-- src/api/spec/factories/packages.rb | 12 ++++++++---- src/api/spec/models/package_spec.rb | 2 +- 6 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/api/app/helpers/maintenance_helper.rb b/src/api/app/helpers/maintenance_helper.rb index c6015cb..2cfa052 100644 --- a/src/api/app/helpers/maintenance_helper.rb +++ b/src/api/app/helpers/maintenance_helper.rb @@ -97,7 +97,7 @@ module MaintenanceHelper link.remove_attribute('project') # its a local link, project name not needed link['package'] = link['package'].gsub(/\..*/, '') + target_package_name.gsub(/.*\./, '.') # adapt link target with suffix link_xml = link.to_xml - Backend::Connection.put "/source/#{URI.escape(target_project.name)}/#{URI.escape(target_package_name)}/_link?rev=repository&user=#{CGI.escape(User.session!.login)}", link_xml + Backend::Connection.put Addressable::URI.escape("/source/#{target_project.name}/#{target_package_name}/_link?rev=repository&user=#{User.session!.login}"), link_xml md5 = Digest::MD5.hexdigest(link_xml) # commit with noservice parameter @@ -108,7 +108,7 @@ module MaintenanceHelper comment: "Set local link to #{target_package_name} via maintenance_release request" } upload_params[:requestid] = action.bs_request.number if action - upload_path = "/source/#{URI.escape(target_project.name)}/#{URI.escape(target_package_name)}" + upload_path = Addressable::URI.escape("/source/#{target_project.name}/#{target_package_name}") upload_path << Backend::Connection.build_query_from_hash(upload_params, [:user, :comment, :cmd, :noservice, :requestid]) answer = Backend::Connection.post upload_path, " " tpkg.sources_changed(dir_xml: answer) @@ -131,7 +131,7 @@ module MaintenanceHelper rev: 'repository', comment: "Set link to #{target_package_name} via maintenance_release request" } - upload_path = "/source/#{URI.escape(target_project.name)}/#{URI.escape(base_package_name)}/_link" + upload_path = Addressable::URI.escape("/source/#{target_project.name}/#{base_package_name}/_link") upload_path << Backend::Connection.build_query_from_hash(upload_params, [:user, :rev]) link = "\n" md5 = Digest::MD5.hexdigest(link) @@ -140,7 +140,7 @@ module MaintenanceHelper upload_params[:cmd] = 'commitfilelist' upload_params[:noservice] = '1' upload_params[:requestid] = request.number if request - upload_path = "/source/#{URI.escape(target_project.name)}/#{URI.escape(base_package_name)}" + upload_path = Addressable::URI.escape("/source/#{target_project.name}/#{base_package_name}") upload_path << Backend::Connection.build_query_from_hash(upload_params, [:user, :comment, :cmd, :noservice, :requestid]) answer = Backend::Connection.post upload_path, " " lpkg.sources_changed(dir_xml: answer) @@ -232,7 +232,7 @@ module MaintenanceHelper cp_params[:setupdateinfoid] = update_info_id if update_info_id cp_params[:setrelease] = setrelease if setrelease cp_params[:multibuild] = '1' unless source_package_name.include?(':') - cp_path = "/build/#{CGI.escape(target_repository.project.name)}/#{URI.escape(target_repository.name)}/#{URI.escape(arch.name)}/#{URI.escape(target_package_name)}" + cp_path = Addressable::URI.escape("/build/#{target_repository.project.name}/#{target_repository.name}/#{arch.name}/#{target_package_name}") cp_path << Backend::Connection.build_query_from_hash(cp_params, [:cmd, :oproject, :opackage, :orepository, :setupdateinfoid, diff --git a/src/api/app/helpers/webui/webui_helper.rb b/src/api/app/helpers/webui/webui_helper.rb index cf19252..564aea8 100644 --- a/src/api/app/helpers/webui/webui_helper.rb +++ b/src/api/app/helpers/webui/webui_helper.rb @@ -13,7 +13,7 @@ module Webui::WebuiHelper cc = ('&cc=' + email_list[1..-1].join('&cc=')) if email_list end - URI.escape( + Addressable::URI.escape( "#{@configuration['bugzilla_url']}/enter_bug.cgi?classification=7340&product=openSUSE.org" \ "&component=3rd party software&assigned_to=#{assignee}#{cc}&short_desc=#{desc}" ) diff --git a/src/api/app/models/package.rb b/src/api/app/models/package.rb index fed2aab..77d12ce 100644 --- a/src/api/app/models/package.rb +++ b/src/api/app/models/package.rb @@ -426,8 +426,9 @@ class Package < ApplicationRecord end def self.source_path(project, package, file = nil, opts = {}) - path = "/source/#{URI.escape(project)}/#{URI.escape(package)}" - path += "/#{URI.escape(file)}" if file.present? + path = "/source/#{project}/#{package}" + path = Addressable::URI.escape(path) + path += "/#{CGI.escape(file)}" if file.present? path += '?' + opts.to_query if opts.present? path end @@ -1322,7 +1323,7 @@ class Package < ApplicationRecord permitted_params = params.permit(:repository, :arch, :package, :code, :wipe) # do not use project.name because we missuse the package source container for build container operations - Backend::Connection.post("/build/#{URI.escape(build_project)}?cmd=#{command}&#{permitted_params.to_h.to_query}") + Backend::Connection.post(Addressable::URI.escape("/build/#{build_project}?cmd=#{command}&#{permitted_params.to_h.to_query}")) rescue Backend::Error, Timeout::Error, Project::WritePermissionError => e errors.add(:base, e.message) return false diff --git a/src/api/app/models/project.rb b/src/api/app/models/project.rb index 3becf15..7f46fa5 100644 --- a/src/api/app/models/project.rb +++ b/src/api/app/models/project.rb @@ -307,8 +307,9 @@ class Project < ApplicationRecord end def source_path(project, file = nil, opts = {}) - path = "/source/#{URI.escape(project)}" - path += "/#{URI.escape(file)}" if file.present? + path = "/source/#{project}" + path = Addressable::URI.escape(path) + path += "/#{CGI.escape(file)}" if file.present? path += '?' + opts.to_query if opts.present? path end diff --git a/src/api/spec/factories/packages.rb b/src/api/spec/factories/packages.rb index 6ab4c68..8868474 100644 --- a/src/api/spec/factories/packages.rb +++ b/src/api/spec/factories/packages.rb @@ -108,7 +108,9 @@ FactoryBot.define do after(:create) do |package| # NOTE: Enable global write through when writing new VCR cassetes. # ensure the backend knows the project - Backend::Connection.put("/source/#{URI.escape(package.project.name)}/#{URI.escape(package.name)}/_service", '') if CONFIG['global_write_through'] + if CONFIG['global_write_through'] + Backend::Connection.put(Addressable::URI.escape("/source/#{package.project.name}/#{package.name}/_service"), '') + end end end @@ -116,7 +118,9 @@ FactoryBot.define do after(:create) do |package| # NOTE: Enable global write through when writing new VCR cassetes. # ensure the backend knows the project - Backend::Connection.put("/source/#{URI.escape(package.project.name)}/#{URI.escape(package.name)}/_service", 'broken') if CONFIG['global_write_through'] + if CONFIG['global_write_through'] + Backend::Connection.put(Addressable::URI.escape("/source/#{package.project.name}/#{package.name}/_service"), 'broken') + end end end @@ -131,7 +135,7 @@ FactoryBot.define do # ensure the backend knows the project if CONFIG['global_write_through'] full_path = "/source/#{package.project.name}/#{package.name}/#{evaluator.changes_file_name}" - Backend::Connection.put(URI.escape(full_path), evaluator.changes_file_content) + Backend::Connection.put(Addressable::URI.escape(full_path), evaluator.changes_file_content) end end end @@ -160,7 +164,7 @@ FactoryBot.define do # ensure the backend knows the project if CONFIG['global_write_through'] full_path = "/source/#{package.project.name}/#{package.name}/#{evaluator.kiwi_file_name}" - Backend::Connection.put(URI.escape(full_path), evaluator.kiwi_file_content) + Backend::Connection.put(Addressable::URI.escape(full_path), evaluator.kiwi_file_content) end end end diff --git a/src/api/spec/models/package_spec.rb b/src/api/spec/models/package_spec.rb index b085f3f..e653594 100644 --- a/src/api/spec/models/package_spec.rb +++ b/src/api/spec/models/package_spec.rb @@ -646,7 +646,7 @@ RSpec.describe Package, vcr: true do before do if CONFIG['global_write_through'] full_path = "/source/#{package.project.name}/#{package.name}/lorem.changes" - Backend::Connection.put(URI.escape(full_path), 'Lorem ipsum dolorem') + Backend::Connection.put(Addressable::URI.escape(full_path), 'Lorem ipsum dolorem') end end -- 2.27.0