diff --git a/ShareX.UploadersLib/BaseUploaders/Uploader.cs b/ShareX.UploadersLib/BaseUploaders/Uploader.cs index cb99a67c3..c7b344689 100644 --- a/ShareX.UploadersLib/BaseUploaders/Uploader.cs +++ b/ShareX.UploadersLib/BaseUploaders/Uploader.cs @@ -170,7 +170,7 @@ public virtual void StopUpload() } protected string SendRequestMultiPart(string url, Dictionary args, NameValueCollection headers = null, CookieCollection cookies = null, - ResponseType responseType = ResponseType.Text) + ResponseType responseType = ResponseType.Text, HttpMethod method = HttpMethod.POST) { string boundary = UploadHelpers.CreateBoundary(); string contentType = UploadHelpers.ContentTypeMultipartFormData + "; boundary=" + boundary; @@ -180,7 +180,7 @@ public virtual void StopUpload() { stream.Write(data, 0, data.Length); - using (HttpWebResponse webResponse = GetResponse(HttpMethod.POST, url, stream, contentType, null, headers, cookies)) + using (HttpWebResponse webResponse = GetResponse(method, url, stream, contentType, null, headers, cookies)) { string response = UploadHelpers.ResponseToString(webResponse, responseType); diff --git a/ShareX.UploadersLib/FileUploaders/CustomFileUploader.cs b/ShareX.UploadersLib/FileUploaders/CustomFileUploader.cs index e28cbb9c3..8e8c27679 100644 --- a/ShareX.UploadersLib/FileUploaders/CustomFileUploader.cs +++ b/ShareX.UploadersLib/FileUploaders/CustomFileUploader.cs @@ -80,15 +80,10 @@ public CustomFileUploader(CustomUploaderItem customUploaderItem) public override UploadResult Upload(Stream stream, string fileName) { - if (customUploader.RequestType != CustomUploaderRequestMethod.POST) - { - throw new Exception("'Request type' must be 'POST' when using custom file uploader."); - } - CustomUploaderArgumentInput input = new CustomUploaderArgumentInput(fileName, ""); UploadResult result = SendRequestFile(customUploader.GetRequestURL(), stream, fileName, customUploader.GetFileFormName(), - customUploader.GetArguments(input), customUploader.GetHeaders(input), responseType: customUploader.ResponseType); + customUploader.GetArguments(input), customUploader.GetHeaders(input), null, customUploader.ResponseType, customUploader.GetHttpMethod()); if (result.IsSuccess) { diff --git a/ShareX.UploadersLib/ImageUploaders/CustomImageUploader.cs b/ShareX.UploadersLib/ImageUploaders/CustomImageUploader.cs index c07f04988..53bc284f5 100644 --- a/ShareX.UploadersLib/ImageUploaders/CustomImageUploader.cs +++ b/ShareX.UploadersLib/ImageUploaders/CustomImageUploader.cs @@ -77,15 +77,10 @@ public CustomImageUploader(CustomUploaderItem customUploaderItem) public override UploadResult Upload(Stream stream, string fileName) { - if (customUploader.RequestType != CustomUploaderRequestMethod.POST) - { - throw new Exception("'Request type' must be 'POST' when using custom image uploader."); - } - CustomUploaderArgumentInput input = new CustomUploaderArgumentInput(fileName, ""); UploadResult result = SendRequestFile(customUploader.GetRequestURL(), stream, fileName, customUploader.GetFileFormName(), - customUploader.GetArguments(input), customUploader.GetHeaders(input), responseType: customUploader.ResponseType); + customUploader.GetArguments(input), customUploader.GetHeaders(input), null, customUploader.ResponseType, customUploader.GetHttpMethod()); if (result.IsSuccess) { diff --git a/ShareX.UploadersLib/SharingServices/CustomURLSharingService.cs b/ShareX.UploadersLib/SharingServices/CustomURLSharingService.cs index 6ac3c7ce0..5d8b0ddfd 100644 --- a/ShareX.UploadersLib/SharingServices/CustomURLSharingService.cs +++ b/ShareX.UploadersLib/SharingServices/CustomURLSharingService.cs @@ -74,28 +74,22 @@ public CustomURLSharer(CustomUploaderItem customUploaderItem) public override UploadResult ShareURL(string url) { - if (customUploader.RequestType == CustomUploaderRequestMethod.POST && !string.IsNullOrEmpty(customUploader.FileFormName)) - throw new Exception("'File form name' cannot be used with custom URL sharing service."); - if ((customUploader.Arguments == null || !customUploader.Arguments.Any(x => x.Value.Contains("$input$"))) && (customUploader.Headers == null || !customUploader.Headers.Any(x => x.Value.Contains("$input$")))) throw new Exception("Atleast one '$input$' required for argument or header value."); UploadResult result = new UploadResult { URL = url, IsURLExpected = false }; - CustomUploaderArgumentInput input = new CustomUploaderArgumentInput("", url); - Dictionary args = customUploader.GetArguments(input); - if (customUploader.RequestType == CustomUploaderRequestMethod.POST) { - result.Response = SendRequestMultiPart(customUploader.GetRequestURL(), args, customUploader.GetHeaders(input), - responseType: customUploader.ResponseType); + result.Response = SendRequestMultiPart(customUploader.GetRequestURL(), customUploader.GetArguments(input), customUploader.GetHeaders(input), null, + customUploader.ResponseType, customUploader.GetHttpMethod()); } else { - result.Response = SendRequest(customUploader.GetHttpMethod(), customUploader.GetRequestURL(), args, customUploader.GetHeaders(input), - responseType: customUploader.ResponseType); + result.Response = SendRequest(customUploader.GetHttpMethod(), customUploader.GetRequestURL(), customUploader.GetArguments(input), + customUploader.GetHeaders(input), null, customUploader.ResponseType); } return result; diff --git a/ShareX.UploadersLib/TextUploaders/CustomTextUploader.cs b/ShareX.UploadersLib/TextUploaders/CustomTextUploader.cs index eb25db7a3..992a43bc5 100644 --- a/ShareX.UploadersLib/TextUploaders/CustomTextUploader.cs +++ b/ShareX.UploadersLib/TextUploaders/CustomTextUploader.cs @@ -80,39 +80,35 @@ public CustomTextUploader(CustomUploaderItem customUploaderItem) public override UploadResult UploadText(string text, string fileName) { - UploadResult result = new UploadResult(); - - string requestURL = customUploader.GetRequestURL(); - if ((customUploader.RequestType != CustomUploaderRequestMethod.POST || string.IsNullOrEmpty(customUploader.FileFormName)) && ((customUploader.Arguments == null || !customUploader.Arguments.Any(x => x.Value.Contains("$input$"))) && (customUploader.Headers == null || !customUploader.Headers.Any(x => x.Value.Contains("$input$"))))) throw new Exception("Atleast one '$input$' required for argument or header value."); + UploadResult result = new UploadResult(); CustomUploaderArgumentInput input = new CustomUploaderArgumentInput(fileName, text); - Dictionary args = customUploader.GetArguments(input); - if (customUploader.RequestType == CustomUploaderRequestMethod.POST) { if (string.IsNullOrEmpty(customUploader.FileFormName)) { - result.Response = SendRequestMultiPart(requestURL, args, customUploader.GetHeaders(input), responseType: customUploader.ResponseType); + result.Response = SendRequestMultiPart(customUploader.GetRequestURL(), customUploader.GetArguments(input), + customUploader.GetHeaders(input), null, customUploader.ResponseType, customUploader.GetHttpMethod()); } else { - byte[] byteArray = Encoding.UTF8.GetBytes(text); - using (MemoryStream stream = new MemoryStream(byteArray)) + byte[] bytes = Encoding.UTF8.GetBytes(text); + using (MemoryStream stream = new MemoryStream(bytes)) { - result = SendRequestFile(requestURL, stream, fileName, customUploader.GetFileFormName(), args, customUploader.GetHeaders(input), - responseType: customUploader.ResponseType); + result = SendRequestFile(customUploader.GetRequestURL(), stream, fileName, customUploader.GetFileFormName(), + customUploader.GetArguments(input), customUploader.GetHeaders(input), null, customUploader.ResponseType, customUploader.GetHttpMethod()); } } } else { - result.Response = SendRequest(customUploader.GetHttpMethod(), requestURL, args, customUploader.GetHeaders(input), - responseType: customUploader.ResponseType); + result.Response = SendRequest(customUploader.GetHttpMethod(), customUploader.GetRequestURL(), customUploader.GetArguments(input), + customUploader.GetHeaders(input), null, customUploader.ResponseType); } try diff --git a/ShareX.UploadersLib/URLShorteners/CustomURLShortener.cs b/ShareX.UploadersLib/URLShorteners/CustomURLShortener.cs index 55c2a1ce4..3e663560e 100644 --- a/ShareX.UploadersLib/URLShorteners/CustomURLShortener.cs +++ b/ShareX.UploadersLib/URLShorteners/CustomURLShortener.cs @@ -75,28 +75,22 @@ public CustomURLShortener(CustomUploaderItem customUploaderItem) public override UploadResult ShortenURL(string url) { - if (customUploader.RequestType == CustomUploaderRequestMethod.POST && !string.IsNullOrEmpty(customUploader.FileFormName)) - throw new Exception("'File form name' cannot be used with custom URL shortener."); - if ((customUploader.Arguments == null || !customUploader.Arguments.Any(x => x.Value.Contains("$input$"))) && (customUploader.Headers == null || !customUploader.Headers.Any(x => x.Value.Contains("$input$")))) throw new Exception("Atleast one '$input$' required for argument or header value."); UploadResult result = new UploadResult { URL = url }; - CustomUploaderArgumentInput input = new CustomUploaderArgumentInput("", url); - Dictionary args = customUploader.GetArguments(input); - if (customUploader.RequestType == CustomUploaderRequestMethod.POST) { - result.Response = SendRequestMultiPart(customUploader.GetRequestURL(), args, customUploader.GetHeaders(input), - responseType: customUploader.ResponseType); + result.Response = SendRequestMultiPart(customUploader.GetRequestURL(), customUploader.GetArguments(input), customUploader.GetHeaders(input), null, + customUploader.ResponseType, customUploader.GetHttpMethod()); } else { - result.Response = SendRequest(customUploader.GetHttpMethod(), customUploader.GetRequestURL(), args, customUploader.GetHeaders(input), - responseType: customUploader.ResponseType); + result.Response = SendRequest(customUploader.GetHttpMethod(), customUploader.GetRequestURL(), customUploader.GetArguments(input), + customUploader.GetHeaders(input), null, customUploader.ResponseType); } try