Imgur.Imgur.UploadToImgur C# (CSharp) Method

UploadToImgur() public method

public UploadToImgur ( MemoryStream ms, int width, int height ) : string
ms System.IO.MemoryStream
width int
height int
return string
        public string UploadToImgur(MemoryStream ms, int width, int height)
        {
            byte[] writeData;
            if (this.authenticated)
                writeData = Encoding.ASCII.GetBytes("image=" + LongDataEscape(Convert.ToBase64String(ms.ToArray())));
            else
                writeData = Encoding.ASCII.GetBytes("key=" + imgurApiKey + "&image=" + LongDataEscape(Convert.ToBase64String(ms.ToArray())));

            this.ProgressBar.Start("Imgur", writeData.Length);

            HttpWebRequest req = null;
            string url = "";
            try {
                if (this.authenticated)
                    req = this.oauth.AuthenticatedWebRequest("https://" + "api.imgur.com/2/upload.xml");
                else
                    req = (HttpWebRequest)HttpWebRequest.Create("https://" + "api.imgur.com/2/upload.xml");
                req.Proxy = this.GetProxy();
                req.Method = "POST";
                req.ContentType = "application/x-www-form-urlencoded";
                req.ContentLength = writeData.Length;
                req.UserAgent = "ClipUpload 3/clipupload.net";

                Stream stream = req.GetRequestStream();

                ms.Dispose();
                ms = new MemoryStream(writeData);
                int sr = 1024;
                for (int i = 0; i < ms.Length; i += 1024) {
                    if (ms.Length - i < 1024)
                        sr = (int)ms.Length - i;
                    else
                        sr = 1024;

                    byte[] buffer = new byte[sr];
                    ms.Seek((long)i, SeekOrigin.Begin);
                    ms.Read(buffer, 0, sr);
                    stream.Write(buffer, 0, sr);

                    if (this.ProgressBar.Canceled) {
                        req.Abort();
                        ms.Dispose();

                        req = null;
                        ms = null;

                        return "CANCELED";
                    }
                    this.ProgressBar.Set(i);
                }

                WebResponse response = req.GetResponse();
                StreamReader reader = new StreamReader(response.GetResponseStream());
                string result = reader.ReadToEnd();

                if (result.Contains("<original>http")) {
                    url = GetBetween(result, "<original>", "</original>");

                    if (width != -1)
                        this.AddLog(url, width + " x " + height);
                    else
                        this.AddLog(url, (ms.Length / 1000) + " kB");
                }
            } catch (Exception ex) {
                this.Debug("UploadToImgur threw " + ex.GetType().FullName + ": '" + ex.Message + "'");
            }

            this.ProgressBar.Done();

            return url;
        }