private void btnUploadToImageShack_Click(object sender, EventArgs e) { IImageShackUploader uploader = new StandardImageShackUploader(); ClearLastUploadedImageDisplayDetails(); if (chkResize.Checked == true) { int resizeWidth; bool validResizeWidth = int.TryParse(txtImageWidth.Text, out resizeWidth); int resizeHeight; bool validResizeHeight = int.TryParse(txtImageHeight.Text, out resizeHeight); if (!validResizeHeight || !validResizeWidth) { txtInfo.Text = "Invalid resize width or height entered"; } else { txtInfo.Text = "Uploading Image..."; // uploading image can take some time, so assign it to a BackgroundWorker to prevent the // main UI thread being frozen up. BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += delegate(object sender2, DoWorkEventArgs e2) { _lastImageUploadDetails = uploader.UploadImage(txtFilePath.Text, resizeWidth, resizeHeight); }; bw.RunWorkerAsync(); // when the background worker is finished, run this anonymous method which either updates // the details of the last uploaded image or displays an appropriate error message // if there were problems. bw.RunWorkerCompleted += delegate(object sender3, RunWorkerCompletedEventArgs e3) { try { if (e3.Error != null) { throw e3.Error; } UpdateLastUploadedImageDisplayDetails(_lastImageUploadDetails); txtInfo.Text = "Image Uploaded."; } catch (FileNotFoundException exp) { txtInfo.Text = exp.Message; } catch (XmlException exp) { txtInfo.Text = exp.Message; } }; } } else { txtInfo.Text = "Uploading Image..."; BackgroundWorker bw = new BackgroundWorker(); // same deal as the code above like this, except this time we're not resizing the image. bw.DoWork += delegate(object sender2, DoWorkEventArgs e2) { _lastImageUploadDetails = uploader.UploadImage(txtFilePath.Text); }; bw.RunWorkerAsync(); bw.RunWorkerCompleted += delegate(object sender3, RunWorkerCompletedEventArgs e3) { try { if (e3.Error != null) { throw e3.Error; } UpdateLastUploadedImageDisplayDetails(_lastImageUploadDetails); txtInfo.Text = "Image Uploaded."; } catch (FileNotFoundException exp) { txtInfo.Text = exp.Message; } catch (XmlException exp) { txtInfo.Text = exp.Message; } }; } }
private void UpdateLastUploadedImageDisplayDetails(UploadedImageDetails details) { txtImageLink.Text = details.ImageLink; txtThumbLink.Text = details.ThumbLink; txtAdLink.Text = details.AdLink; txtThumbExists.Text = details.ThumbExists.ToString(); txtTotalRaters.Text = details.TotalRaters.ToString(); txtAverageRating.Text = details.AverageRating.ToString(); txtImageLocation.Text = details.ImageLocation; txtThumbLocation.Text = details.ThumbLocation; txtServer.Text = details.Server; txtImageName.Text = details.ImageName; txtDonePage.Text = details.DonePage; txtResolution.Text = details.Resolution; txtFileSize.Text = details.FileSize.ToString(); txtImageClass.Text = details.ImageClass; }
public ClientForm() { InitializeComponent(); _lastImageUploadDetails = new UploadedImageDetails(); chkResize.Checked = false; }
/// <summary> /// Extracts the details about the now uploaded image from the Xml that ImageShack returns. /// </summary> /// <param name="stream">The sequence of bytes containing the Xml response data.</param> /// <returns>The details about the image that has been uploaded.</returns> /// <exception cref="System.Xml.XmlException">Thrown when there is trouble interpreting ImageShack's response as /// Xml</exception> private UploadedImageDetails ExtractImageDetails(Stream stream) { UploadedImageDetails details = new UploadedImageDetails(); try { XmlReader rdr = XmlReader.Create(stream); while (rdr.Read()) { if (rdr.NodeType == XmlNodeType.Element) { switch (rdr.Name) { case "image_link": details.ImageLink = rdr.ReadString(); break; case "thumb_link": details.ThumbLink = rdr.ReadString(); break; case "ad_link": details.AdLink = rdr.ReadString(); break; case "thumb_exists": string thumbExists = rdr.ReadString(); if (thumbExists == "no") { details.ThumbExists = false; } else if (thumbExists == "yes") { details.ThumbExists = true; } else { throw new InvalidOperationException(); } break; case "total_raters": details.TotalRaters = rdr.ReadElementContentAsInt(); break; case "ave_rating": details.AverageRating = rdr.ReadElementContentAsDouble(); break; case "image_location": details.ImageLocation = rdr.ReadString(); break; case "thumb_location": details.ThumbLocation = rdr.ReadString(); break; case "server": details.Server = rdr.ReadString(); break; case "image_name": details.ImageName = rdr.ReadString(); break; case "done_page": details.DonePage = rdr.ReadString(); break; case "resolution": details.Resolution = rdr.ReadString(); break; case "filesize": details.FileSize = rdr.ReadElementContentAsInt(); break; case "image_class": details.ImageClass = rdr.ReadString(); break; default: break; } } } } catch (XmlException e) { throw e; } return details; }