Exemple #1
0
        private async Task <SubredditConfig> ReadConfigFromWikiAsync()
        {
            SubredditConfig config = await ConfigurationLoader.LoadConfigAsync((await RedditSubreddit.GetWiki.GetPageAsync(pageName.ToLowerInvariant())).MarkdownContent);

            config.ValidateSupportedVersion(minSupportedVersion, maxSupportedVersion);
            return(config);
        }
Exemple #2
0
        public async Task ReloadOptionsAsync(BotTerminator bot)
        {
            // TODO: check permissions
            if (!bot.IsConfigurable(RedditSubreddit))
            {
                SubredditConfig = new SubredditConfig();
                return;
            }
            else if (TimeSinceRefresh < TimeToLive && SubredditConfig != null)
            {
                return;
            }
            try
            {
                // catching the 404 here instead of an if check uses less requests and as such will be quicker
                SubredditConfig = await ReadConfigFromWikiAsync();

                LastRefreshedUtc = DateTimeOffset.UtcNow;
                return;
            }
            catch (RedditHttpException redditException)
            {
                //throw new ConfigurationException("Failed to read config due to Reddit error", redditException);
            }
            catch (JsonReaderException readerException)
            {
                //throw new ConfigurationException("Error reading the config", readerException);
            }
            SubredditConfig = new SubredditConfig();
        }
Exemple #3
0
        private bool IsBigEnough(ImageData imageData, SubredditConfig subredditConfig)
        {
            var image = imageManipulator.ParseImage(imageData);

            double width       = image.Width;
            double height      = image.Height;
            double aspectRatio = width / height;

            return(aspectRatio >= subredditConfig.MinAspectRatio &&
                   height >= subredditConfig.MinHeight);
        }
Exemple #4
0
        public async Task <bool> SaveDefaultOptionSetAsync(AbstractSubredditOptionSet defaultSet, bool overrideIfExists = false)
        {
            SubredditConfig = new SubredditConfig()
            {
                Version = 1,
                Options = new SubredditOptionSet(),
            };
            // TODO: check permissions
            if (overrideIfExists || !await PageExistsAsync())
            {
                await RedditSubreddit.GetWiki.EditPageAsync(pageName, JsonConvert.SerializeObject(SubredditConfig, Formatting.Indented), null, "creating new BotTerminator config");

                await RedditSubreddit.GetWiki.SetPageSettingsAsync(pageName, true, WikiPageSettings.WikiPagePermissionLevel.Mods);

                return(true);
            }
            else
            {
                return(false);
            }
        }