Example #1
0
        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;
                    }

                };
            }
        }
Example #2
0
 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;
 }
Example #3
0
 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;
        }