/// <summary> /// See <see cref="ISource{T}.GetContent(string)"/> /// /// Respects the ratelimits imposed on Imgur requests. /// </summary> /// <param name="albumId">The id of the album to get</param> public async Task <ImgurAlbum> GetContent(string albumId) { if (!_ratelimiter.LimitsHaveBeenLoaded()) { await _ratelimiter.AttemptToLoadLimits(); } if (_ratelimiter.IsRequestAllowed()) { var result = await _client.GetAsync($"https://api.imgur.com/3/album/{albumId}"); _ratelimiter.UpdateLimit(result.Headers.ToList()); if (result.IsSuccessStatusCode) { var val = await result.Content.ReadAsStringAsync(); var album = JsonConvert.DeserializeObject <ApiHelper <ImgurAlbum> >(val); await album.Data.RemoveNonsupportedImages(); return(album.Data); } } return(new ImgurAlbum()); }
/// <summary> /// See <see cref="ISource{T}.GetContent(string)"/> /// /// Respects the ratelimits imposed on Imgur requests. /// </summary> /// <param name="imageId">The id of the image to get</param> public async Task <ImgurImage> GetContent(string imageId) { if (!_ratelimiter.LimitsHaveBeenLoaded()) { await _ratelimiter.AttemptToLoadLimits(); } if (_ratelimiter.IsRequestAllowed()) { var result = await _client.GetAsync($"https://api.imgur.com/3/image/{imageId}"); _ratelimiter.UpdateLimit(result.Headers.ToList()); if (result.IsSuccessStatusCode) { var val = await result.Content.ReadAsStringAsync(); var image = JsonConvert.DeserializeObject <ApiHelper <ImgurImage> >(val); var ext = await image.Data.GetImageType(); if (Settings.GetSupportedExtensions().Contains(ext.ToLower())) { return(image.Data); } } } return(null); }
/// <summary> /// See <see cref="ISource{T}.GetContent(string)"/> /// /// Respects the ratelimits imposed on Imgur requests. /// </summary> /// <param name="username">The users username</param> public async Task <GenericAlbum> GetContent(string username) { if (!_ratelimiter.LimitsHaveBeenLoaded()) { await _ratelimiter.AttemptToLoadLimits(); } var images = new List <IApiImage>(); if (_ratelimiter.IsRequestAllowed()) { var imageNumberResult = await _client.GetAsync($"https://api.imgur.com/3/account/{username}/images/count"); _ratelimiter.UpdateLimit(imageNumberResult.Headers.ToList()); if (!imageNumberResult.IsSuccessStatusCode) { return(new GenericAlbum { Images = images }); } //The number of images that the user has. var numVal = await imageNumberResult.Content.ReadAsStringAsync(); var numImages = JsonConvert.DeserializeObject <ApiHelper <int> >(numVal).Data; //Each page contains 50 images, so page through them if we need to. for (var page = 0; page < Math.Ceiling(numImages / 50.0); page++) { if (_ratelimiter.IsRequestAllowed()) { var result = await _client.GetAsync($"https://api.imgur.com/3/account/{username}/images/{page}"); _ratelimiter.UpdateLimit(result.Headers.ToList()); if (result.IsSuccessStatusCode) { var val = await result.Content.ReadAsStringAsync(); var valParsed = JsonConvert.DeserializeObject <ApiHelper <ICollection <ImgurImage> > >(val); foreach (var image in valParsed.Data) { var ext = await image.GetImageType(); if (Settings.GetSupportedExtensions().Contains(ext.ToLower())) { images.Add(image); } } } } else { break; } } } return(new GenericAlbum { Images = images }); }