Custom uploader request format will be set explicitly

This commit is contained in:
Jaex 2018-11-30 14:03:45 +03:00
parent e138c41662
commit dd7ba07c60
10 changed files with 54 additions and 60 deletions

View file

@ -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>()

View file

@ -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)

View file

@ -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)")]

View file

@ -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

View file

@ -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();
}

View file

@ -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);

View file

@ -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

View file

@ -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;

View file

@ -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

View file

@ -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