public async Task <JsonResult> OnGetAsync(string url = "") { var user = HttpContext.Session.Get <OAuthResponse>(Strings.SessionKey); if (user != null) { Media content; if (string.IsNullOrWhiteSpace(url)) { _logger.LogInformation("[{me}] is calling url[{url}]", nameof(OnGetAsync), url); content = await _api.GetMediaListAsync(user.AccessToken, user.User.Id).ConfigureAwait(false); } else { url = WebUtility.UrlDecode(url); _logger.LogInformation("[{me}] is calling url[{url}]", nameof(OnGetAsync), url); content = await _api.GetMediaListAsync(url).ConfigureAwait(false); } return(new JsonResult(content)); } else { return(new JsonResult(new { error = $"{Strings.SessionKey} is NULL from HttpContext.Session" })); } }
public async Task <IActionResult> OnGetAsync() { _logger.LogInformation("MediaList/Index called"); var response = HttpContext.Session.Get <OAuthResponse>(Strings.SessionKey); if (response == null) { return(RedirectToLoginPage()); } var media = await _api.GetMediaListAsync(response).ConfigureAwait(false); _logger.LogInformation("Initial media response returned with [{count}] records ", media.Data.Count); Media.Add(media); while (!string.IsNullOrWhiteSpace(media?.Paging?.Next)) { var next = media?.Paging?.Next; var count = media?.Data?.Count; _logger.LogInformation("Getting next page [{next}]", next); media = await _api.GetMediaListAsync(next).ConfigureAwait(false); _logger.LogInformation("next media response returned with [{count}] records ", count); Media.Add(media); } return(Page()); }
public async Task GetMediaListAsync_Returns_MediaList() { // Arrange var credentials = MockInstagramCredentials(); var options = Options.Create(credentials); var logger = Mock.Of <ILogger <InstagramApi> >(); var mockFactory = MockHttpClientFactory_For_GetMediaList(); var instagramHttpClient = new InstagramHttpClient(options, mockFactory.Object, logger); var oAuthResponse = new OAuthResponse { AccessToken = "123", User = new UserInfo { Id = "123", Username = "******" } }; // Act var api = new InstagramApi(options, logger, instagramHttpClient); var response = await api.GetMediaListAsync(oAuthResponse).ConfigureAwait(false); // Assert Assert.NotNull(api); Assert.NotNull(response); Assert.NotNull(response.Paging); Assert.NotNull(response.Data); Assert.Equal("Carousel", response.Data[0].Caption); Assert.Equal("CAROUSEL_ALBUM", response.Data[0].MediaType); Assert.Equal("18081199675165936", response.Data[0].Id); Assert.Equal("producer_journey", response.Data[0].Username); Assert.Equal(25, response.Data.Count); // unless you page through its 25 items per request }
public async Task <IActionResult> OnGetAsync(string code, string state) { _logger.LogInformation("Auth/OAuth for state [{state}] returned the code [{code}]", state, code); try { var response = HttpContext.Session.Get <OAuthResponse>(Strings.SessionKey) ?? await _api.AuthenticateAsync(code, state).ConfigureAwait(false); if (response == null) { Message = "OAutResponse is null. Redirecting to login page"; return(RedirectToLoginPage()); } var media = await _api.GetMediaListAsync(response).ConfigureAwait(false); _logger.LogInformation("Initial media response returned with [{count}] records ", media.Data.Count); Media.Add(media); // // TODO: toggle the following boolean for a quick and dirty way of getting all a user's media. // if (true) { while (!string.IsNullOrWhiteSpace(media?.Paging?.Next)) { var next = media?.Paging?.Next; var count = media?.Data?.Count; _logger.LogInformation("Getting next page [{next}]", next); media = await _api.GetMediaListAsync(next).ConfigureAwait(false); _logger.LogInformation("next media response returned with [{count}] records ", count); Media.Add(media); } } Code = code; State = state; UserInfo = response.User; HttpContext.Session.Set(Strings.SessionKey, response); Message = $"{UserInfo.Username} has connected to Instagram successfully."; } catch (InstagramOAuthException ex) { Message = $"InstagramOAuthException! {ex.Message} "; _logger.LogError(ex, "Instagram OAuth error - instagram response message : [{message}] error_type : [{type}] error_code : [{code}] fb_trace [{fbTrace}]", ex.Message, ex.ErrorType, ex.ErrorCode, ex.FbTraceId); } catch (InstagramApiException ex) { Message = $"InstagramApiException! {ex.Message} "; _logger.LogError(ex, "Instagram API error - instagram response message : [{message}] error_type : [{type}] error_code : [{code}] error_sub_code : [{subCode}] fb_trace [{fbTrace}]", ex.Message, ex, ex.StackTrace, ex.Message, ex.ErrorType, ex.ErrorCode, ex.ErrorSubcode, ex.FbTraceId); } catch (InstagramException ex) { Message = $"InstagramException! {ex.Message} "; _logger.LogError(ex, "General Instagram error - instagram response message : [{message}] error_type : [{type}] error_code : [{code}] fb_trace [{fbTrace}]", ex.Message, ex, ex.StackTrace, ex.Message, ex.ErrorType, ex.ErrorCode, ex.FbTraceId); } catch (Exception ex) { Message = $"Exception! {ex.Message} "; _logger.LogError(ex, "Unknown exception calling with message [{message}] and exception [{ex}] and stack [{stack}]", ex.Message, ex, ex.StackTrace); } return(Page()); }