Exemple #1
0
        public InstaCommentShort Convert()
        {
            if (SourceObject == null)
            {
                return(null);
            }

            var shortComment = new InstaCommentShort
            {
                CommentLikeCount = SourceObject.CommentLikeCount,
                ContentType      =
                    (InstaContentType)Enum.Parse(typeof(InstaContentType), SourceObject.ContentType, true),
                CreatedAt       = InstaDateTimeHelper.UnixTimestampToDateTime(SourceObject.CreatedAt),
                CreatedAtUtc    = InstaDateTimeHelper.UnixTimestampToDateTime(SourceObject.CreatedAtUtc),
                Pk              = SourceObject.Pk,
                Status          = SourceObject.Status,
                Text            = SourceObject.Text,
                Type            = SourceObject.Type,
                User            = InstaConvertersFabric.Instance.GetUserShortConverter(SourceObject.User).Convert(),
                HasLikedComment = SourceObject.HasLikedComment,
                MediaId         = SourceObject.MediaId,
                ParentCommentId = SourceObject.ParentCommentId
            };

            return(shortComment);
        }
Exemple #2
0
        public InstaRecentActivityFeed Convert()
        {
            var activityStory = new InstaRecentActivityFeed
            {
                Pk           = SourceObject.Pk,
                Type         = SourceObject.Type,
                ProfileId    = SourceObject.Args.ProfileId,
                ProfileImage = SourceObject.Args.ProfileImage,
                Text         = SourceObject.Args.Text,
                RichText     = SourceObject.Args.RichText,
                TimeStamp    = InstaDateTimeHelper.UnixTimestampToDateTime(
                    (long)System.Convert.ToDouble(SourceObject.Args.TimeStamp,
                                                  new NumberFormatInfo {
                    NumberDecimalSeparator = "."
                }))
            };

            if (SourceObject.Args.Links != null)
            {
                foreach (var instaLinkResponse in SourceObject.Args.Links)
                {
                    activityStory.Links.Add(
                        new InstaLink
                    {
                        Start = instaLinkResponse.Start,
                        End   = instaLinkResponse.End,
                        Id    = instaLinkResponse.Id,
                        Type  = instaLinkResponse.Type
                    });
                }
            }

            if (SourceObject.Args.InlineFollow != null)
            {
                activityStory.InlineFollow = new InstaInlineFollow
                {
                    IsFollowing       = SourceObject.Args.InlineFollow.IsFollowing,
                    IsOutgoingRequest = SourceObject.Args.InlineFollow.IsOutgoingRequest
                };
                if (SourceObject.Args.InlineFollow.UserInfo != null)
                {
                    activityStory.InlineFollow.User =
                        InstaConvertersFabric.Instance.GetUserShortConverter(SourceObject.Args.InlineFollow.UserInfo)
                        .Convert();
                }
            }

            if (SourceObject.Args.Media != null)
            {
                foreach (var media in SourceObject.Args.Media)
                {
                    activityStory.Medias.Add(
                        new InstaActivityMedia {
                        Id = media.Id, Image = media.Image
                    });
                }
            }

            return(activityStory);
        }
        /// <summary>
        ///     Searches for specific location by provided geo-data or search query.
        /// </summary>
        /// <param name="latitude">Latitude</param>
        /// <param name="longitude">Longitude</param>
        /// <param name="query">Search query</param>
        /// <returns>
        ///     List of locations (short format)
        /// </returns>
        public async Task <IResult <LocationShortList> > SearchLocationAsync(double latitude, double longitude, string query)
        {
            logger.LogDebug("SearchLocationAsync {0} {1} {2}", latitude, longitude, query);
            InstaUserAuthValidator.Validate(userAuthValidate);
            try
            {
                var uri = InstaUriCreator.GetLocationSearchUri();

                var fields = new Dictionary <string, string>
                {
                    { "_uuid", deviceInfo.DeviceGuid.ToString() },
                    { "_uid", user.LoggedInUser.Pk.ToString() },
                    { "_csrftoken", user.CsrfToken },
                    { "latitude", latitude.ToString(CultureInfo.InvariantCulture) },
                    { "longitude", longitude.ToString(CultureInfo.InvariantCulture) },
                    { "rank_token", user.RankToken }
                };

                if (!string.IsNullOrEmpty(query))
                {
                    fields.Add("search_query", query);
                }
                else
                {
                    fields.Add("timestamp", InstaDateTimeHelper.GetUnixTimestampSeconds().ToString());
                }

                if (!Uri.TryCreate(uri, fields.AsQueryString(), out var newuri))
                {
                    return(Result.Fail <LocationShortList>("Unable to create uri for location search"));
                }

                var request  = httpHelper.GetDefaultRequest(HttpMethod.Get, newuri, deviceInfo);
                var response = await httpRequestProcessor.SendAsync(request).ConfigureAwait(false);

                var json = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

                if (response.StatusCode != HttpStatusCode.OK)
                {
                    return(Result.UnExpectedResponse <LocationShortList>(response, json));
                }

                var locations = JsonConvert.DeserializeObject <LocationSearchResponse>(json);
                var converter = InstaConvertersFabric.Instance.GetLocationsSearchConverter(locations);
                return(Result.Success(converter.Convert()));
            }
            catch (HttpRequestException httpException)
            {
                logger?.LogError(httpException, "Error");
                return(Result.Fail(httpException, default(LocationShortList), ResponseType.NetworkProblem));
            }
            catch (Exception exception)
            {
                logger?.LogError(exception, "Error");
                return(Result.Fail <LocationShortList>(exception));
            }
        }
        public InstaComment Convert()
        {
            var comment = new InstaComment
            {
                BitFlags    = SourceObject.BitFlags,
                ContentType =
                    (InstaContentType)Enum.Parse(typeof(InstaContentType), SourceObject.ContentType, true),
                CreatedAt                = InstaDateTimeHelper.UnixTimestampToDateTime(SourceObject.CreatedAt),
                CreatedAtUtc             = InstaDateTimeHelper.UnixTimestampToDateTime(SourceObject.CreatedAtUtc),
                LikesCount               = SourceObject.LikesCount,
                Pk                       = SourceObject.Pk,
                Status                   = SourceObject.Status,
                Text                     = SourceObject.Text,
                Type                     = SourceObject.Type,
                UserId                   = SourceObject.UserId,
                User                     = InstaConvertersFabric.Instance.GetUserShortConverter(SourceObject.User).Convert(),
                DidReportAsSpam          = SourceObject.DidReportAsSpam,
                ChildCommentCount        = SourceObject.ChildCommentCount,
                HasLikedComment          = SourceObject.HasLikedComment,
                HasMoreHeadChildComments = SourceObject.HasMoreHeadChildComments,
                HasMoreTailChildComments = SourceObject.HasMoreTailChildComments
            };

            if (SourceObject.OtherPreviewUsers != null && SourceObject.OtherPreviewUsers.Any())
            {
                if (comment.OtherPreviewUsers == null)
                {
                    comment.OtherPreviewUsers = new List <UserShortDescription>();
                }

                foreach (var user in SourceObject.OtherPreviewUsers)
                {
                    comment.OtherPreviewUsers.Add(InstaConvertersFabric.Instance.GetUserShortConverter(user).Convert());
                }
            }

            if (SourceObject.PreviewChildComments != null && SourceObject.PreviewChildComments.Any())
            {
                if (comment.PreviewChildComments == null)
                {
                    comment.PreviewChildComments = new List <InstaCommentShort>();
                }

                foreach (var cm in SourceObject.PreviewChildComments)
                {
                    comment.PreviewChildComments.Add(InstaConvertersFabric.Instance.GetCommentShortConverter(cm).Convert());
                }
            }

            return(comment);
        }
Exemple #5
0
        public InstaAccountDetails Convert()
        {
            if (SourceObject == null)
            {
                throw new ArgumentNullException("Source object");
            }

            var details = new InstaAccountDetails
            {
                DateJoined = InstaDateTimeHelper.FromUnixTimeSeconds(SourceObject.DateJoined ?? 0)
            };

            if (SourceObject.FormerUsernameInfo != null)
            {
                details.HasFormerUsernames = SourceObject.FormerUsernameInfo.HasFormerUsernames ?? false;
            }

            if (SourceObject.SharedFollowerAccountsInfo != null)
            {
                details.HasSharedFollowerAccounts =
                    SourceObject.SharedFollowerAccountsInfo.HasSharedFollowerAccounts ?? false;
            }

            if (SourceObject.AdsInfo != null)
            {
                try
                {
                    details.AdsInfo = InstaConvertersFabric.Instance.GetAdsInfoConverter(SourceObject.AdsInfo).Convert();
                }
                catch
                {
                }
            }

            if (SourceObject.PrimaryCountryInfo != null)
            {
                try
                {
                    details.PrimaryCountryInfo = InstaConvertersFabric.Instance
                                                 .GetPrimaryCountryInfoConverter(SourceObject.PrimaryCountryInfo)
                                                 .Convert();
                }
                catch
                {
                }
            }

            return(details);
        }
Exemple #6
0
        public Caption Convert()
        {
            var caption = new Caption
            {
                Pk           = SourceObject.Pk,
                CreatedAt    = InstaDateTimeHelper.UnixTimestampToDateTime(SourceObject.CreatedAtUnixLike),
                CreatedAtUtc = InstaDateTimeHelper.UnixTimestampToDateTime(SourceObject.CreatedAtUtcUnixLike),
                MediaId      = SourceObject.MediaId,
                Text         = SourceObject.Text,
                User         = InstaConvertersFabric.Instance.GetUserShortConverter(SourceObject.User).Convert(),
                UserId       = SourceObject.UserId
            };

            return(caption);
        }
Exemple #7
0
        public InstaDiscoverSearches Convert()
        {
            if (SourceObject == null)
            {
                throw new ArgumentNullException("Source object");
            }

            var searches = new InstaDiscoverSearches
            {
                ClientTime = InstaDateTimeHelper.FromUnixTimeSeconds(SourceObject.ClientTime ?? 0),
                Position   = SourceObject.Position,
                User       = InstaConvertersFabric.Instance.GetUserConverter(SourceObject.User).Convert()
            };

            return(searches);
        }
        public InstaReelFeed Convert()
        {
            if (SourceObject == null)
            {
                throw new ArgumentNullException("Source object");
            }

            var reelFeed = new InstaReelFeed
            {
                CanReply        = SourceObject.CanReply,
                ExpiringAt      = InstaDateTimeHelper.UnixTimestampToDateTime(SourceObject?.ExpiringAt ?? 0),
                HasBestiesMedia = SourceObject.HasBestiesMedia,
                Id = SourceObject.Id,
                LatestReelMedia = SourceObject.LatestReelMedia ?? 0,
                PrefetchCount   = SourceObject.PrefetchCount,
                Seen            = SourceObject.Seen ?? 0,
                User            = InstaConvertersFabric.Instance.GetUserShortFriendshipFullConverter(SourceObject.User).Convert()
            };

            try
            {
                if (!string.IsNullOrEmpty(SourceObject.CanReshare))
                {
                    reelFeed.CanReshare = bool.Parse(SourceObject.CanReshare);
                }
            }
            catch
            {
            }

            if (SourceObject.Items != null && SourceObject.Items.Any())
            {
                foreach (var item in SourceObject.Items)
                {
                    try
                    {
                        reelFeed.Items.Add(InstaConvertersFabric.Instance.GetStoryItemConverter(item).Convert());
                    }
                    catch
                    {
                    }
                }
            }

            return(reelFeed);
        }
Exemple #9
0
        public InstaDirectInboxItem Convert()
        {
            var threadItem = new InstaDirectInboxItem
            {
                ClientContext = SourceObject.ClientContext, ItemId = SourceObject.ItemId
            };

            threadItem.TimeStamp = InstaDateTimeHelper.UnixTimestampMilisecondsToDateTime(SourceObject.TimeStamp);
            threadItem.UserId    = SourceObject.UserId;

            var truncatedItemType = SourceObject.ItemType.Trim().Replace("_", "");

            if (Enum.TryParse(truncatedItemType, true, out InstaDirectThreadItemType type))
            {
                threadItem.ItemType = type;
            }

            if (threadItem.ItemType == InstaDirectThreadItemType.Link && SourceObject.Link != null)
            {
                threadItem.Text = SourceObject.Link.Text;
                try
                {
                    threadItem.LinkMedia = new InstaWebLink {
                        Text = SourceObject.Link.Text
                    };
                    if (SourceObject.Link.LinkContext != null)
                    {
                        threadItem.LinkMedia.LinkContext = new InstaWebLinkContext();

                        if (!string.IsNullOrEmpty(SourceObject.Link.LinkContext.LinkImageUrl))
                        {
                            threadItem.LinkMedia.LinkContext.LinkImageUrl = SourceObject.Link.LinkContext.LinkImageUrl;
                        }

                        if (!string.IsNullOrEmpty(SourceObject.Link.LinkContext.LinkSummary))
                        {
                            threadItem.LinkMedia.LinkContext.LinkSummary = SourceObject.Link.LinkContext.LinkSummary;
                        }

                        if (!string.IsNullOrEmpty(SourceObject.Link.LinkContext.LinkTitle))
                        {
                            threadItem.LinkMedia.LinkContext.LinkTitle = SourceObject.Link.LinkContext.LinkTitle;
                        }

                        if (!string.IsNullOrEmpty(SourceObject.Link.LinkContext.LinkUrl))
                        {
                            threadItem.LinkMedia.LinkContext.LinkUrl = SourceObject.Link.LinkContext.LinkUrl;
                        }
                    }
                }
                catch
                {
                }
            }
            else if (threadItem.ItemType == InstaDirectThreadItemType.Like)
            {
                threadItem.Text = SourceObject.Like;
            }
            else if (threadItem.ItemType == InstaDirectThreadItemType.Media && SourceObject.Media != null)
            {
                var converter = InstaConvertersFabric.Instance.GetInboxMediaConverter(SourceObject.Media);
                threadItem.Media = converter.Convert();
            }
            else if (threadItem.ItemType == InstaDirectThreadItemType.MediaShare && SourceObject.MediaShare != null)
            {
                var converter = InstaConvertersFabric.Instance.GetSingleMediaConverter(SourceObject.MediaShare);
                threadItem.MediaShare = converter.Convert();
            }
            else if (threadItem.ItemType == InstaDirectThreadItemType.StoryShare && SourceObject.StoryShare != null)
            {
                threadItem.StoryShare = new InstaStoryShare
                {
                    IsReelPersisted = SourceObject.StoryShare.IsReelPersisted,
                    ReelType        = SourceObject.StoryShare.ReelType,
                    Text            = SourceObject.StoryShare.Text,
                    IsLinked        = SourceObject.StoryShare.IsLinked,
                    Message         = SourceObject.StoryShare.Message,
                    Title           = SourceObject.StoryShare.Title
                };
                if (SourceObject.StoryShare.Media != null)
                {
                    var converter = InstaConvertersFabric.Instance.GetSingleMediaConverter(SourceObject.StoryShare.Media);
                    threadItem.StoryShare.Media = converter.Convert();
                }
            }
            else if (threadItem.ItemType == InstaDirectThreadItemType.Text)
            {
                threadItem.Text = SourceObject.Text;
            }
            else if (threadItem.ItemType == InstaDirectThreadItemType.RavenMedia &&
                     SourceObject.RavenMedia != null)
            {
                var converter = InstaConvertersFabric.Instance.GetVisualMediaConverter(SourceObject.RavenMedia);
                threadItem.RavenMedia       = converter.Convert();
                threadItem.RavenSeenUserIds = SourceObject.RavenSeenUserIds;
                if (!string.IsNullOrEmpty(SourceObject.RavenViewMode))
                {
                    threadItem.RavenViewMode =
                        (InstaViewMode)Enum.Parse(typeof(InstaViewMode), SourceObject.RavenViewMode, true);
                }

                threadItem.RavenReplayChainCount = SourceObject.RavenReplayChainCount ?? 0;
                threadItem.RavenSeenCount        = SourceObject.RavenSeenCount;
                if (SourceObject.RavenExpiringMediaActionSummary != null)
                {
                    var ravenType = SourceObject.RavenExpiringMediaActionSummary.Type.ToLower() == "raven_delivered"
                        ? InstaRavenType.Delivered
                        : InstaRavenType.Opened;
                    threadItem.RavenExpiringMediaActionSummary = new InstaRavenMediaActionSummary
                    {
                        Count = SourceObject.RavenExpiringMediaActionSummary.Count, Type = ravenType
                    };
                    if (!string.IsNullOrEmpty(SourceObject.RavenExpiringMediaActionSummary.TimeStamp))
                    {
                        threadItem.RavenExpiringMediaActionSummary.ExpireTime =
                            InstaDateTimeHelper.UnixTimestampMilisecondsToDateTime(
                                SourceObject.RavenExpiringMediaActionSummary.TimeStamp);
                    }
                }
            }

            // VisualMedia is updated RavenMedia for v61 and newer
            else if (threadItem.ItemType == InstaDirectThreadItemType.RavenMedia &&
                     SourceObject.VisualMedia != null)
            {
                threadItem.VisualMedia = InstaConvertersFabric.Instance
                                         .GetVisualMediaContainerConverter(SourceObject.VisualMedia)
                                         .Convert();
            }
            else if (threadItem.ItemType == InstaDirectThreadItemType.ActionLog && SourceObject.ActionLogMedia != null)
            {
                threadItem.ActionLog = new InstaActionLog {
                    Description = SourceObject.ActionLogMedia.Description
                };
            }
            else if (threadItem.ItemType == InstaDirectThreadItemType.Profile && SourceObject.ProfileMedia != null)
            {
                var converter = InstaConvertersFabric.Instance.GetUserShortConverter(SourceObject.ProfileMedia);
                threadItem.ProfileMedia = converter.Convert();
                if (SourceObject.ProfileMediasPreview != null && SourceObject.ProfileMediasPreview.Any())
                {
                    try
                    {
                        var previewMedias = new List <InstaMedia>();
                        foreach (var item in SourceObject.ProfileMediasPreview)
                        {
                            previewMedias.Add(InstaConvertersFabric.Instance.GetSingleMediaConverter(item).Convert());
                        }

                        threadItem.ProfileMediasPreview = previewMedias;
                    }
                    catch
                    {
                    }
                }
            }
            else if (threadItem.ItemType == InstaDirectThreadItemType.Placeholder && SourceObject.Placeholder != null)
            {
                threadItem.Placeholder = new InstaPlaceholder
                {
                    IsLinked = SourceObject.Placeholder.IsLinked, Message = SourceObject.Placeholder.Message
                };
            }
            else if (threadItem.ItemType == InstaDirectThreadItemType.Location && SourceObject.LocationMedia != null)
            {
                try
                {
                    threadItem.LocationMedia = new Classes.Models.Location.Location();
                    if (!string.IsNullOrEmpty(SourceObject.LocationMedia.Address))
                    {
                        threadItem.LocationMedia.Address = SourceObject.LocationMedia.Address;
                    }

                    if (!string.IsNullOrEmpty(SourceObject.LocationMedia.City))
                    {
                        threadItem.LocationMedia.City = SourceObject.LocationMedia.City;
                    }

                    if (!string.IsNullOrEmpty(SourceObject.LocationMedia.ExternalId))
                    {
                        threadItem.LocationMedia.ExternalId = SourceObject.LocationMedia.ExternalId;
                    }

                    if (!string.IsNullOrEmpty(SourceObject.LocationMedia.ExternalIdSource))
                    {
                        threadItem.LocationMedia.ExternalSource = SourceObject.LocationMedia.ExternalIdSource;
                    }

                    if (!string.IsNullOrEmpty(SourceObject.LocationMedia.ShortName))
                    {
                        threadItem.LocationMedia.ShortName = SourceObject.LocationMedia.ShortName;
                    }

                    if (!string.IsNullOrEmpty(SourceObject.LocationMedia.Name))
                    {
                        threadItem.LocationMedia.Name = SourceObject.LocationMedia.Name;
                    }

                    threadItem.LocationMedia.FacebookPlacesId = SourceObject.LocationMedia.FacebookPlacesId;
                    threadItem.LocationMedia.Lat = SourceObject.LocationMedia.Lat;
                    threadItem.LocationMedia.Lng = SourceObject.LocationMedia.Lng;
                }
                catch
                {
                }
            }
            else if (threadItem.ItemType == InstaDirectThreadItemType.FelixShare &&
                     SourceObject.FelixShareMedia != null &&
                     SourceObject.FelixShareMedia.Video != null)
            {
                try
                {
                    threadItem.FelixShareMedia = InstaConvertersFabric.Instance
                                                 .GetSingleMediaConverter(SourceObject.FelixShareMedia.Video)
                                                 .Convert();
                }
                catch
                {
                }
            }
            else if (threadItem.ItemType == InstaDirectThreadItemType.ReelShare && SourceObject.ReelShareMedia != null)
            {
                try
                {
                    threadItem.ReelShareMedia = InstaConvertersFabric.Instance
                                                .GetReelShareConverter(SourceObject.ReelShareMedia)
                                                .Convert();
                }
                catch
                {
                }
            }
            else if (threadItem.ItemType == InstaDirectThreadItemType.VoiceMedia && SourceObject.VoiceMedia != null)
            {
                try
                {
                    threadItem.VoiceMedia = InstaConvertersFabric.Instance.GetVoiceMediaConverter(SourceObject.VoiceMedia)
                                            .Convert();
                }
                catch
                {
                }
            }
            else if (threadItem.ItemType == InstaDirectThreadItemType.AnimatedMedia &&
                     SourceObject.AnimatedMedia != null)
            {
                try
                {
                    threadItem.AnimatedMedia = InstaConvertersFabric.Instance
                                               .GetAnimatedImageConverter(SourceObject.AnimatedMedia)
                                               .Convert();
                }
                catch
                {
                }
            }
            else if (threadItem.ItemType == InstaDirectThreadItemType.Hashtag && SourceObject.HashtagMedia != null)
            {
                try
                {
                    threadItem.HashtagMedia = InstaConvertersFabric.Instance
                                              .GetDirectHashtagConverter(SourceObject.HashtagMedia)
                                              .Convert();
                }
                catch
                {
                }
            }
            else if (threadItem.ItemType == InstaDirectThreadItemType.LiveViewerInvite &&
                     SourceObject.LiveViewerInvite != null)
            {
                try
                {
                    threadItem.LiveViewerInvite = InstaConvertersFabric.Instance
                                                  .GetDirectBroadcastConverter(SourceObject.LiveViewerInvite)
                                                  .Convert();
                }
                catch
                {
                }
            }

            return(threadItem);
        }
Exemple #10
0
        public InstaMedia Convert()
        {
            if (SourceObject == null)
            {
                throw new ArgumentNullException("Source object");
            }

            var media = new InstaMedia
            {
                Identifier      = SourceObject.Media.Identifier,
                Code            = SourceObject.Media.Code,
                Pk              = SourceObject.Media.Pk,
                ClientCacheKey  = SourceObject.Media.ClientCacheKey,
                CommentsCount   = SourceObject.Media.CommentsCount,
                DeviceTimeStamp =
                    InstaDateTimeHelper.UnixTimestampToDateTime(SourceObject.Media.DeviceTimeStampUnixLike),
                HasLiked           = SourceObject.Media.HasLiked,
                PhotoOfYou         = SourceObject.Media.PhotoOfYou,
                TrackingToken      = SourceObject.Media.TrackingToken,
                TakenAt            = InstaDateTimeHelper.UnixTimestampToDateTime(SourceObject.Media.TakenAtUnixLike),
                Height             = SourceObject.Media.Height,
                LikesCount         = SourceObject.Media.LikesCount,
                MediaType          = SourceObject.Media.MediaType,
                FilterType         = SourceObject.Media.FilterType,
                Width              = SourceObject.Media.Width,
                HasAudio           = SourceObject.Media.HasAudio,
                ViewCount          = int.Parse(SourceObject.Media.ViewCount.ToString(CultureInfo.InvariantCulture)),
                IsCommentsDisabled = SourceObject.Media.IsCommentsDisabled
            };

            if (SourceObject.Media.CarouselMedia != null)
            {
                media.Carousel = InstaConvertersFabric.Instance.GetCarouselConverter(SourceObject.Media.CarouselMedia)
                                 .Convert();
            }

            if (SourceObject.Media.User != null)
            {
                media.User = InstaConvertersFabric.Instance.GetUserConverter(SourceObject.Media.User).Convert();
            }

            if (SourceObject.Media.Caption != null)
            {
                media.Caption = InstaConvertersFabric.Instance.GetCaptionConverter(SourceObject.Media.Caption).Convert();
            }

            if (SourceObject.Media.NextMaxId != null)
            {
                media.NextMaxId = SourceObject.Media.NextMaxId;
            }

            if (SourceObject.Media.Likers != null && SourceObject.Media.Likers?.Count > 0)
            {
                foreach (var liker in SourceObject.Media.Likers)
                {
                    media.Likers.Add(InstaConvertersFabric.Instance.GetUserShortConverter(liker).Convert());
                }
            }

            if (SourceObject.Media.UserTagList?.In != null && SourceObject.Media.UserTagList?.In?.Count > 0)
            {
                foreach (var tag in SourceObject.Media.UserTagList.In)
                {
                    media.UserTags.Add(InstaConvertersFabric.Instance.GetUserTagConverter(tag).Convert());
                }
            }

            if (SourceObject.Media.PreviewComments != null)
            {
                foreach (var comment in SourceObject.Media.PreviewComments)
                {
                    media.PreviewComments.Add(InstaConvertersFabric.Instance.GetCommentConverter(comment).Convert());
                }
            }

            if (SourceObject.Media.Location != null)
            {
                media.Location = InstaConvertersFabric.Instance.GetLocationConverter(SourceObject.Media.Location).Convert();
            }

            if (SourceObject.Media.Images?.Candidates == null)
            {
                return(media);
            }

            foreach (var image in SourceObject.Media.Images.Candidates)
            {
                media.Images.Add(new InstaImage(image.Url, int.Parse(image.Width), int.Parse(image.Height)));
            }

            if (SourceObject.Media.Videos == null)
            {
                return(media);
            }

            foreach (var video in SourceObject.Media.Videos)
            {
                media.Videos.Add(
                    new InstaVideo(
                        video.Url,
                        int.Parse(video.Width),
                        int.Parse(video.Height),
                        video.Type));
            }

            return(media);
        }
        public InstaStoryItem Convert()
        {
            if (SourceObject == null)
            {
                throw new ArgumentNullException("Source object");
            }

            var instaStory = new InstaStoryItem
            {
                CanViewerSave   = SourceObject.CanViewerSave,
                CaptionIsEdited = SourceObject.CaptionIsEdited,
                CaptionPosition = SourceObject.CaptionPosition,
                Code            = SourceObject.Code,
                CommentCount    = SourceObject.CommentCount,
                ExpiringAt      = InstaDateTimeHelper.UnixTimestampToDateTime(SourceObject.ExpiringAt),
                FilterType      = SourceObject.FilterType,
                HasAudio        = SourceObject.HasAudio ?? false,
                HasLiked        = SourceObject.HasLiked,
                HasMoreComments = SourceObject.HasMoreComments,
                Id          = SourceObject.Id,
                IsReelMedia = SourceObject.IsReelMedia,
                LikeCount   = SourceObject.LikeCount,
                MaxNumVisiblePreviewComments = SourceObject.MaxNumVisiblePreviewComments,
                MediaType               = SourceObject.MediaType,
                OriginalHeight          = SourceObject.OriginalHeight,
                OriginalWidth           = SourceObject.OriginalWidth,
                PhotoOfYou              = SourceObject.PhotoOfYou,
                Pk                      = SourceObject.Pk,
                TakenAt                 = InstaDateTimeHelper.UnixTimestampToDateTime(SourceObject.TakenAt),
                ImportedTakenAt         = InstaDateTimeHelper.UnixTimestampToDateTime(SourceObject.ImportedTakenAt ?? 0),
                VideoDuration           = SourceObject.VideoDuration ?? 0,
                AdAction                = SourceObject.AdAction,
                SupportsReelReactions   = SourceObject.SupportsReelReactions,
                ShowOneTapTooltip       = SourceObject.ShowOneTapTooltip,
                LinkText                = SourceObject.LinkText,
                CanReshare              = SourceObject.CanReshare,
                CommentLikesEnabled     = SourceObject.CommentLikesEnabled,
                CommentThreadingEnabled = SourceObject.CommentThreadingEnabled,
                NumberOfQualities       = SourceObject.NumberOfQualities ?? 0,
                TimezoneOffset          = SourceObject.TimezoneOffset ?? 0,
                VideoDashManifest       = SourceObject.VideoDashManifest,
                StoryIsSavedToArchive   = SourceObject.StoryIsSavedToArchive ?? false,
                ViewerCount             = SourceObject.ViewerCount ?? 0,
                TotalViewerCount        = SourceObject.TotalViewerCount ?? 0,
                ViewerCursor            = SourceObject.ViewerCursor,
                HasSharedToFb           = SourceObject.HasSharedToFb ?? 0
            };

            if (SourceObject.User != null)
            {
                instaStory.User = InstaConvertersFabric.Instance.GetUserShortConverter(SourceObject.User).Convert();
            }

            if (SourceObject.Caption != null)
            {
                instaStory.Caption = InstaConvertersFabric.Instance.GetCaptionConverter(SourceObject.Caption).Convert();
            }

            if (SourceObject.Images?.Candidates != null)
            {
                foreach (var image in SourceObject.Images.Candidates)
                {
                    instaStory.ImageList.Add(
                        new InstaImage(
                            image.Url,
                            int.Parse(image.Width),
                            int.Parse(image.Height)));
                }
            }

            if (SourceObject.VideoVersions != null && SourceObject.VideoVersions.Any())
            {
                foreach (var video in SourceObject.VideoVersions)
                {
                    instaStory.VideoList.Add(
                        new InstaVideo(
                            video.Url,
                            int.Parse(video.Width),
                            int.Parse(video.Height),
                            video.Type));
                }
            }

            if (SourceObject.ReelMentions != null && SourceObject.ReelMentions.Any())
            {
                foreach (var mention in SourceObject.ReelMentions)
                {
                    instaStory.ReelMentions.Add(InstaConvertersFabric.Instance.GetMentionConverter(mention).Convert());
                }
            }

            if (SourceObject.StoryHashtags != null && SourceObject.StoryHashtags.Any())
            {
                foreach (var hashtag in SourceObject.StoryHashtags)
                {
                    instaStory.StoryHashtags.Add(InstaConvertersFabric.Instance.GetMentionConverter(hashtag).Convert());
                }
            }

            if (SourceObject.StoryLocations != null && SourceObject.StoryLocations.Any())
            {
                foreach (var location in SourceObject.StoryLocations)
                {
                    instaStory.StoryLocations.Add(InstaConvertersFabric.Instance.GetStoryLocationConverter(location)
                                                  .Convert());
                }
            }

            if (SourceObject.StoryFeedMedia != null && SourceObject.StoryFeedMedia.Any())
            {
                foreach (var storyFeed in SourceObject.StoryFeedMedia)
                {
                    instaStory.StoryFeedMedia.Add(InstaConvertersFabric.Instance.GetStoryFeedMediaConverter(storyFeed)
                                                  .Convert());
                }
            }

            if (SourceObject.StoryCta != null && SourceObject.StoryCta.Any())
            {
                foreach (var cta in SourceObject.StoryCta)
                {
                    if (cta.Links != null && cta.Links.Any())
                    {
                        foreach (var link in cta.Links)
                        {
                            instaStory.StoryCta.Add(InstaConvertersFabric.Instance.GetStoryCtaConverter(link).Convert());
                        }
                    }
                }
            }

            if (SourceObject.StoryPolls?.Count > 0)
            {
                foreach (var poll in SourceObject.StoryPolls)
                {
                    instaStory.StoryPolls.Add(InstaConvertersFabric.Instance.GetStoryPollItemConverter(poll).Convert());
                }
            }

            if (SourceObject.StorySliders?.Count > 0)
            {
                foreach (var slider in SourceObject.StorySliders)
                {
                    instaStory.StorySliders.Add(InstaConvertersFabric.Instance.GetStorySliderItemConverter(slider)
                                                .Convert());
                }
            }

            if (SourceObject.StoryQuestions?.Count > 0)
            {
                foreach (var question in SourceObject.StoryQuestions)
                {
                    instaStory.StoryQuestions.Add(InstaConvertersFabric.Instance.GetStoryQuestionItemConverter(question)
                                                  .Convert());
                }
            }

            if (SourceObject.StoryPollVoters?.Count > 0)
            {
                foreach (var voter in SourceObject.StoryPollVoters)
                {
                    instaStory.StoryPollVoters.Add(InstaConvertersFabric.Instance.GetStoryPollVoterInfoItemConverter(voter)
                                                   .Convert());
                }
            }

            if (SourceObject.Viewers?.Count > 0)
            {
                foreach (var viewer in SourceObject.Viewers)
                {
                    instaStory.Viewers.Add(InstaConvertersFabric.Instance.GetUserShortConverter(viewer).Convert());
                }
            }

            if (SourceObject.Likers?.Count > 0)
            {
                foreach (var liker in SourceObject.Likers)
                {
                    instaStory.Likers.Add(InstaConvertersFabric.Instance.GetUserShortConverter(liker).Convert());
                }
            }

            if (SourceObject.PreviewComments?.Count > 0)
            {
                foreach (var comment in SourceObject.PreviewComments)
                {
                    instaStory.PreviewComments.Add(InstaConvertersFabric.Instance.GetCommentConverter(comment).Convert());
                }
            }

            if (SourceObject.StorySliderVoters?.Count > 0)
            {
                foreach (var voter in SourceObject.StorySliderVoters)
                {
                    instaStory.StorySliderVoters.Add(InstaConvertersFabric.Instance
                                                     .GetStorySliderVoterInfoItemConverter(voter)
                                                     .Convert());
                }
            }

            if (SourceObject.StoryQuestionsResponderInfos?.Count > 0)
            {
                foreach (var responderInfo in SourceObject.StoryQuestionsResponderInfos)
                {
                    instaStory.StoryQuestionsResponderInfos.Add(
                        InstaConvertersFabric.Instance.GetStoryQuestionInfoConverter(responderInfo).Convert());
                }
            }

            if (SourceObject.Countdowns?.Count > 0)
            {
                foreach (var countdown in SourceObject.Countdowns)
                {
                    instaStory.Countdowns.Add(InstaConvertersFabric.Instance.GetStoryCountdownItemConverter(countdown)
                                              .Convert());
                }
            }

            return(instaStory);
        }
        public InstaMedia Convert()
        {
            if (SourceObject == null)
            {
                throw new ArgumentNullException("Source object");
            }

            var media = new InstaMedia
            {
                Identifier     = SourceObject.Identifier,
                Code           = SourceObject.Code,
                Pk             = SourceObject.Pk,
                ClientCacheKey = SourceObject.ClientCacheKey,
                CommentsCount  = SourceObject.CommentsCount,
                HasLiked       = SourceObject.HasLiked,
                PhotoOfYou     = SourceObject.PhotoOfYou,
                TrackingToken  = SourceObject.TrackingToken,
                TakenAtUnix    =
                    long.Parse(string.IsNullOrEmpty(SourceObject.TakenAtUnixLike) ? "0" : SourceObject.TakenAtUnixLike),
                Height             = SourceObject.Height,
                LikesCount         = SourceObject.LikesCount,
                MediaType          = SourceObject.MediaType,
                FilterType         = SourceObject.FilterType,
                Width              = SourceObject.Width,
                HasAudio           = SourceObject.HasAudio,
                ViewCount          = int.Parse(SourceObject.ViewCount.ToString(CultureInfo.InvariantCulture)),
                IsCommentsDisabled = SourceObject.IsCommentsDisabled,

                // new properties>
                CanViewerReshare             = SourceObject.CanViewerReshare,
                CanViewerSave                = SourceObject.CanViewerSave,
                CanViewMorePreviewComments   = SourceObject.CanViewMorePreviewComments,
                CommentLikesEnabled          = SourceObject.CommentLikesEnabled,
                MaxNumVisiblePreviewComments = SourceObject.MaxNumVisiblePreviewComments,
                HasMoreComments              = SourceObject.HasMoreComments,
                CommentThreadingEnabled      = SourceObject.CommentThreadingEnabled,
                Title       = SourceObject.Title,
                ProductType = SourceObject.ProductType,
                NearlyCompleteCopyrightMatch = SourceObject.NearlyCompleteCopyrightMatch ?? false,
                NumberOfQualities            = SourceObject.NumberOfQualities ?? 0,
                VideoDuration              = SourceObject.VideoDuration ?? 0,
                HasViewerSaved             = SourceObject.HasViewerSaved,
                DirectReplyToAuthorEnabled = SourceObject.DirectReplyToAuthorEnabled ?? false
            };

            if (!string.IsNullOrEmpty(SourceObject.TakenAtUnixLike))
            {
                media.TakenAt = InstaDateTimeHelper.UnixTimestampToDateTime(SourceObject.TakenAtUnixLike);
            }

            if (!string.IsNullOrEmpty(SourceObject.DeviceTimeStampUnixLike))
            {
                media.DeviceTimeStamp = InstaDateTimeHelper.UnixTimestampToDateTime(SourceObject.DeviceTimeStampUnixLike);
            }

            if (SourceObject.CarouselMedia != null)
            {
                media.Carousel = InstaConvertersFabric.Instance.GetCarouselConverter(SourceObject.CarouselMedia).Convert();
            }

            if (SourceObject.User != null)
            {
                media.User = InstaConvertersFabric.Instance.GetUserConverter(SourceObject.User).Convert();
            }

            if (SourceObject.Caption != null)
            {
                media.Caption = InstaConvertersFabric.Instance.GetCaptionConverter(SourceObject.Caption).Convert();
            }

            if (SourceObject.NextMaxId != null)
            {
                media.NextMaxId = SourceObject.NextMaxId;
            }

            if (SourceObject.Likers?.Count > 0)
            {
                foreach (var liker in SourceObject.Likers)
                {
                    media.Likers.Add(InstaConvertersFabric.Instance.GetUserShortConverter(liker).Convert());
                }
            }

            if (SourceObject.UserTagList?.In?.Count > 0)
            {
                foreach (var tag in SourceObject.UserTagList.In)
                {
                    media.UserTags.Add(InstaConvertersFabric.Instance.GetUserTagConverter(tag).Convert());
                }
            }

            if (SourceObject.ProductTags?.In?.Count > 0)
            {
                foreach (var tag in SourceObject.ProductTags.In)
                {
                    media.ProductTags.Add(InstaConvertersFabric.Instance.GetProductTagContainerConverter(tag).Convert());
                }
            }

            if (SourceObject.PreviewComments?.Count > 0)
            {
                foreach (var comment in SourceObject.PreviewComments)
                {
                    media.PreviewComments.Add(InstaConvertersFabric.Instance.GetCommentConverter(comment).Convert());
                }
            }

            if (SourceObject.Location != null)
            {
                media.Location = InstaConvertersFabric.Instance.GetLocationConverter(SourceObject.Location).Convert();
            }

            if (SourceObject.Images?.Candidates == null)
            {
                return(media);
            }

            foreach (var image in SourceObject.Images.Candidates)
            {
                media.Images.Add(new InstaImage(image.Url, int.Parse(image.Width), int.Parse(image.Height)));
            }

            if (SourceObject.Videos == null)
            {
                return(media);
            }

            foreach (var video in SourceObject.Videos)
            {
                media.Videos.Add(
                    new InstaVideo(
                        video.Url,
                        int.Parse(video.Width),
                        int.Parse(video.Height),
                        video.Type));
            }

            return(media);
        }
Exemple #13
0
        public InstaFullMediaInsights Convert()
        {
            var fullMediaInsights = new InstaFullMediaInsights
            {
                CommentCount = SourceObject.CommentCount ?? 0,
                DisplayUrl   = SourceObject.DisplayUrl,
                Id           = SourceObject.Id,
                LikeCount    = SourceObject.LikeCount ?? 0,
                SaveCount    = SourceObject.SaveCount ?? 0
            };

            if (SourceObject.CreationTime != null)
            {
                fullMediaInsights.CreationTime =
                    InstaDateTimeHelper.UnixTimestampToDateTime(SourceObject.CreationTime.ToString());
            }

            if (SourceObject.InstagramMediaType != null)
            {
                try
                {
                    fullMediaInsights.MediaType =
                        (InstaMediaType)Enum.Parse(typeof(InstaMediaType), SourceObject.InstagramMediaType, true);
                }
                catch
                {
                }
            }

            var inlineInsights = SourceObject.InlineInsightsNode;

            if (SourceObject.InlineInsightsNode != null)
            {
                var node = new InstaFullMediaInsightsMetrics {
                    State = inlineInsights.State
                };
                if (inlineInsights.Metrics != null)
                {
                    node.ImpressionCount          = inlineInsights.Metrics.ImpressionCount ?? 0;
                    node.OwnerAccountFollowsCount = inlineInsights.Metrics.OwnerAccountFollowsCount ?? 0;
                    node.OwnerProfileViewsCount   = inlineInsights.Metrics.OwnerProfileViewsCount ?? 0;
                    node.ReachCount = inlineInsights.Metrics.ReachCount ?? 0;

                    if (inlineInsights.Metrics.Reach != null)
                    {
                        try
                        {
                            var reach = new InstaFullMediaInsightsNodeItem
                            {
                                Value = inlineInsights.Metrics.Reach.Value ?? 0
                            };
                            foreach (var item in inlineInsights.Metrics.Reach.FollowStatus.Nodes)
                            {
                                var convertedItem = InstaConvertersFabric.Instance.GetInsightsDataNodeConverter(item)
                                                    .Convert();
                                reach.Items.Add(convertedItem);
                            }

                            node.Reach = reach;
                        }
                        catch
                        {
                        }
                    }

                    if (inlineInsights.Metrics.Impressions != null)
                    {
                        try
                        {
                            var impressions = new InstaFullMediaInsightsNodeItem
                            {
                                Value = inlineInsights.Metrics.Impressions.Value ?? 0
                            };
                            foreach (var item in inlineInsights.Metrics.Impressions.Surfaces.Nodes)
                            {
                                var convertedItem = InstaConvertersFabric.Instance.GetInsightsDataNodeConverter(item)
                                                    .Convert();
                                impressions.Items.Add(convertedItem);
                            }

                            node.Impressions = impressions;
                        }
                        catch
                        {
                        }
                    }

                    if (inlineInsights.Metrics.ProfileActions != null)
                    {
                        try
                        {
                            var profileActions = new InstaFullMediaInsightsNodeItem
                            {
                                Value = inlineInsights.Metrics.ProfileActions.Actions.Value ?? 0
                            };
                            foreach (var item in inlineInsights.Metrics.ProfileActions.Actions.Nodes)
                            {
                                var convertedItem = InstaConvertersFabric.Instance.GetInsightsDataNodeConverter(item)
                                                    .Convert();
                                profileActions.Items.Add(convertedItem);
                            }

                            node.ProfileActions = profileActions;
                        }
                        catch
                        {
                        }
                    }
                }

                fullMediaInsights.InlineInsightsNode = node;
            }

            return(fullMediaInsights);
        }
        public InstaDirectInboxThread Convert()
        {
            var thread = new InstaDirectInboxThread
            {
                Canonical                 = SourceObject.Canonical,
                HasNewer                  = SourceObject.HasNewer,
                HasOlder                  = SourceObject.HasOlder,
                IsSpam                    = SourceObject.IsSpam,
                Muted                     = SourceObject.Muted,
                Named                     = SourceObject.Named,
                Pending                   = SourceObject.Pending,
                VieweId                   = SourceObject.VieweId,
                LastActivity              = InstaDateTimeHelper.UnixTimestampMilisecondsToDateTime(SourceObject.LastActivity),
                ThreadId                  = SourceObject.ThreadId,
                OldestCursor              = SourceObject.OldestCursor,
                IsGroup                   = SourceObject.IsGroup,
                IsPin                     = SourceObject.IsPin,
                ValuedRequest             = SourceObject.ValuedRequest,
                PendingScore              = SourceObject.PendingScore ?? 0,
                VcMuted                   = SourceObject.VcMuted,
                ReshareReceiveCount       = SourceObject.ReshareReceiveCount,
                ReshareSendCount          = SourceObject.ReshareSendCount,
                ExpiringMediaReceiveCount = SourceObject.ExpiringMediaReceiveCount,
                ExpiringMediaSendCount    = SourceObject.ExpiringMediaSendCount,
                NewestCursor              = SourceObject.NewestCursor,
                ThreadType                = SourceObject.ThreadType,
                Title                     = SourceObject.Title,
                MentionsMuted             = SourceObject.MentionsMuted ?? false
            };

            if (SourceObject.Inviter != null)
            {
                var userConverter = InstaConvertersFabric.Instance.GetUserShortConverter(SourceObject.Inviter);
                thread.Inviter = userConverter.Convert();
            }

            if (SourceObject.Items != null && SourceObject.Items.Count > 0)
            {
                thread.Items = new List <InstaDirectInboxItem>();
                foreach (var item in SourceObject.Items)
                {
                    var converter = InstaConvertersFabric.Instance.GetDirectThreadItemConverter(item);
                    thread.Items.Add(converter.Convert());
                }
            }

            if (SourceObject.LastPermanentItem != null)
            {
                var converter = InstaConvertersFabric.Instance.GetDirectThreadItemConverter(SourceObject.LastPermanentItem);
                thread.LastPermanentItem = converter.Convert();
            }

            if (SourceObject.Users != null && SourceObject.Users.Count > 0)
            {
                foreach (var user in SourceObject.Users)
                {
                    var converter = InstaConvertersFabric.Instance.GetUserShortFriendshipConverter(user);
                    thread.Users.Add(converter.Convert());
                }
            }

            if (SourceObject.LeftUsers != null && SourceObject.LeftUsers.Count > 0)
            {
                foreach (var user in SourceObject.LeftUsers)
                {
                    var converter = InstaConvertersFabric.Instance.GetUserShortFriendshipConverter(user);
                    thread.LeftUsers.Add(converter.Convert());
                }
            }

            if (SourceObject.LastSeenAt != null && SourceObject.LastSeenAt != null)
            {
                try
                {
                    var lastSeenJson = System.Convert.ToString(SourceObject.LastSeenAt);
                    var obj          = JsonConvert.DeserializeObject <InstaLastSeenAtResponse>(lastSeenJson);
                    thread.LastSeenAt = new List <InstaLastSeen>();
                    foreach (var extraItem in obj.Extras)
                    {
                        var convertedLastSeen =
                            JsonConvert.DeserializeObject <InstaLastSeenItemResponse>(
                                extraItem.Value.ToString(Formatting.None));
                        var lastSeen = new InstaLastSeen
                        {
                            Pk = long.Parse(extraItem.Key), ItemId = convertedLastSeen.ItemId
                        };
                        if (convertedLastSeen.TimestampPrivate != null)
                        {
                            lastSeen.SeenTime =
                                InstaDateTimeHelper.UnixTimestampMilisecondsToDateTime(convertedLastSeen.TimestampPrivate);
                        }

                        thread.LastSeenAt.Add(lastSeen);
                    }
                }
                catch
                {
                }
            }

            try
            {
                if (thread.LastActivity > thread.LastSeenAt[0].SeenTime)
                {
                    thread.HasUnreadMessage = true;
                }
            }
            catch
            {
                thread.HasUnreadMessage = false;
            }

            return(thread);
        }