/// <summary> /// Validates specified configuration. Will throw if data is invalid. /// </summary> /// <param name="config">Configuration data to validate</param> public void ValidateConfiguration(TurretConfig config) { // validate the config if (config == null || config.Version == null || config.Discord == null || config.PostgreSQL == null || config.Lavalink == null || config.YouTube == null) { throw new ArgumentNullException(nameof(config), "Configuration data, or one of its parts, is null."); } // validate config version if (config.Version.Configuration != this.ConfigVersion) { throw new InvalidDataException("Configuration data version mismatch."); } }
/// <summary> /// Saves the specified configuration to specified file. The file will be overwritten. /// </summary> /// <param name="config">Configuration data to save.</param> /// <param name="file">File to save the data to.</param> /// <returns></returns> public async Task SaveConfigurationAsync(TurretConfig config, FileInfo file) { // validate the config first this.ValidateConfiguration(config); // serialize the config var json = JsonConvert.SerializeObject(config, Formatting.Indented); // write the config to a file using (var fs = file.Create()) using (var sr = new StreamWriter(fs, TurretUtilities.UTF8)) { await sr.WriteLineAsync(json); await sr.FlushAsync(); } }