public IResult <EdgeOwnerToTimelineMedia> GetAllUserMedias(string username, int limitPerPage = 12) { EdgeOwnerToTimelineMedia EdgeOwnerToTimelineMedia = new EdgeOwnerToTimelineMedia(); EdgeOwnerToTimelineMedia.Edges = new List <EdgeOwnerToTimelineMediaEdges>(); var _userAllTimelineMedias = GetAllUserMediasInit(username, limitPerPage); var ImageMedias = _userAllTimelineMedias.Data.Edges.Where(c => c.Node.Typename == MediaType.Image).ToList(); var SidecarMedias = _userAllTimelineMedias.Data.Edges.Where(c => c.Node.Typename == MediaType.Sidecar).ToList(); var VideosMedias = _userAllTimelineMedias.Data.Edges.Where(c => c.Node.Typename == MediaType.Video).ToList(); foreach (var image in ImageMedias) { EdgeOwnerToTimelineMedia.Edges.Add(new EdgeOwnerToTimelineMediaEdges() { Node = image.Node }); } foreach (var sidecar in SidecarMedias) { var shortcode = sidecar.Node.Shortcode; var sidecarShortcodeData = GetShortcodeMedia(shortcode); EdgeOwnerToTimelineMedia.Edges.Add(new EdgeOwnerToTimelineMediaEdges() { Node = sidecarShortcodeData.Data }); } foreach (var video in VideosMedias) { var shortcode = video.Node.Shortcode; var videoShortcodeData = GetShortcodeMedia(shortcode); EdgeOwnerToTimelineMedia.Edges.Add(new EdgeOwnerToTimelineMediaEdges() { Node = videoShortcodeData.Data }); } return(Result.Success(EdgeOwnerToTimelineMedia)); }
private IResult <EdgeOwnerToTimelineMedia> GetAllUserMediasInit(string username, int limitPerPage) { try { EdgeOwnerToTimelineMedia _EdgeOwnerToTimelineMedia = new EdgeOwnerToTimelineMedia(); _EdgeOwnerToTimelineMedia.Edges = new List <EdgeOwnerToTimelineMediaEdges>(); var user = GetUser(username).Data; _EdgeOwnerToTimelineMedia.Edges = user.EdgeOwnerToTimelineMedia.Edges; var userId = user.Id; var endCursor = user.EdgeOwnerToTimelineMedia.PageInfo.EndCursor; var uri = string.Format(InstagramCustomApiConstants.USER_TIMELINE_URL, userId, limitPerPage, endCursor); var variables = string.Format("{0}:{{\"id\":\"{1}\",\"first\":{2},\"after\":\"{3}\"}}", _user.UserRhxGis, userId, limitPerPage, endCursor); var signature = ApplicationHelper.CreateMD5(variables); var request = HttpHelper.GetDefaultRequest(uri); request.Headers["X-Instagram-GIS"] = signature; request.Headers["Cookie"] = _user.UserCookie; var response = HttpHelper.GetDefaultResponse(request); var json = response.ReadAsString(); if (response.StatusCode != HttpStatusCode.OK) { return(Result.UnExpectedResponse <EdgeOwnerToTimelineMedia>(response, json)); } var objRetorno = JsonConvert.DeserializeObject <UserMedias>(json); var medias = objRetorno.Data.User.EdgeOwnerToTimelineMedia; string endCursorMedias = objRetorno.Data.User.EdgeOwnerToTimelineMedia.PageInfo.EndCursor; if (medias.PageInfo.HasNextPage) { bool has_next_page = true; do { var uriMedias = string.Format(InstagramCustomApiConstants.USER_TIMELINE_URL, userId, limitPerPage, endCursorMedias); var variablesMedias = string.Format("{0}:{{\"id\":\"{1}\",\"first\":{2},\"after\":\"{3}\"}}", _user.UserRhxGis, userId, limitPerPage, endCursorMedias); var signatureMedias = ApplicationHelper.CreateMD5(variablesMedias); var requestMedias = HttpHelper.GetDefaultRequest(uriMedias); requestMedias.Headers["X-Instagram-GIS"] = signatureMedias; requestMedias.Headers["Cookie"] = _user.UserCookie; var responseMedias = HttpHelper.GetDefaultResponse(requestMedias); var jsonMedias = responseMedias.ReadAsString(); if (responseMedias.StatusCode != HttpStatusCode.OK) { return(Result.UnExpectedResponse <EdgeOwnerToTimelineMedia>(responseMedias, jsonMedias)); } var objRetornoMedias = JsonConvert.DeserializeObject <UserMedias>(jsonMedias); objRetornoMedias.Data.User.EdgeOwnerToTimelineMedia.Edges.ForEach(c => medias.Edges.Add(c)); has_next_page = objRetornoMedias.Data.User.EdgeOwnerToTimelineMedia.PageInfo.HasNextPage; endCursorMedias = objRetornoMedias.Data.User.EdgeOwnerToTimelineMedia.PageInfo.EndCursor; } while (has_next_page); } medias.Edges.ForEach(c => _EdgeOwnerToTimelineMedia.Edges.Add(c)); return(Result.Success(_EdgeOwnerToTimelineMedia)); } catch (Exception ex) { return(Result.Fail <EdgeOwnerToTimelineMedia>(ex.Message)); } }