mirror of
https://github.com/ShareX/ShareX.git
synced 2024-09-30 01:07:21 +13:00
Custom uploader request format will be set explicitly
This commit is contained in:
parent
e138c41662
commit
dd7ba07c60
10 changed files with 54 additions and 60 deletions
|
@ -337,9 +337,9 @@ public static T[] GetEnums<T>()
|
|||
return (T[])Enum.GetValues(typeof(T));
|
||||
}
|
||||
|
||||
public static string[] GetEnumDescriptions<T>()
|
||||
public static string[] GetEnumDescriptions<T>(int skip = 0)
|
||||
{
|
||||
return Enum.GetValues(typeof(T)).OfType<Enum>().Select(x => x.GetDescription()).ToArray();
|
||||
return Enum.GetValues(typeof(T)).OfType<Enum>().Skip(skip).Select(x => x.GetDescription()).ToArray();
|
||||
}
|
||||
|
||||
/*public static string[] GetLocalizedEnumDescriptions<T>()
|
||||
|
|
|
@ -48,13 +48,25 @@ public class CustomUploaderItem
|
|||
[DefaultValue("")]
|
||||
public string RequestURL { get; set; }
|
||||
|
||||
[DefaultValue(CustomUploaderRequestFormat.Automatic)]
|
||||
public CustomUploaderRequestFormat RequestFormat { get; set; }
|
||||
private CustomUploaderRequestFormat requestFormat;
|
||||
|
||||
[DefaultValue(CustomUploaderRequestFormat.None)]
|
||||
public CustomUploaderRequestFormat RequestFormat
|
||||
{
|
||||
get
|
||||
{
|
||||
return CheckRequestFormat(requestFormat);
|
||||
}
|
||||
set
|
||||
{
|
||||
requestFormat = value;
|
||||
}
|
||||
}
|
||||
|
||||
[DefaultValue("")]
|
||||
public string FileFormName { get; set; }
|
||||
|
||||
public bool ShouldSerializeFileFormName() => (RequestFormat == CustomUploaderRequestFormat.Automatic && RequestType == HttpMethod.POST) ||
|
||||
public bool ShouldSerializeFileFormName() => (RequestFormat == CustomUploaderRequestFormat.None && RequestType == HttpMethod.POST) ||
|
||||
RequestFormat == CustomUploaderRequestFormat.MultipartFormData;
|
||||
|
||||
[DefaultValue("")]
|
||||
|
@ -129,30 +141,22 @@ public string GetRequestURL(CustomUploaderInput input)
|
|||
return URLHelpers.FixPrefix(url);
|
||||
}
|
||||
|
||||
public CustomUploaderRequestFormat GetRequestFormat(CustomUploaderDestinationType destinationType)
|
||||
private CustomUploaderRequestFormat CheckRequestFormat(CustomUploaderRequestFormat format)
|
||||
{
|
||||
if (RequestFormat == CustomUploaderRequestFormat.Automatic)
|
||||
// For backward compatibility
|
||||
if (format == CustomUploaderRequestFormat.None)
|
||||
{
|
||||
switch (destinationType)
|
||||
if (RequestType == HttpMethod.POST)
|
||||
{
|
||||
case CustomUploaderDestinationType.ImageUploader:
|
||||
case CustomUploaderDestinationType.FileUploader:
|
||||
return CustomUploaderRequestFormat.MultipartFormData;
|
||||
case CustomUploaderDestinationType.TextUploader:
|
||||
case CustomUploaderDestinationType.URLShortener:
|
||||
case CustomUploaderDestinationType.URLSharingService:
|
||||
if (RequestType == HttpMethod.POST)
|
||||
{
|
||||
return CustomUploaderRequestFormat.MultipartFormData;
|
||||
}
|
||||
else
|
||||
{
|
||||
return CustomUploaderRequestFormat.URLQueryString;
|
||||
}
|
||||
return CustomUploaderRequestFormat.MultipartFormData;
|
||||
}
|
||||
else
|
||||
{
|
||||
return CustomUploaderRequestFormat.URLQueryString;
|
||||
}
|
||||
}
|
||||
|
||||
return RequestFormat;
|
||||
return format;
|
||||
}
|
||||
|
||||
public string GetData(CustomUploaderInput input)
|
||||
|
|
|
@ -291,8 +291,8 @@ public enum LinkFormatEnum
|
|||
|
||||
public enum CustomUploaderRequestFormat
|
||||
{
|
||||
[Description("Automatic")]
|
||||
Automatic,
|
||||
[Description("None")]
|
||||
None,
|
||||
[Description("Form data (multipart/form-data)")]
|
||||
MultipartFormData,
|
||||
[Description("URL query string (example.com?name1=value1)")]
|
||||
|
|
|
@ -83,21 +83,19 @@ public override UploadResult Upload(Stream stream, string fileName)
|
|||
UploadResult result = new UploadResult();
|
||||
CustomUploaderInput input = new CustomUploaderInput(fileName, "");
|
||||
|
||||
CustomUploaderRequestFormat requestFormat = uploader.GetRequestFormat(CustomUploaderDestinationType.FileUploader);
|
||||
|
||||
if (requestFormat == CustomUploaderRequestFormat.MultipartFormData)
|
||||
if (uploader.RequestFormat == CustomUploaderRequestFormat.MultipartFormData)
|
||||
{
|
||||
result = SendRequestFile(uploader.GetRequestURL(input), stream, fileName, uploader.GetFileFormName(),
|
||||
uploader.GetArguments(input), uploader.GetHeaders(input), null, uploader.ResponseType, uploader.RequestType);
|
||||
}
|
||||
else if (requestFormat == CustomUploaderRequestFormat.Binary)
|
||||
else if (uploader.RequestFormat == CustomUploaderRequestFormat.Binary)
|
||||
{
|
||||
result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), stream, UploadHelpers.GetMimeType(fileName),
|
||||
uploader.GetArguments(input), uploader.GetHeaders(input), null, uploader.ResponseType);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception("Unsupported request format.");
|
||||
throw new Exception("Unsupported request format: " + uploader.RequestFormat);
|
||||
}
|
||||
|
||||
try
|
||||
|
|
|
@ -130,7 +130,7 @@ private void InitializeControls()
|
|||
eiCustomUploaders.ObjectType = typeof(CustomUploaderItem);
|
||||
CustomUploaderAddDestinationTypes();
|
||||
cbCustomUploaderRequestType.Items.AddRange(Enum.GetNames(typeof(HttpMethod)));
|
||||
cbCustomUploaderRequestFormat.Items.AddRange(Helpers.GetLocalizedEnumDescriptions<CustomUploaderRequestFormat>());
|
||||
cbCustomUploaderRequestFormat.Items.AddRange(Helpers.GetEnumDescriptions<CustomUploaderRequestFormat>(1));
|
||||
cbCustomUploaderResponseType.Items.AddRange(Helpers.GetLocalizedEnumDescriptions<ResponseType>());
|
||||
|
||||
// Backblaze B2
|
||||
|
@ -3510,7 +3510,7 @@ private void rtbCustomUploaderRequestURL_TextChanged(object sender, EventArgs e)
|
|||
private void cbCustomUploaderRequestFormat_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
CustomUploaderItem uploader = CustomUploaderGetSelected();
|
||||
if (uploader != null) uploader.RequestFormat = (CustomUploaderRequestFormat)cbCustomUploaderRequestFormat.SelectedIndex;
|
||||
if (uploader != null) uploader.RequestFormat = (CustomUploaderRequestFormat)(cbCustomUploaderRequestFormat.SelectedIndex + 1);
|
||||
|
||||
CustomUploaderUpdateRequestFormatState();
|
||||
}
|
||||
|
|
|
@ -961,7 +961,7 @@ private void CustomUploaderLoad(CustomUploaderItem uploader)
|
|||
cbCustomUploaderRequestType.SelectedIndex = (int)uploader.RequestType;
|
||||
rtbCustomUploaderRequestURL.Text = uploader.RequestURL ?? "";
|
||||
CustomUploaderSyntaxHighlight(rtbCustomUploaderRequestURL);
|
||||
cbCustomUploaderRequestFormat.SelectedIndex = (int)uploader.RequestFormat;
|
||||
cbCustomUploaderRequestFormat.SelectedIndex = (int)uploader.RequestFormat - 1;
|
||||
|
||||
rtbCustomUploaderData.Text = uploader.Data ?? "";
|
||||
CustomUploaderSyntaxHighlight(rtbCustomUploaderData);
|
||||
|
|
|
@ -80,21 +80,19 @@ public override UploadResult Upload(Stream stream, string fileName)
|
|||
UploadResult result = new UploadResult();
|
||||
CustomUploaderInput input = new CustomUploaderInput(fileName, "");
|
||||
|
||||
CustomUploaderRequestFormat requestFormat = uploader.GetRequestFormat(CustomUploaderDestinationType.ImageUploader);
|
||||
|
||||
if (requestFormat == CustomUploaderRequestFormat.MultipartFormData)
|
||||
if (uploader.RequestFormat == CustomUploaderRequestFormat.MultipartFormData)
|
||||
{
|
||||
result = SendRequestFile(uploader.GetRequestURL(input), stream, fileName, uploader.GetFileFormName(),
|
||||
uploader.GetArguments(input), uploader.GetHeaders(input), null, uploader.ResponseType, uploader.RequestType);
|
||||
}
|
||||
else if (requestFormat == CustomUploaderRequestFormat.Binary)
|
||||
else if (uploader.RequestFormat == CustomUploaderRequestFormat.Binary)
|
||||
{
|
||||
result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), stream, UploadHelpers.GetMimeType(fileName),
|
||||
uploader.GetArguments(input), uploader.GetHeaders(input), null, uploader.ResponseType);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception("Unsupported request format.");
|
||||
throw new Exception("Unsupported request format: " + uploader.RequestFormat);
|
||||
}
|
||||
|
||||
try
|
||||
|
|
|
@ -78,31 +78,29 @@ public override UploadResult ShareURL(string url)
|
|||
UploadResult result = new UploadResult { URL = url, IsURLExpected = false };
|
||||
CustomUploaderInput input = new CustomUploaderInput("", url);
|
||||
|
||||
CustomUploaderRequestFormat requestFormat = uploader.GetRequestFormat(CustomUploaderDestinationType.URLSharingService);
|
||||
|
||||
if (requestFormat == CustomUploaderRequestFormat.MultipartFormData)
|
||||
if (uploader.RequestFormat == CustomUploaderRequestFormat.MultipartFormData)
|
||||
{
|
||||
result.Response = SendRequestMultiPart(uploader.GetRequestURL(input), uploader.GetArguments(input), uploader.GetHeaders(input), null,
|
||||
uploader.ResponseType, uploader.RequestType);
|
||||
}
|
||||
else if (requestFormat == CustomUploaderRequestFormat.URLQueryString)
|
||||
else if (uploader.RequestFormat == CustomUploaderRequestFormat.URLQueryString)
|
||||
{
|
||||
result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), uploader.GetArguments(input),
|
||||
uploader.GetHeaders(input), null, uploader.ResponseType);
|
||||
}
|
||||
else if (requestFormat == CustomUploaderRequestFormat.JSON)
|
||||
else if (uploader.RequestFormat == CustomUploaderRequestFormat.JSON)
|
||||
{
|
||||
result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), uploader.GetData(input), UploadHelpers.ContentTypeJSON,
|
||||
uploader.GetArguments(input), uploader.GetHeaders(input), null, uploader.ResponseType);
|
||||
}
|
||||
else if (requestFormat == CustomUploaderRequestFormat.FormURLEncoded)
|
||||
else if (uploader.RequestFormat == CustomUploaderRequestFormat.FormURLEncoded)
|
||||
{
|
||||
result.Response = SendRequestURLEncoded(uploader.RequestType, uploader.GetRequestURL(input), uploader.GetArguments(input),
|
||||
uploader.GetHeaders(input), null, uploader.ResponseType);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception("Unsupported request format.");
|
||||
throw new Exception("Unsupported request format: " + uploader.RequestFormat);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
|
|
@ -83,9 +83,7 @@ public override UploadResult UploadText(string text, string fileName)
|
|||
UploadResult result = new UploadResult();
|
||||
CustomUploaderInput input = new CustomUploaderInput(fileName, text);
|
||||
|
||||
CustomUploaderRequestFormat requestFormat = uploader.GetRequestFormat(CustomUploaderDestinationType.TextUploader);
|
||||
|
||||
if (requestFormat == CustomUploaderRequestFormat.MultipartFormData)
|
||||
if (uploader.RequestFormat == CustomUploaderRequestFormat.MultipartFormData)
|
||||
{
|
||||
if (string.IsNullOrEmpty(uploader.FileFormName))
|
||||
{
|
||||
|
@ -102,17 +100,17 @@ public override UploadResult UploadText(string text, string fileName)
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (requestFormat == CustomUploaderRequestFormat.URLQueryString)
|
||||
else if (uploader.RequestFormat == CustomUploaderRequestFormat.URLQueryString)
|
||||
{
|
||||
result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), uploader.GetArguments(input),
|
||||
uploader.GetHeaders(input), null, uploader.ResponseType);
|
||||
}
|
||||
else if (requestFormat == CustomUploaderRequestFormat.JSON)
|
||||
else if (uploader.RequestFormat == CustomUploaderRequestFormat.JSON)
|
||||
{
|
||||
result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), uploader.GetData(input), UploadHelpers.ContentTypeJSON,
|
||||
uploader.GetArguments(input), uploader.GetHeaders(input), null, uploader.ResponseType);
|
||||
}
|
||||
else if (requestFormat == CustomUploaderRequestFormat.Binary)
|
||||
else if (uploader.RequestFormat == CustomUploaderRequestFormat.Binary)
|
||||
{
|
||||
byte[] bytes = Encoding.UTF8.GetBytes(text);
|
||||
using (MemoryStream stream = new MemoryStream(bytes))
|
||||
|
@ -121,14 +119,14 @@ public override UploadResult UploadText(string text, string fileName)
|
|||
uploader.GetArguments(input), uploader.GetHeaders(input), null, uploader.ResponseType);
|
||||
}
|
||||
}
|
||||
else if (requestFormat == CustomUploaderRequestFormat.FormURLEncoded)
|
||||
else if (uploader.RequestFormat == CustomUploaderRequestFormat.FormURLEncoded)
|
||||
{
|
||||
result.Response = SendRequestURLEncoded(uploader.RequestType, uploader.GetRequestURL(input), uploader.GetArguments(input),
|
||||
uploader.GetHeaders(input), null, uploader.ResponseType);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception("Unsupported request format.");
|
||||
throw new Exception("Unsupported request format: " + uploader.RequestFormat);
|
||||
}
|
||||
|
||||
try
|
||||
|
|
|
@ -78,31 +78,29 @@ public override UploadResult ShortenURL(string url)
|
|||
UploadResult result = new UploadResult { URL = url };
|
||||
CustomUploaderInput input = new CustomUploaderInput("", url);
|
||||
|
||||
CustomUploaderRequestFormat requestFormat = uploader.GetRequestFormat(CustomUploaderDestinationType.URLShortener);
|
||||
|
||||
if (requestFormat == CustomUploaderRequestFormat.MultipartFormData)
|
||||
if (uploader.RequestFormat == CustomUploaderRequestFormat.MultipartFormData)
|
||||
{
|
||||
result.Response = SendRequestMultiPart(uploader.GetRequestURL(input), uploader.GetArguments(input), uploader.GetHeaders(input), null,
|
||||
uploader.ResponseType, uploader.RequestType);
|
||||
}
|
||||
else if (requestFormat == CustomUploaderRequestFormat.URLQueryString)
|
||||
else if (uploader.RequestFormat == CustomUploaderRequestFormat.URLQueryString)
|
||||
{
|
||||
result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), uploader.GetArguments(input),
|
||||
uploader.GetHeaders(input), null, uploader.ResponseType);
|
||||
}
|
||||
else if (requestFormat == CustomUploaderRequestFormat.JSON)
|
||||
else if (uploader.RequestFormat == CustomUploaderRequestFormat.JSON)
|
||||
{
|
||||
result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), uploader.GetData(input), UploadHelpers.ContentTypeJSON,
|
||||
uploader.GetArguments(input), uploader.GetHeaders(input), null, uploader.ResponseType);
|
||||
}
|
||||
else if (requestFormat == CustomUploaderRequestFormat.FormURLEncoded)
|
||||
else if (uploader.RequestFormat == CustomUploaderRequestFormat.FormURLEncoded)
|
||||
{
|
||||
result.Response = SendRequestURLEncoded(uploader.RequestType, uploader.GetRequestURL(input), uploader.GetArguments(input),
|
||||
uploader.GetHeaders(input), null, uploader.ResponseType);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception("Unsupported request format.");
|
||||
throw new Exception("Unsupported request format: " + uploader.RequestFormat);
|
||||
}
|
||||
|
||||
try
|
||||
|
|
Loading…
Reference in a new issue