Esempio n. 1
0
        public async Task Save(Bitmap Image, ImageFormat Format, string FileName, RecentViewModel Recents)
        {
            var response = await Save(Image, Format);

            switch (response)
            {
            case ImgurUploadResponse uploadResponse:
                var recentItem = Recents.Add(uploadResponse.Data.Link, RecentItemType.Link, false);
                recentItem.DeleteHash = uploadResponse.Data.DeleteHash;

                // Copy path to clipboard only when clipboard writer is off
                if (_settings.CopyOutPathToClipboard && !ServiceProvider.Get <ClipboardWriter>().Active)
                {
                    uploadResponse.Data.Link.WriteToClipboard();
                }
                break;

            case Exception e:
                if (!_diskWriter.Active)
                {
                    ServiceProvider.Get <IMainWindow>().IsVisible = true;

                    var yes = _messageProvider.ShowYesNo(
                        $"{_loc.ImgurFailed}\n{e.Message}\n\nDo you want to Save to Disk?", "Imgur Upload Failed");

                    if (yes)
                    {
                        await _diskWriter.Save(Image, Format, FileName, Recents);
                    }
                }
                break;
            }
        }
Esempio n. 2
0
        public async Task Save(IBitmapImage Image, ImageFormats Format, string FileName)
        {
            var response = await Save(Image, Format);

            switch (response)
            {
            case UploadResult uploadResult:
                var link = uploadResult.Url;

                // Copy path to clipboard only when clipboard writer is off
                if (_settings.CopyOutPathToClipboard && !ServiceProvider.Get <ClipboardWriter>().Active)
                {
                    link.WriteToClipboard();
                }
                break;

            case Exception e:
                if (!_diskWriter.Active)
                {
                    ServiceProvider.Get <IMainWindow>().IsVisible = true;

                    var yes = _messageProvider.ShowYesNo(
                        $"{e.Message}\n\nDo you want to Save to Disk?", _loc.ImageUploadFailed);

                    if (yes)
                    {
                        await _diskWriter.Save(Image, Format, FileName);
                    }
                }
                break;
            }
        }
Esempio n. 3
0
        public async void Save(Bitmap Image, ImageFormat Format, string FileName, TextLocalizer Status, RecentViewModel Recents)
        {
            var ritem = Recents.Add($"{_loc.ImgurUploading} (0%)", RecentItemType.Link, true);

            using (var w = new WebClient {
                Proxy = _settings.Proxy.GetWebProxy()
            })
            {
                w.UploadProgressChanged += (s, e) =>
                {
                    ritem.Display = $"{_loc.ImgurUploading} ({e.ProgressPercentage}%)";
                };

                w.Headers.Add("Authorization", $"Client-ID {ApiKeys.ImgurClientId}");

                NameValueCollection values;

                using (var ms = new MemoryStream())
                {
                    Image.Save(ms, Format);

                    values = new NameValueCollection
                    {
                        { "image", Convert.ToBase64String(ms.ToArray()) }
                    };
                }

                XDocument xdoc;

                try
                {
                    var response = await w.UploadValuesTaskAsync("https://api.imgur.com/3/upload.xml", values);

                    xdoc = XDocument.Load(new MemoryStream(response));

                    var xAttribute = xdoc.Root?.Attribute("success");

                    if (xAttribute == null || int.Parse(xAttribute.Value) != 1)
                    {
                        throw new Exception("Response indicates Failure");
                    }

                    Image.Dispose();
                }
                catch (Exception E)
                {
                    ritem.Display          = _loc.ImgurFailed;
                    Status.LocalizationKey = nameof(LanguageManager.ImgurFailed);

                    var yes = _messageProvider.ShowYesNo($"{_loc.ImgurFailed}\n{E.Message}\n\nDo you want to Save to Disk?", "Imgur Upload Failed");

                    if (yes)
                    {
                        _diskWriter.Save(Image, Format, FileName, Status, Recents);
                    }

                    return;
                }

                var link = xdoc.Root.Element("link").Value;

                if (_settings.CopyOutPathToClipboard)
                {
                    link.WriteToClipboard();
                }

                ritem.FilePath = ritem.Display = link;
                ritem.Saved();

                _systemTray.ShowTextNotification($"{_loc.ImgurSuccess}: {link}", _settings.UI.ScreenShotNotifyTimeout, () => Process.Start(link));

                Status.LocalizationKey = nameof(LanguageManager.ImgurSuccess);
            }
        }
Esempio n. 4
0
        public async Task Save(Bitmap Image, ImageFormat Format, string FileName, RecentViewModel Recents)
        {
            var progressItem = _systemTray.ShowProgress();

            progressItem.PrimaryText = _loc.ImgurUploading;

            using (var w = new WebClient {
                Proxy = _settings.Proxy.GetWebProxy()
            })
            {
                w.UploadProgressChanged += (s, e) =>
                {
                    progressItem.Progress = e.ProgressPercentage;
                };

                w.Headers.Add("Authorization", $"Client-ID {ApiKeys.ImgurClientId}");

                NameValueCollection values;

                using (var ms = new MemoryStream())
                {
                    Image.Save(ms, Format);

                    values = new NameValueCollection
                    {
                        { "image", Convert.ToBase64String(ms.ToArray()) }
                    };
                }

                XDocument xdoc;

                try
                {
                    var response = await w.UploadValuesTaskAsync("https://api.imgur.com/3/upload.xml", values);

                    xdoc = XDocument.Load(new MemoryStream(response));

                    var xAttribute = xdoc.Root?.Attribute("success");

                    if (xAttribute == null || int.Parse(xAttribute.Value) != 1)
                    {
                        throw new Exception("Response indicates Failure");
                    }
                }
                catch (Exception e)
                {
                    progressItem.Finished = true;
                    progressItem.Success  = false;

                    progressItem.PrimaryText = _loc.ImgurFailed;

                    if (!_diskWriter.Active)
                    {
                        ServiceProvider.Get <IMainWindow>().IsVisible = true;

                        var yes = _messageProvider.ShowYesNo(
                            $"{_loc.ImgurFailed}\n{e.Message}\n\nDo you want to Save to Disk?", "Imgur Upload Failed");

                        if (yes)
                        {
                            await _diskWriter.Save(Image, Format, FileName, Recents);
                        }
                    }

                    return;
                }

                var link = xdoc.Root.Element("link").Value;

                // Copy path to clipboard only when clipboard writer is off
                if (_settings.CopyOutPathToClipboard && !ServiceProvider.Get <ClipboardWriter>().Active)
                {
                    link.WriteToClipboard();
                }

                Recents.Add(link, RecentItemType.Link, false);

                progressItem.Finished      = true;
                progressItem.Success       = true;
                progressItem.PrimaryText   = _loc.ImgurSuccess;
                progressItem.SecondaryText = link;

                progressItem.RegisterClick(() => Process.Start(link));
            }
        }