From b7ececb96eb4aee0093e2951326bad4a079979b5 Mon Sep 17 00:00:00 2001 From: AdmiringWorm Date: Fri, 2 Aug 2019 07:39:20 +0200 Subject: [PATCH] (GH-84) Escape branch uri value so prevent 404 on pull requests --- Source/Codecov/Url/Query.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Source/Codecov/Url/Query.cs b/Source/Codecov/Url/Query.cs index 7db7b0e..f7cd24b 100644 --- a/Source/Codecov/Url/Query.cs +++ b/Source/Codecov/Url/Query.cs @@ -60,11 +60,13 @@ private static string EscapeKnownProblematicCharacters(string data) return result.ToString(); } - private void OverrideIfNotEmptyOrNull(string key, string value) + private void OverrideIfNotEmptyOrNull(string key, string value, bool escapeValue = false) { if (!string.IsNullOrWhiteSpace(value)) { - QueryParameters[key] = value.RemoveAllWhiteSpace(); + QueryParameters[key] = escapeValue ? + Uri.EscapeDataString(value.RemoveAllWhiteSpace()) : + value.RemoveAllWhiteSpace(); } } @@ -77,8 +79,8 @@ private void SetBranch() if (!string.IsNullOrWhiteSpace(repository.Branch)) { // We also need to take into account that '#' needs to be escaped for parameters - // to work, but not '/' - QueryParameters["branch"] = EscapeKnownProblematicCharacters(repository.Branch); + var escapedBranch = EscapeKnownProblematicCharacters(Uri.EscapeDataString(repository.Branch)); + QueryParameters["branch"] = escapedBranch; break; } } @@ -88,7 +90,9 @@ private void SetBranch() private void SetBuild() { - QueryParameters["build"] = Build.Build; + var escapedBuild = Uri.EscapeDataString(Build.Build); + + QueryParameters["build"] = escapedBuild; OverrideIfNotEmptyOrNull("build", Options.Build); }