private void ExecuteRefreshCommand()
        {
            ImgurImage value = Posts[1];

            Posts[1] = Posts[5];
            Posts[5] = value;
        }
        private void TakeFullScreenSnapsShot()
        {
            if (!_imgurApi.IsLoggedIn())
            {
                return;
            }
            _imgurApi.RefreshToken();
            var windowStateBefore   = WindowState;
            var showInTaskbarBefore = ShowInTaskbar;

            if (WindowState == WindowState.Normal)
            {
                WindowState   = WindowState.Minimized;
                ShowInTaskbar = false;
                while (ShowInTaskbar)
                {
                }
            }
            var screenShot   = new ScreenShot();
            var screenBuffer = screenShot.CaptureScreen();
            var imgurUpload  = new ImgurImage(screenBuffer);

            WindowState   = windowStateBefore;
            ShowInTaskbar = showInTaskbarBefore;
        }
        public async void GetContent_given_username_with_1_image_of_invalid_type_returns_empty_album()
        {
            var mock = new Mock <ImgurRatelimiter>(null);

            mock.Setup(m => m.IsRequestAllowed()).Returns(true);
            mock.Setup(m => m.LimitsHaveBeenLoaded()).Returns(true);

            var username = "******";
            var image    = new ImgurImage {
                Height = 10, Width = 5, Title = "title", Type = "image/png"
            };
            var handler = StubHttpClient.GetHandler();

            handler.AddResponse(new Uri($"https://api.imgur.com/3/account/{username}/images/count"), HttpStatusCode.OK, new ApiHelper <int> {
                Data = 1
            });
            handler.AddResponse(new Uri($"https://api.imgur.com/3/account/{username}/images/0"), HttpStatusCode.OK, new ApiHelper <ICollection <ImgurImage> > {
                Data = new List <ImgurImage> {
                    image
                }
            });

            var source = new ImgurAccountImagesSource(StubHttpClient.Create(handler), mock.Object);

            source.Settings = CreateSettings();
            var result = await source.GetContent(username);

            Assert.NotNull(result);
            Assert.Empty(result.Images);

            mock.Verify(i => i.LimitsHaveBeenLoaded(), Times.Once);
            mock.Verify(i => i.IsRequestAllowed(), Times.Exactly(2));
        }
Example #4
0
        /// <summary>
        ///     Delete an imgur image, this is done by specifying the delete hash
        /// </summary>
        /// <param name="imgurImage"></param>
        /// <param name="token"></param>
        public async Task <string> DeleteImgurImageAsync(ImgurImage imgurImage, CancellationToken token = default)
        {
            Log.Debug().WriteLine("Deleting Imgur image for {0}", imgurImage.Data.Deletehash);
            var    deleteUri = new Uri(string.Format(_imgurConfiguration.ApiUrl + "/image/{0}", imgurImage.Data.Deletehash));
            string responseString;

            Behaviour.MakeCurrent();
            using (var client = HttpClientFactory.Create(deleteUri))
            {
                var response = await client.DeleteAsync(deleteUri, token).ConfigureAwait(false);

                if ((response.StatusCode != HttpStatusCode.NotFound) && (response.StatusCode != HttpStatusCode.BadRequest))
                {
                    await response.HandleErrorAsync().ConfigureAwait(false);
                }
                responseString = await response.GetAsAsync <string>(token).ConfigureAwait(false);

                Log.Debug().WriteLine("Delete result: {0}", responseString);
            }
            // Make sure we remove it from the history, if no error occured
            _imgurConfiguration.RuntimeImgurHistory.Remove(imgurImage.Data.Id);
            _imgurConfiguration.ImgurUploadHistory.Remove(imgurImage.Data.Id);

            // dispose is called inside the imgurInfo object
            imgurImage.Image = null;
            return(responseString);
        }
Example #5
0
        public async void GetContent_given_valid_url_of_invalid_imageformat_returns_null()
        {
            var mock = new Mock <ImgurRatelimiter>(null);

            mock.Setup(m => m.IsRequestAllowed()).Returns(true);
            mock.Setup(m => m.LimitsHaveBeenLoaded()).Returns(true);

            var imageId = "example";
            var output  = new ImgurImage {
                Height = 5, Width = 10, Title = "test", Link = $"i.imgur.com/{imageId}", Type = "image/png"
            };

            var handler = StubHttpClient.GetHandler();

            handler.AddResponse(new Uri($"https://api.imgur.com/3/image/{imageId}"), HttpStatusCode.OK, new ApiHelper <ImgurImage> {
                Data = output
            });

            var source = new ImgurImageSource(StubHttpClient.Create(handler), mock.Object);

            source.Settings = CreateSettings();
            var result = await source.GetContent(imageId);

            Assert.Null(result);
            mock.Verify(i => i.LimitsHaveBeenLoaded(), Times.Once);
            mock.Verify(i => i.IsRequestAllowed(), Times.Once);
        }
Example #6
0
 public PostDetailViewModel(ImgurImage image)
 {
     PostData                = image;
     UpvoteCommand           = new RelayCommand(Upvote);
     DownvoteCommand         = new RelayCommand(Downvote);
     FavoriteCommand         = new RelayCommand(Favorite);
     DownloadCommentsCommand = new RelayCommand(DownloadComments, () => !seeAllComments);
 }
Example #7
0
        public async void GetImageType_returns_correct_type()
        {
            var image = new ImgurImage {
                Type = "image/jpg"
            };

            Assert.Equal(".jpg", await image.GetImageType());
        }
Example #8
0
        public async void GetImageName_returns_correct_name()
        {
            var image = new ImgurImage {
                Link = "example.com/test.jpg", Type = "image/jpg", Title = "hello"
            };

            Assert.Equal("hello.jpg", await image.GetImageName());
        }
Example #9
0
        private async void button1_Click(object sender, EventArgs e)
        {
            button1.Enabled = false;
            button2.Enabled = false;
            var result = await mApi.UploadImage(pictureBox1.Image);

            mImgurImage = result;
            this.Close();
        }
Example #10
0
 private static void DumpImageInfo(ImgurImage img)
 {
     Console.WriteLine("\nImage Info:");
     Console.WriteLine("    ID:          " + img.ID);
     Console.WriteLine("    Link:        " + img.Link);
     Console.WriteLine("    Image Type:  " + img.Type);
     Console.WriteLine("    Date Added:  " + img.TimeAdded);
     Console.WriteLine("    Views:       " + img.Views);
     Console.WriteLine("    Delete Hash: " + img.DeleteHash);
 }
Example #11
0
        public void ImageDetailsFilledInForImage()
        {
            ImgurGalleryImageList testImageList = ImgurApiSource.Instance.GetMainGalleryImagesAsync(MainGallerySection.hot, MainGallerySort.viral, 0).Result;
            ImgurImage            testImage     = testImageList.Images.ElementAt(3);

            ImgurImage newtestImage = ImgurApiSource.Instance.GetImageDetailsAsync(testImage.ID).Result;

            Assert.IsNotNull(newtestImage.isAnimated);
            Assert.IsNotNull(newtestImage.Height);
            Assert.IsNotNull(newtestImage.Bandwidth);
        }
        public void DeleteUploadedImageByDeleteHash()
        {
            ImgurImage test = ImgurApiSource.Instance.PostImageAnonymousAsync(ImageBytes, "Hello", "DescriptionTest").Result;

            System.Threading.SpinWait.SpinUntil(() => 0 == 1, TimeSpan.FromSeconds(4));

            Assert.IsNotNull(test.Deletehash);

            ImgurBasic result = ImgurApiSource.Instance.DeleteImageAsync(test.Deletehash).Result;

            Assert.IsTrue(result.success);
        }
        public void UploadImageWithURL()
        {
            ImgurImage test = ImgurApiSource.Instance.PostImageAnonymousAsync(TestImage, "Hello", "DescriptionTest").Result;

            Assert.IsNotNull(test.Deletehash);

            // Queue this particular image for deletion
            imagesToDelete.Add(test);

            test = ImgurApiSource.Instance.GetImageDetailsAsync(test.ID).Result;
            Assert.AreEqual("Hello", test.Title);
            Assert.AreEqual("DescriptionTest", test.Description);
        }
Example #14
0
 /// <summary>
 ///     Retrieve the thumbnail of an imgur image
 /// </summary>
 /// <param name="imgurImage">ImgurImage</param>
 /// <param name="token">CancellationToken</param>
 public async Task RetrieveImgurThumbnailAsync(ImgurImage imgurImage, CancellationToken token = default)
 {
     if (imgurImage.Image != null)
     {
         Log.Debug().WriteLine("Imgur thumbnail already available.");
         return;
     }
     if (imgurImage.Data.LinkThumbnail == null)
     {
         Log.Debug().WriteLine("Imgur URL was null, not retrieving thumbnail.");
         return;
     }
     Log.Debug().WriteLine("Retrieving Imgur image for {0} with url {1}", imgurImage.Data.Id, imgurImage.Data.LinkThumbnail);
     ImageHttpBehaviour.MakeCurrent();
     imgurImage.Image = await imgurImage.Data.LinkThumbnail.GetAsAsync <BitmapSource>(token).ConfigureAwait(true);
 }
Example #15
0
        private static EmbedData GetEmbedData(ImgurImage img)
        {
            var media = img.ToMedia();

            return(new EmbedData()
            {
                Url = media.Location,
                Title = img.Title,
                Description = img.Description,
                Type = img.IsAnimated ? EmbedDataTypes.SingleVideo : EmbedDataTypes.SingleImage,
                ProviderName = "Imgur",
                ProviderUrl = "https://imgur.com",
                RestrictionPolicy = media.RestrictionPolicy,
                MetadataImage = media,
                Medias = new[] { media }
            });
        }
        public void UpdateImageByDeleteHash()
        {
            ImgurImage test = ImgurApiSource.Instance.ImageUploadAsync(ImageBytes, "Hello", "DescriptionTest").Result;

            // pause for 4 seconds while the server updates
            System.Threading.SpinWait.SpinUntil(() => 0 == 1, TimeSpan.FromSeconds(4));

            Assert.IsNotNull(test.Deletehash);

            ImgurBasic result = ImgurApiSource.Instance.ImageUpdateAsync(test.Deletehash, "NewTitle", "NewDescription").Result;

            // pause for 4 more seconds while the server updates
            System.Threading.SpinWait.SpinUntil(() => 0 == 1, TimeSpan.FromSeconds(4));

            ImgurImage image = ImgurApiSource.Instance.ImageDetailsAsync(test.ID).Result;

            Assert.AreEqual(image.Title, "NewTitle");
            Assert.AreEqual(image.Description, "NewDescription");
        }
Example #17
0
        private static async void UploadImage()
        {
            try
            {
                //Image
                ImgurImage urlImage = await imgur.UploadImageAnonymous("https://assets-cdn.github.com/images/modules/logos_page/GitHub-Mark.png", "name", "title", "description");

                byte[]       buff = File.ReadAllBytes("vs-icon.png");
                MemoryStream ms   = new MemoryStream(buff);

                ImgurImage streamImage = await imgur.UploadImageAnonymous(ms, "name", "title", "description");

                bool updated = await imgur.UpdateImageAnonymous(streamImage.Deletehash, "updated title", "a new description");

                ImgurImage getImage = await imgur.GetImage(streamImage.Id);

                //Album
                ImgurCreateAlbum createdAlbum = await imgur.CreateAlbumAnonymous(new string[] { streamImage.Id }, "album title", "album description", ImgurAlbumPrivacy.Public, ImgurAlbumLayout.Horizontal, streamImage.Id);

                bool result = await imgur.UpdateAlbumAnonymous(createdAlbum.DeleteHash, new string[] { streamImage.Id, urlImage.Id }, "updated album title", "update album description", ImgurAlbumPrivacy.Hidden, ImgurAlbumLayout.Blog, urlImage.Id);

                bool addImagesResult = await imgur.AddImagesToAlbumAnonymous(createdAlbum.DeleteHash, new string[] { streamImage.Id, urlImage.Id });

                bool removeImagesResult = await imgur.RemoveImagesFromAlbumAnonymous(createdAlbum.DeleteHash, new string[] { urlImage.Id });

                ImgurAlbum album = await imgur.GetAlbum(createdAlbum.Id);



                //Delete
                bool deleteAlbum = await imgur.DeleteAlbumAnonymous(createdAlbum.DeleteHash);

                bool deletedUrlImage = await imgur.DeleteImageAnonymous(urlImage.Deletehash);

                bool deletedStreamImage = await imgur.DeleteImageAnonymous(streamImage.Deletehash);
            }
            catch (Exception e)
            {
                System.Console.Write(e.Message);
            }
        }
Example #18
0
        /// <summary>
        ///     Retrieve the thumbnail of an imgur image
        /// </summary>
        /// <param name="imgurImage">ImgurImage</param>
        /// <param name="token">CancellationToken</param>
        public static async Task RetrieveImgurThumbnailAsync(ImgurImage imgurImage, CancellationToken token = default)
        {
            if (imgurImage.Image != null)
            {
                Log.Info().WriteLine("Imgur thumbnail already available.");
                return;
            }
            if (imgurImage.Data.LinkThumbnail == null)
            {
                Log.Info().WriteLine("Imgur URL was null, not retrieving thumbnail.");
                return;
            }
            Log.Info().WriteLine("Retrieving Imgur image for {0} with url {1}", imgurImage.Data.Id, imgurImage.Data.LinkThumbnail);
            Behaviour.MakeCurrent();
            using (var client = HttpClientFactory.Create(imgurImage.Data.LinkThumbnail))
            {
                using (var response = await client.GetAsync(imgurImage.Data.LinkThumbnail, token).ConfigureAwait(false))
                {
                    await response.HandleErrorAsync().ConfigureAwait(false);

                    imgurImage.Image = await response.GetAsAsync <BitmapSource>(token).ConfigureAwait(false);
                }
            }
        }
Example #19
0
        private static async void UploadImage()
        {
            try
            {
                API.CreateSession();
                //bool Check = await API.ChechToken("");
                //System.Console.WriteLine(Check);

                string Code = API.RequestPin();
                if (Code.Contains(".com"))
                {
                    Console.WriteLine(Code);
                    Console.Write("Write Pin: ");
                    Code = Console.ReadLine();
                }
                ImgurToken Token = await API.RequestTokenWithPin(Code);

                System.Console.WriteLine(Token.Access_token);
                ImgurToken ResetToken = await API.ResetToken(Token);

                Token = ResetToken;
                System.Console.WriteLine(ResetToken.Access_token);
                await API.GetImagesAlbum("Chww0");

                long ImageCount = await API.GetImageCount(Token);

                System.Console.WriteLine(ImageCount);

                ImgurAccount Account = await API.GetAccount("letuananh035");

                System.Console.WriteLine(Account.Id);
                System.Console.WriteLine(Account.Description);
                System.Console.WriteLine(Account.URL);
                List <ImgurImage> Images = await API.GetImages(Token);

                System.Console.WriteLine(Images[0].Link);

                ImgurImage urlImage = await API.UploadImage("https://assets-cdn.github.com/images/modules/logos_page/GitHub-Mark.png", "title", "description", Token);

                System.Console.Write(urlImage.Link);
                byte[]       buff = File.ReadAllBytes("vs-icon.png");
                MemoryStream ms   = new MemoryStream(buff);

                ImgurImage streamImage = await API.UploadImage(ms, "title", "description", Token);

                bool updated = await API.UpdateImage(streamImage.Id, "updated title", "a new description", Token);

                ImgurImage getImage = await API.GetImage(streamImage.Id);

                System.Console.Write(getImage.Link);
                //Album
                ImgurCreateAlbum createdAlbum = await API.CreateAlbum(new string[] { streamImage.Id }, "album title", "album description", ImgurAlbumPrivacy.Public, ImgurAlbumLayout.Horizontal, streamImage.Id, Token);

                bool result = await API.UpdateAlbum(createdAlbum.Id, new string[] { streamImage.Id, urlImage.Id }, "updated album title", "update album description", ImgurAlbumPrivacy.Hidden, ImgurAlbumLayout.Blog, urlImage.Id, Token);

                bool addImagesResult = await API.AddImagesToAlbum(createdAlbum.DeleteHash, new string[] { streamImage.Id, urlImage.Id }, Token);

                ImgurAlbum album = await API.GetAlbum(createdAlbum.Id);

                bool removeImagesResult = await API.RemoveImagesFromAlbum(createdAlbum.DeleteHash, new string[] { urlImage.Id }, Token);



                //Delete
                bool deleteAlbum = await API.DeleteAlbum(createdAlbum.Id, Token);

                bool deletedUrlImage = await API.DeleteImage(urlImage.Deletehash);

                bool deletedStreamImage = await API.DeleteImage(streamImage.Id, Token);
            }
            catch (Exception e)
            {
                System.Console.Write(e.Message);
            }
        }
Example #20
0
 public void AddImgurImage(ImgurImage imgurImage)
 {
     mImgurImageList.Add(imgurImage);
 }
Example #21
0
        public static IMGURDec GetImages(string contextURL)
        {
            IMGURDec _dec = new IMGURDec();

            _dec.ContextURL = contextURL;
            string[]          _ext  = Tools.GetFileExtension(contextURL);
            ImgurDotNet.Imgur _gurl = new Imgur();
            bool _isImage           = false;

            try { ImgurImage _img = _gurl.GetImage(_ext[0]); _isImage = true; }
            catch (Exception ex) { }
            if (!_ext[1].Equals("=(") || _isImage)
            {
                if (_isImage)
                {
                    //is image
                    ImgurImage _img = _gurl.GetImage(_ext[0]);
                    _dec.FullURLs = new string[] { _img.OriginalUrl.ToString() };
                    _dec.IsAlbum  = false;
                    _dec.Titles   = new string[] { _img.Title };
                    _dec.Descs    = new string[] { _img.Name };
                    if (!_ext[1].Equals("=("))
                    {
                        _dec.FileTypes = new string[] { _ext[1] };
                        _dec.FileNames = new string[] { _ext[0] + "." + _ext[1] };

                        if (!_ext[1].Equals("gif") && !_ext[1].Equals("gifv"))
                        {
                            string[] _mime = _img.Type.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
                            if (!_mime[_mime.Length - 1].Equals(_dec.FileTypes))
                            {
                                _dec.FileTypes = new string[] { _mime[_mime.Length - 1] };
                            }
                        }
                    }
                    else
                    {
                        string[] _ext0 = Tools.GetFileExtension(_img.OriginalUrl.ToString());
                        _dec.FileTypes = new string[] { _ext0[1] };
                        _dec.FileNames = new string[] { _ext0[0] + "." + _ext0[1] };
                    }
                }
                else
                {
                    _dec.FullURLs  = new string[] { contextURL };
                    _dec.IsAlbum   = false;
                    _dec.Titles    = new string[] { "NOTITLE" };
                    _dec.FileTypes = new string[] { _ext[1] };
                    _dec.FileNames = new string[] { _ext[0] + "." + _ext[1] };
                    _dec.Descs     = new string[] { "NODESC" };
                }
            }
            else
            {
                ImgurAlbum _alb       = _gurl.GetAlbum(_ext[0]);
                string[]   _fullURLS  = new string[_alb.Images.Count];
                string[]   _titles    = new string[_alb.Images.Count];
                string[]   _descs     = new string[_alb.Images.Count];
                string[]   _fileTypes = new string[_alb.Images.Count];
                string[]   _fileNames = new string[_alb.Images.Count];
                int        _count     = 0;
                foreach (ImgurImage _img in _alb.Images)
                {
                    string[] _ext2 = Tools.GetFileExtension(_img.OriginalUrl.ToString());
                    _fullURLS[_count]  = _img.OriginalUrl.ToString();
                    _titles[_count]    = _img.Title;
                    _descs[_count]     = _img.Caption;
                    _fileTypes[_count] = _ext2[1];
                    _fileNames[_count] = _ext2[0] + "." + _ext2[1];
                    if (!_ext[1].Equals("gif") && !_ext2[1].Equals("gifv"))
                    {
                        string[] _mime = _img.Type.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
                        if (!_mime[_mime.Length - 1].Equals(_fileTypes[_count]))
                        {
                            _fileTypes[_count] = _mime[_mime.Length - 1];
                        }
                    }
                    _count++;
                }
                _dec.IsAlbum   = true;
                _dec.FullURLs  = _fullURLS;
                _dec.Titles    = _titles;
                _dec.Descs     = _descs;
                _dec.FileTypes = _fileTypes;
                _dec.FileNames = _fileNames;
            }
            return(_dec);
        }
        /// <summary>
        /// Create a new album.
        /// </summary>
        /// <param name="imageList">The images that you want to be included in the album.</param>
        /// <param name="coverImage">The image you want to set as the cover.  If the coverImage isn't in the list you specified in the first parameter, this is ignored.</param>
        /// <param name="title"> The title of the album </param>
        /// <param name="description">The description of the album</param>
        /// <param name="albumPrivacy">Sets the privacy level of the album. Values are : public | hidden | secret. Defaults to user's privacy settings for logged in users.</param>
        /// <param name="albumLayout">Sets the layout to display the album. Values are : blog | grid | horizontal | vertical</param>
        public async Task <ImgurAlbum> AlbumCreationAsync(List <ImgurImage> imageList, ImgurImage coverImage, String title = "", String description = "", Privacy albumPrivacy = Privacy.ignore, Layout albumLayout = Layout.ignore)
        {
            List <string> imageIDList = new List <string>();

            foreach (ImgurImage i in imageList)
            {
                imageIDList.Add(i.ID);
            }

            return(await AlbumCreationAsync(imageIDList, coverImage.ID, title, description, albumPrivacy, albumLayout));
        }
        /// <summary>
        /// Update the information of an album. For anonymous albums, {album} should be the deletehash that is returned at creation.
        /// </summary>
        /// <param name="albumID">The album ID to update</param>
        /// <param name="imageList">The images that you want to be included in the album.</param>
        /// <param name="coverImage">The image you want to set as the cover.</param>
        /// <param name="title"> The title of the album </param>
        /// <param name="description">The description of the album</param>
        /// <param name="albumPrivacy">Sets the privacy level of the album. Values are : public | hidden | secret. Defaults to user's privacy settings for logged in users.</param>
        /// <param name="albumLayout">Sets the layout to display the album. Values are : blog | grid | horizontal | vertical</param>
        /// <returns></returns>
        public async Task <ImgurBasic> AlbumUpdateAsync(string albumID, List <ImgurImage> imageList, ImgurImage coverImage, String title = "", String description = "", Privacy albumPrivacy = Privacy.ignore, Layout albumLayout = Layout.ignore)
        {
            List <string> imageIDList = new List <string>();

            if (imageList != null)
            {
                foreach (ImgurImage i in imageList)
                {
                    imageIDList.Add(i.ID);
                }
            }
            return(await AlbumUpdateAsync(albumID, imageIDList, coverImage.ID, title, description, albumPrivacy, albumLayout));
        }