Пример #1
0
        public async Task LoadSubreddits()
        {
            var subreddits = await _offlineService.RetrieveOrderedThings("pivotsubreddits");

            PivotItems.Add(new SubredditSelectorViewModel(_baconProvider));

            if (subreddits == null || subreddits.Count() == 0)
            {
                subreddits = new List <TypedThing <Subreddit> > {
                    new TypedThing <Subreddit>(SubredditInfo.GetFrontPageThing())
                }
            }
            ;

            foreach (var sub in subreddits)
            {
                if (sub.Data is Subreddit && ((Subreddit)sub.Data).Id != null)
                {
                    var message = new SelectSubredditMessage();
                    message.Subreddit = new TypedThing <Subreddit>(sub);
                    ChangeSubreddit(message, false);
                }
            }

            Messenger.Default.Send <SelectIndexMessage>(
                new SelectIndexMessage
            {
                TypeContext = typeof(MainPageViewModel),
                Index       = 0
            }
                );
        }
        protected SubredditInfo GetSubredditInfo(string subredditName)
        {
            SubredditInfo toReturn = Utility.MakeDefaultSubredditInfo();

            if (_subredditInfoContext is null)
            {
                return(toReturn);
            }

            var subsQuery = from m in _subredditInfoContext.SubredditInfo select m;
            var results   = subsQuery.Where(sub => sub.SubredditName == subredditName);

            if (results.Count() != 1)
            {
                SubredditInfo subredditInfo = RetrieveSubredditInfo(subredditName);

                if (!(subredditInfo is null))
                {
                    _subredditInfoContext.Add(subredditInfo);
                    _subredditInfoContext.SaveChanges();

                    toReturn = subredditInfo;
                }
            }

            else
            {
                toReturn = results.ToList().Cast <SubredditInfo>().ElementAt(0);
            }

            return(toReturn);
        }
Пример #3
0
        public PostManager(Post post, SubredditInfo subredditInfo, ETHBotDBContext context)
        {
            Post            = post;
            SubredditInfo   = subredditInfo;
            ETHBotDBContext = context;

            LoadDBRecord();
        }
        public void RetrieveUpdatedSubredditIcons(List <string> subredditsToCheck)
        {
            if (subredditsToCheck is null || !CreateRedditClient())
            {
                IsUpdatingSubredditIcons = false;
                Utility.Print("Error Updating Subreddits");
                return;
            }

            IsGettingSubredditIcons = true;
            foreach (string subredditName in subredditsToCheck)
            {
                SubredditInfo subInfo = RetrieveSubredditInfo(subredditName);
                UpdatedSubreddits.Add(subInfo);
                System.Threading.Thread.Sleep(700); // Sleep to avoid overloading the Reddit Api
            }

            IsGettingSubredditIcons = false;
        }
Пример #5
0
        public void LoadSubredditInfo()
        {
            // TODO overwrite info from db -> over init items
            SubredditInfo = ETHBotDBContext.SubredditInfos.SingleOrDefault(i => i.SubredditName == SubredditName);
            if (SubredditInfo == null)
            {
                ETHBotDBContext.SubredditInfos.Add(new SubredditInfo()
                {
                    SubredditDescription = Subreddit.Description,
                    SubredditName        = Subreddit.Name,
                    IsNSFW = Subreddit.Over18 ?? false // TODO correct to assume false othwerwise?
                });

                ETHBotDBContext.SaveChanges();
            }

            // TODO Check if null
            SubredditInfo = ETHBotDBContext.SubredditInfos.SingleOrDefault(i => i.SubredditName == SubredditName);
            OldestPost    = SubredditInfo.OldestPost;
            NewestPost    = SubredditInfo.NewestPost;
        }
        private SubredditInfo RetrieveSubredditInfo(string subredditName)
        {
            if (!CreateRedditClient())
            {
                return(Utility.MakeDefaultSubredditInfo());
            }

            try
            {
                Utility.Print("GETTING SUBREDDIT: " + subredditName);

                Subreddit subredditAbout = RedditClient.Subreddit(subredditName).About();

                string primaryColor  = !String.IsNullOrEmpty(subredditAbout.PrimaryColor) ? subredditAbout.PrimaryColor : GenerateSubredditColor(subredditName);
                string communityIcon = "";
                string iconImg       = "";
                string url           = Utility.DefaultSubredditIcon;
                bool   isNsfw        = false;

                if (!(subredditAbout.SubredditData.CommunityIcon is null)) // Reddit's current icon system
                {
                    communityIcon = subredditAbout.SubredditData.CommunityIcon;

                    if (communityIcon.Contains("&amp;"))
                    {
                        communityIcon = communityIcon.Replace("&amp;", "&");
                    }
                }

                if (!(subredditAbout.SubredditData.IconImg is null)) // Reddit's old icon system (used as a backup and in outlier cases such as User posts)
                {
                    iconImg = subredditAbout.SubredditData.IconImg.ToString();

                    if (iconImg.Contains("&amp;"))
                    {
                        iconImg = iconImg.Replace("&amp;", "&");
                    }
                }

                if (!String.IsNullOrEmpty(iconImg) || !String.IsNullOrEmpty(communityIcon)) // Try and use new system, but if not available, use old one.
                {
                    url = !String.IsNullOrEmpty(communityIcon) ? communityIcon : iconImg;
                }

                bool?isOver18 = subredditAbout.SubredditData.Over18;

                if (!(isOver18 is null) && (bool)isOver18)
                {
                    isNsfw = true;
                }

                return(new SubredditInfo {
                    SubredditName = subredditName, IconUrl = url, PrimaryColor = primaryColor, IsNsfw = isNsfw
                });
            }

            catch (Exception)
            {
                Utility.Print("Could not get Subreddit: " + subredditName + ". Will be using backup");
            }

            // Only to be used if the subreddit was unable to be reached
            SubredditInfo backup = Utility.MakeDefaultSubredditInfo();

            backup.SubredditName = subredditName;
            backup.PrimaryColor  = GenerateSubredditColor(subredditName);
            backup.IconUrl       = Utility.DefaultSubredditIcon;
            backup.IsDead        = true;

            return(backup);
        }