diff --git a/ShareX.HelpersLib/Helpers/URLHelpers.cs b/ShareX.HelpersLib/Helpers/URLHelpers.cs index 189096946..86deefd68 100644 --- a/ShareX.HelpersLib/Helpers/URLHelpers.cs +++ b/ShareX.HelpersLib/Helpers/URLHelpers.cs @@ -420,6 +420,11 @@ public static bool HasPrefix(string url) { return URLPrefixes.Any(x => url.StartsWith(x, StringComparison.InvariantCultureIgnoreCase)); } + + public static string GetPrefix(string url) + { + return URLPrefixes.Find(x => url.StartsWith(x, StringComparison.InvariantCultureIgnoreCase)); + } public static string FixPrefix(string url, string prefix = "http://") { @@ -572,4 +577,4 @@ public static string BuildUri(string root, string path, string query = null) return builder.Uri.AbsoluteUri; } } -} \ No newline at end of file +} diff --git a/ShareX.UploadersLib/FileUploaders/AmazonS3.cs b/ShareX.UploadersLib/FileUploaders/AmazonS3.cs index 95049eb27..2bd19c150 100644 --- a/ShareX.UploadersLib/FileUploaders/AmazonS3.cs +++ b/ShareX.UploadersLib/FileUploaders/AmazonS3.cs @@ -125,6 +125,7 @@ public override UploadResult Upload(Stream stream, string fileName) isPathStyleRequest = true; } + string scheme = URLHelpers.GetPrefix(Settings.Endpoint); string endpoint = URLHelpers.RemovePrefixes(Settings.Endpoint); string host = isPathStyleRequest ? endpoint : $"{Settings.Bucket}.{endpoint}"; string algorithm = "AWS4-HMAC-SHA256"; @@ -205,8 +206,8 @@ public override UploadResult Upload(Stream stream, string fileName) headers.Remove("Host"); headers.Remove("Content-Type"); - string url = URLHelpers.CombineURL(host, canonicalURI); - url = URLHelpers.ForcePrefix(url, "https://"); + string url = URLHelpers.CombineURL(scheme + host, canonicalURI); + url = URLHelpers.FixPrefix(url, "https://"); SendRequest(HttpMethod.PUT, url, stream, contentType, null, headers); @@ -320,4 +321,4 @@ private string GetSignedHeaders(NameValueCollection headers) return string.Join(";", headers.AllKeys.OrderBy(key => key).Select(key => key.ToLowerInvariant())); } } -} \ No newline at end of file +}