Implement parameters to custom uploader requests

This commit is contained in:
Jaex 2019-01-06 19:04:40 +03:00
parent cf8879cfb8
commit f077a0eed3
9 changed files with 52 additions and 35 deletions

View file

@ -142,12 +142,12 @@ protected string SendRequest(HttpMethod method, string url, string content, stri
} }
} }
public string SendRequestURLEncoded(HttpMethod method, string url, Dictionary<string, string> args, NameValueCollection headers = null, CookieCollection cookies = null, internal string SendRequestURLEncoded(HttpMethod method, string url, Dictionary<string, string> args, NameValueCollection headers = null, CookieCollection cookies = null,
ResponseType responseType = ResponseType.Text) ResponseType responseType = ResponseType.Text)
{ {
string query = URLHelpers.CreateQueryString(args); string query = URLHelpers.CreateQueryString(args);
return SendRequest(method, url, query, UploadHelpers.ContentTypeURLEncoded, args, headers, cookies, responseType); return SendRequest(method, url, query, UploadHelpers.ContentTypeURLEncoded, null, headers, cookies, responseType);
} }
protected bool SendRequestDownload(HttpMethod method, string url, Stream downloadStream, Dictionary<string, string> args = null, protected bool SendRequestDownload(HttpMethod method, string url, Stream downloadStream, Dictionary<string, string> args = null,

View file

@ -62,7 +62,7 @@ public class CustomUploaderItem
public bool ShouldSerializeHeaders() => Headers != null && Headers.Count > 0; public bool ShouldSerializeHeaders() => Headers != null && Headers.Count > 0;
public CustomUploaderRequestFormat RequestFormat { get; set; } public CustomUploaderRequestFormat RequestFormat { get; set; } = CustomUploaderRequestFormat.MultipartFormData;
[DefaultValue("")] [DefaultValue("")]
public string FileFormName { get; set; } public string FileFormName { get; set; }
@ -129,11 +129,29 @@ public string GetRequestURL(CustomUploaderInput input)
throw new Exception(Resources.CustomUploaderItem_GetRequestURL_RequestURLMustBeConfigured); throw new Exception(Resources.CustomUploaderItem_GetRequestURL_RequestURLMustBeConfigured);
} }
CustomUploaderParser parser = new CustomUploaderParser(input); string url = URLHelpers.FixPrefix(RequestURL);
parser.URLEncode = true;
string url = parser.Parse(RequestURL); Dictionary<string, string> parameters = GetParameters(input);
return URLHelpers.FixPrefix(url);
return URLHelpers.CreateQueryString(url, parameters);
}
public Dictionary<string, string> GetParameters(CustomUploaderInput input)
{
Dictionary<string, string> parameters = new Dictionary<string, string>();
if (Parameters != null)
{
CustomUploaderParser parser = new CustomUploaderParser(input);
parser.UseNameParser = true;
foreach (KeyValuePair<string, string> parameter in Parameters)
{
parameters.Add(parameter.Key, parser.Parse(parameter.Value));
}
}
return parameters;
} }
public string GetData(CustomUploaderInput input) public string GetData(CustomUploaderInput input)
@ -236,7 +254,7 @@ public void CheckBackwardCompatibility()
} }
else else
{ {
RequestFormat = CustomUploaderRequestFormat.URLQueryString; RequestFormat = CustomUploaderRequestFormat.None;
if (Arguments != null) if (Arguments != null)
{ {

View file

@ -291,10 +291,10 @@ public enum LinkFormatEnum
public enum CustomUploaderRequestFormat public enum CustomUploaderRequestFormat
{ {
[Description("None")]
None,
[Description("Form data (multipart/form-data)")] [Description("Form data (multipart/form-data)")]
MultipartFormData, MultipartFormData,
[Description("URL query string (example.com?name1=value1)")]
URLQueryString,
[Description("JSON (application/json)")] [Description("JSON (application/json)")]
JSON, JSON,
[Description("Binary")] [Description("Binary")]

View file

@ -91,7 +91,7 @@ public override UploadResult Upload(Stream stream, string fileName)
else if (uploader.RequestFormat == CustomUploaderRequestFormat.Binary) else if (uploader.RequestFormat == CustomUploaderRequestFormat.Binary)
{ {
result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), stream, UploadHelpers.GetMimeType(fileName), result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), stream, UploadHelpers.GetMimeType(fileName),
uploader.GetArguments(input), uploader.GetHeaders(input), null, uploader.ResponseType); null, uploader.GetHeaders(input), null, uploader.ResponseType);
} }
else else
{ {

View file

@ -1038,9 +1038,10 @@ private void CustomUploaderUpdateStates()
if (isSelected) if (isSelected)
{ {
CustomUploaderUpdateParametersState();
CustomUploaderUpdateHeadersState();
CustomUploaderUpdateRequestFormatState(); CustomUploaderUpdateRequestFormatState();
CustomUploaderUpdateArgumentsState(); CustomUploaderUpdateArgumentsState();
CustomUploaderUpdateHeadersState();
CustomUploaderUpdateResponseState(); CustomUploaderUpdateResponseState();
} }

View file

@ -88,7 +88,7 @@ public override UploadResult Upload(Stream stream, string fileName)
else if (uploader.RequestFormat == CustomUploaderRequestFormat.Binary) else if (uploader.RequestFormat == CustomUploaderRequestFormat.Binary)
{ {
result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), stream, UploadHelpers.GetMimeType(fileName), result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), stream, UploadHelpers.GetMimeType(fileName),
uploader.GetArguments(input), uploader.GetHeaders(input), null, uploader.ResponseType); null, uploader.GetHeaders(input), null, uploader.ResponseType);
} }
else else
{ {

View file

@ -78,20 +78,20 @@ public override UploadResult ShareURL(string url)
UploadResult result = new UploadResult { URL = url, IsURLExpected = false }; UploadResult result = new UploadResult { URL = url, IsURLExpected = false };
CustomUploaderInput input = new CustomUploaderInput("", url); CustomUploaderInput input = new CustomUploaderInput("", url);
if (uploader.RequestFormat == CustomUploaderRequestFormat.MultipartFormData) if (uploader.RequestFormat == CustomUploaderRequestFormat.None)
{
result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), null,
uploader.GetHeaders(input), null, uploader.ResponseType);
}
else if (uploader.RequestFormat == CustomUploaderRequestFormat.MultipartFormData)
{ {
result.Response = SendRequestMultiPart(uploader.GetRequestURL(input), uploader.GetArguments(input), uploader.GetHeaders(input), null, result.Response = SendRequestMultiPart(uploader.GetRequestURL(input), uploader.GetArguments(input), uploader.GetHeaders(input), null,
uploader.ResponseType, uploader.RequestType); uploader.ResponseType, uploader.RequestType);
} }
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 (uploader.RequestFormat == CustomUploaderRequestFormat.JSON) else if (uploader.RequestFormat == CustomUploaderRequestFormat.JSON)
{ {
result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), uploader.GetData(input), UploadHelpers.ContentTypeJSON, result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), uploader.GetData(input), UploadHelpers.ContentTypeJSON,
uploader.GetArguments(input), uploader.GetHeaders(input), null, uploader.ResponseType); null, uploader.GetHeaders(input), null, uploader.ResponseType);
} }
else if (uploader.RequestFormat == CustomUploaderRequestFormat.FormURLEncoded) else if (uploader.RequestFormat == CustomUploaderRequestFormat.FormURLEncoded)
{ {

View file

@ -83,7 +83,11 @@ public override UploadResult UploadText(string text, string fileName)
UploadResult result = new UploadResult(); UploadResult result = new UploadResult();
CustomUploaderInput input = new CustomUploaderInput(fileName, text); CustomUploaderInput input = new CustomUploaderInput(fileName, text);
if (uploader.RequestFormat == CustomUploaderRequestFormat.MultipartFormData) if (uploader.RequestFormat == CustomUploaderRequestFormat.None)
{
result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), null, uploader.GetHeaders(input), null, uploader.ResponseType);
}
else if (uploader.RequestFormat == CustomUploaderRequestFormat.MultipartFormData)
{ {
if (string.IsNullOrEmpty(uploader.FileFormName)) if (string.IsNullOrEmpty(uploader.FileFormName))
{ {
@ -100,15 +104,10 @@ public override UploadResult UploadText(string text, string fileName)
} }
} }
} }
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 (uploader.RequestFormat == CustomUploaderRequestFormat.JSON) else if (uploader.RequestFormat == CustomUploaderRequestFormat.JSON)
{ {
result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), uploader.GetData(input), UploadHelpers.ContentTypeJSON, result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), uploader.GetData(input), UploadHelpers.ContentTypeJSON,
uploader.GetArguments(input), uploader.GetHeaders(input), null, uploader.ResponseType); null, uploader.GetHeaders(input), null, uploader.ResponseType);
} }
else if (uploader.RequestFormat == CustomUploaderRequestFormat.Binary) else if (uploader.RequestFormat == CustomUploaderRequestFormat.Binary)
{ {
@ -116,7 +115,7 @@ public override UploadResult UploadText(string text, string fileName)
using (MemoryStream stream = new MemoryStream(bytes)) using (MemoryStream stream = new MemoryStream(bytes))
{ {
result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), stream, UploadHelpers.GetMimeType(fileName), result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), stream, UploadHelpers.GetMimeType(fileName),
uploader.GetArguments(input), uploader.GetHeaders(input), null, uploader.ResponseType); null, uploader.GetHeaders(input), null, uploader.ResponseType);
} }
} }
else if (uploader.RequestFormat == CustomUploaderRequestFormat.FormURLEncoded) else if (uploader.RequestFormat == CustomUploaderRequestFormat.FormURLEncoded)

View file

@ -78,20 +78,19 @@ public override UploadResult ShortenURL(string url)
UploadResult result = new UploadResult { URL = url }; UploadResult result = new UploadResult { URL = url };
CustomUploaderInput input = new CustomUploaderInput("", url); CustomUploaderInput input = new CustomUploaderInput("", url);
if (uploader.RequestFormat == CustomUploaderRequestFormat.MultipartFormData) if (uploader.RequestFormat == CustomUploaderRequestFormat.None)
{
result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), null, uploader.GetHeaders(input), null, uploader.ResponseType);
}
else if (uploader.RequestFormat == CustomUploaderRequestFormat.MultipartFormData)
{ {
result.Response = SendRequestMultiPart(uploader.GetRequestURL(input), uploader.GetArguments(input), uploader.GetHeaders(input), null, result.Response = SendRequestMultiPart(uploader.GetRequestURL(input), uploader.GetArguments(input), uploader.GetHeaders(input), null,
uploader.ResponseType, uploader.RequestType); uploader.ResponseType, uploader.RequestType);
} }
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 (uploader.RequestFormat == CustomUploaderRequestFormat.JSON) else if (uploader.RequestFormat == CustomUploaderRequestFormat.JSON)
{ {
result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), uploader.GetData(input), UploadHelpers.ContentTypeJSON, result.Response = SendRequest(uploader.RequestType, uploader.GetRequestURL(input), uploader.GetData(input), UploadHelpers.ContentTypeJSON,
uploader.GetArguments(input), uploader.GetHeaders(input), null, uploader.ResponseType); null, uploader.GetHeaders(input), null, uploader.ResponseType);
} }
else if (uploader.RequestFormat == CustomUploaderRequestFormat.FormURLEncoded) else if (uploader.RequestFormat == CustomUploaderRequestFormat.FormURLEncoded)
{ {