diff --git a/ShareX.UploadersLib/BaseUploaders/Uploader.cs b/ShareX.UploadersLib/BaseUploaders/Uploader.cs
index c6f241694..836e943e2 100644
--- a/ShareX.UploadersLib/BaseUploaders/Uploader.cs
+++ b/ShareX.UploadersLib/BaseUploaders/Uploader.cs
@@ -56,8 +56,7 @@ public class Uploader
protected bool StopUploadRequested { get; set; }
protected bool AllowReportProgress { get; set; } = true;
- protected bool WebExceptionReturnResponse { get; set; }
- protected bool WebExceptionThrow { get; set; }
+ protected bool ReturnResponseOnError { get; set; }
private HttpWebRequest currentRequest;
@@ -264,14 +263,9 @@ protected UploadResult SendRequestFile(string url, Stream data, string fileName,
{
if (!StopUploadRequested)
{
- if (WebExceptionThrow && e is WebException)
- {
- throw;
- }
-
string response = AddWebError(e, url);
- if (WebExceptionReturnResponse && e is WebException)
+ if (ReturnResponseOnError && e is WebException)
{
result.Response = response;
}
@@ -322,11 +316,6 @@ private HttpWebResponse GetResponse(HttpMethod method, string url, Stream data =
{
if (!StopUploadRequested)
{
- if (WebExceptionThrow && e is WebException)
- {
- throw;
- }
-
AddWebError(e, url);
}
}
diff --git a/ShareX.UploadersLib/FileUploaders/MediaCrushUploader.cs b/ShareX.UploadersLib/FileUploaders/MediaCrushUploader.cs
deleted file mode 100644
index 12b43f2cf..000000000
--- a/ShareX.UploadersLib/FileUploaders/MediaCrushUploader.cs
+++ /dev/null
@@ -1,219 +0,0 @@
-#region License Information (GPL v3)
-
-/*
- ShareX - A program that allows you to take screenshots and share any file type
- Copyright (c) 2007-2017 ShareX Team
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2
- of the License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
- Optionally you can also view the license at .
-*/
-
-#endregion License Information (GPL v3)
-
-// Credits: https://github.com/SirCmpwn
-
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-using ShareX.HelpersLib;
-using System;
-using System.IO;
-using System.Net;
-using System.Security.Cryptography;
-using System.Threading;
-
-namespace ShareX.UploadersLib.FileUploaders
-{
- public class MediaCrushUploader : FileUploader
- {
- public string APIURL { get; private set; }
- public bool DirectLink { get; set; }
-
- public MediaCrushUploader()
- {
- APIURL = "https://mediacru.sh";
- }
-
- public MediaCrushUploader(string apiURL)
- {
- APIURL = URLHelpers.FixPrefix(apiURL);
- }
-
- public override UploadResult Upload(Stream stream, string fileName)
- {
- WebExceptionThrow = true;
-
- string hash = CreateHash(stream);
-
- UploadResult result = CheckExists(hash);
-
- if (result != null)
- {
- return result;
- }
-
- try
- {
- result = SendRequestFile(URLHelpers.CombineURL(APIURL, "api/upload/file"), stream, fileName);
- }
- catch (WebException e)
- {
- HttpWebResponse response = e.Response as HttpWebResponse;
-
- if (response == null)
- {
- throw;
- }
-
- if (response.StatusCode == HttpStatusCode.Conflict)
- {
- return HandleDuplicate(response);
- }
-
- throw;
- }
-
- hash = JToken.Parse(result.Response)["hash"].Value();
-
- while (!StopUploadRequested)
- {
- result.Response = SendRequest(HttpMethod.GET, URLHelpers.CombineURL(APIURL, "api/" + hash + "/status"));
- JToken jsonResponse = JToken.Parse(result.Response);
- string status = jsonResponse["status"].Value();
-
- switch (status)
- {
- case "processing":
- case "pending":
- Thread.Sleep(500);
- break;
- case "done":
- case "ready":
- MediaCrushBlob blob = jsonResponse[hash].ToObject();
- return UpdateResult(result, blob);
- case "unrecognized":
- // Note: MediaCrush accepts just about _every_ kind of media file,
- // so the file itself is probably corrupted or just not actually a media file
- throw new Exception("This file is not an acceptable file type.");
- case "timeout":
- throw new Exception("This file took too long to process.");
- default:
- throw new Exception("This file failed to process.");
- }
- }
-
- return result;
- }
-
- private string CreateHash(Stream stream)
- {
- using (MD5 md5 = MD5.Create())
- {
- byte[] buffer = new byte[stream.Length];
- stream.Read(buffer, 0, buffer.Length);
- stream.Seek(0, SeekOrigin.Begin);
- string hash = Convert.ToBase64String(md5.ComputeHash(buffer));
- return hash.Replace('+', '-').Replace('/', '_').Remove(12);
- }
- }
-
- private UploadResult HandleDuplicate(HttpWebResponse httpResponse)
- {
- JToken response;
- using (Stream responseStream = httpResponse.GetResponseStream())
- using (StreamReader streamReader = new StreamReader(responseStream))
- {
- response = JToken.Parse(streamReader.ReadToEnd());
- }
- string hash = response["hash"].Value();
- MediaCrushBlob blob = response[hash].ToObject();
-
- return UpdateResult(new UploadResult(), blob);
- }
-
- private UploadResult CheckExists(string hash)
- {
- try
- {
- string response = SendRequest(HttpMethod.GET, URLHelpers.CombineURL(APIURL, "api/" + hash));
-
- if (!string.IsNullOrEmpty(response))
- {
- MediaCrushBlob blob = JsonConvert.DeserializeObject(response);
-
- return UpdateResult(new UploadResult(response), blob);
- }
- }
- catch
- {
- }
-
- return null;
- }
-
- private UploadResult UpdateResult(UploadResult result, MediaCrushBlob blob)
- {
- string url = URLHelpers.CombineURL(APIURL, blob.Hash);
-
- if (DirectLink)
- {
- if (blob.Files != null && blob.Files.Length > 0)
- {
- if (blob.BlobType == "image")
- {
- url = blob.Files[0].URL;
- }
- else if (blob.BlobType == "video" || blob.BlobType == "audio")
- {
- url = URLHelpers.CombineURL(APIURL, blob.Hash + "/direct");
- }
- }
- }
-
- result.URL = url;
- result.DeletionURL = URLHelpers.CombineURL(APIURL, blob.Hash + "/delete");
-
- return result;
- }
- }
-
- internal class MediaCrushBlob
- {
- public class MediaCrushFile
- {
- [JsonProperty("file")]
- public string Path { get; set; }
- [JsonProperty("type")]
- public string Mimetype { get; set; }
- [JsonProperty("url")]
- public string URL { get; set; }
- }
-
- [JsonProperty("blob_type")]
- public string BlobType { get; set; }
- [JsonProperty("compression")]
- public double Compression { get; set; }
- [JsonProperty("files")]
- public MediaCrushFile[] Files { get; set; }
- [JsonProperty("extras")]
- public MediaCrushFile[] Extras { get; set; }
- [JsonProperty("original")]
- public string Original { get; set; }
- [JsonProperty("type")]
- public string UserMimetype { get; set; }
- [JsonProperty("hash")]
- public string Hash { get; set; }
- }
-}
\ No newline at end of file
diff --git a/ShareX.UploadersLib/ImageUploaders/Imgur.cs b/ShareX.UploadersLib/ImageUploaders/Imgur.cs
index 5c6565452..2f000a141 100644
--- a/ShareX.UploadersLib/ImageUploaders/Imgur.cs
+++ b/ShareX.UploadersLib/ImageUploaders/Imgur.cs
@@ -249,7 +249,7 @@ private UploadResult InternalUpload(Stream stream, string fileName, bool refresh
headers.Add("Authorization", "Client-ID " + AuthInfo.Client_ID);
}
- WebExceptionReturnResponse = true;
+ ReturnResponseOnError = true;
UploadResult result = SendRequestFile("https://api.imgur.com/3/image", stream, fileName, "image", args, headers);
if (!string.IsNullOrEmpty(result.Response))
diff --git a/ShareX.UploadersLib/ShareX.UploadersLib.csproj b/ShareX.UploadersLib/ShareX.UploadersLib.csproj
index 7df75dbcb..53dbfc118 100644
--- a/ShareX.UploadersLib/ShareX.UploadersLib.csproj
+++ b/ShareX.UploadersLib/ShareX.UploadersLib.csproj
@@ -353,7 +353,6 @@
-