public void ParseResponse(UploadResult result, bool isShortenedURL = false) { if (result != null && !string.IsNullOrEmpty(result.Response)) { regexResult = ParseRegexList(result.Response); string url; if (!string.IsNullOrEmpty(URL)) { url = ParseURL(URL); } else { url = result.Response; } if (isShortenedURL) { result.ShortenedURL = url; } else { result.URL = url; } result.ThumbnailURL = ParseURL(ThumbnailURL); result.DeletionURL = ParseURL(DeletionURL); } }
protected UploadResult UploadData(Stream dataStream, string url, string fileName, string fileFormName = "file", Dictionary<string, string> arguments = null, NameValueCollection headers = null, CookieCollection cookies = null, ResponseType responseType = ResponseType.Text, HttpMethod method = HttpMethod.POST, string requestContentType = "multipart/form-data", string metadata = null) { UploadResult result = new UploadResult(); IsUploading = true; StopUploadRequested = false; try { string boundary = CreateBoundary(); byte[] bytesArguments = MakeInputContent(boundary, arguments, false); byte[] bytesDataOpen; byte[] bytesDataDatafile = { }; if (metadata != null) { bytesDataOpen = MakeFileInputContentOpen(boundary, fileFormName, fileName, metadata); bytesDataDatafile = MakeFileInputContentOpen(boundary, fileFormName, fileName, null); } else { bytesDataOpen = MakeFileInputContentOpen(boundary, fileFormName, fileName); } byte[] bytesDataClose = MakeFileInputContentClose(boundary); long contentLength = bytesArguments.Length + bytesDataOpen.Length + bytesDataDatafile.Length + dataStream.Length + bytesDataClose.Length; HttpWebRequest request = PrepareDataWebRequest(url, boundary, contentLength, requestContentType, cookies, headers, method); using (Stream requestStream = request.GetRequestStream()) { requestStream.Write(bytesArguments, 0, bytesArguments.Length); requestStream.Write(bytesDataOpen, 0, bytesDataOpen.Length); requestStream.Write(bytesDataDatafile, 0, bytesDataDatafile.Length); if (!TransferData(dataStream, requestStream)) return null; requestStream.Write(bytesDataClose, 0, bytesDataClose.Length); } result.Response = ResponseToString(request.GetResponse(), responseType); result.IsSuccess = true; } catch (Exception e) { if (!StopUploadRequested) { if (ThrowWebExceptions && e is WebException) throw; AddWebError(e); } } finally { currentRequest = null; IsUploading = false; } return result; }
private void TestCustomUploader(CustomUploaderType type, CustomUploaderItem item) { btnCustomUploaderImageUploaderTest.Enabled = btnCustomUploaderTextUploaderTest.Enabled = btnCustomUploaderFileUploaderTest.Enabled = btnCustomUploaderURLShortenerTest.Enabled = false; UploadResult result = null; txtCustomUploaderLog.ResetText(); TaskEx.Run(() => { try { switch (type) { case CustomUploaderType.Image: using (Stream stream = ShareXYZResources.Logo.GetStream()) { CustomImageUploader imageUploader = new CustomImageUploader(item); result = imageUploader.Upload(stream, "Test.png"); result.Errors = imageUploader.Errors; } break; case CustomUploaderType.Text: CustomTextUploader textUploader = new CustomTextUploader(item); result = textUploader.UploadText("ShareXYZ text upload test", "Test.txt"); result.Errors = textUploader.Errors; break; case CustomUploaderType.File: using (Stream stream = ShareXYZResources.Logo.GetStream()) { CustomFileUploader fileUploader = new CustomFileUploader(item); result = fileUploader.Upload(stream, "Test.png"); result.Errors = fileUploader.Errors; } break; case CustomUploaderType.URL: CustomURLShortener urlShortener = new CustomURLShortener(item); result = urlShortener.ShortenURL(Links.URL_WEBSITE); result.Errors = urlShortener.Errors; break; } } catch (Exception e) { result = new UploadResult(); result.Errors.Add(e.Message); } }, () => { if (!IsDisposed) { if (result != null) { if ((type != CustomUploaderType.URL && !string.IsNullOrEmpty(result.URL)) || (type == CustomUploaderType.URL && !string.IsNullOrEmpty(result.ShortenedURL))) { txtCustomUploaderLog.AppendText("URL: " + result + Environment.NewLine); if (!string.IsNullOrEmpty(result.ThumbnailURL)) { txtCustomUploaderLog.AppendText("Thumbnail URL: " + result.ThumbnailURL + Environment.NewLine); } if (!string.IsNullOrEmpty(result.DeletionURL)) { txtCustomUploaderLog.AppendText("Deletion URL: " + result.DeletionURL + Environment.NewLine); } } else if (result.IsError) { txtCustomUploaderLog.AppendText(Resources.UploadersConfigForm_Error + ": " + result.ErrorsToString() + Environment.NewLine); } else { txtCustomUploaderLog.AppendText(Resources.UploadersConfigForm_TestCustomUploader_Error__Result_is_empty_ + Environment.NewLine); } txtCustomUploaderLog.ScrollToCaret(); btnCustomUploaderShowLastResponse.Tag = result.Response; btnCustomUploaderShowLastResponse.Enabled = !string.IsNullOrEmpty(result.Response); } btnCustomUploaderImageUploaderTest.Enabled = btnCustomUploaderTextUploaderTest.Enabled = btnCustomUploaderFileUploaderTest.Enabled = btnCustomUploaderURLShortenerTest.Enabled = true; } }); }