private async Task <SubredditConfig> ReadConfigFromWikiAsync() { SubredditConfig config = await ConfigurationLoader.LoadConfigAsync((await RedditSubreddit.GetWiki.GetPageAsync(pageName.ToLowerInvariant())).MarkdownContent); config.ValidateSupportedVersion(minSupportedVersion, maxSupportedVersion); return(config); }
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(); }
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); }
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); } }