/// <summary> /// Read options method. /// </summary> /// <param name="container">Services container.</param> /// <param name="configFileName">Configuration file name.</param> /// <returns></returns> private static RustApiOptions GetApiOptions(MicroContainer container) { var options = OptionsManager.ReadOptions <RustApiOptions>(ConfigFileName, container); if (options == default) { options = new RustApiOptions(DefaultEndpoint); OptionsManager.WriteOptions(ConfigFileName, options, container); } return(options); }
/// <summary> /// Read from option file. /// </summary> /// <typeparam name="TOptions">Expected data model.</typeparam> /// <param name="optionsFileName">Options file name.</param> /// <param name="container">Services container.</param> /// <param name="buildDefaultOptions">Default options builder in case if file not exists.</param> /// <returns></returns> public static TOptions ReadOptions <TOptions>(string optionsFileName, MicroContainer container, Func <MicroContainer, TOptions> buildDefaultOptions = null) where TOptions : class { var logger = container.GetLogger(); TOptions options; // try to read configuration file var path = BuildOptionsPath(optionsFileName, logger); if (!File.Exists(path)) { logger.Info($"Options file not found: {optionsFileName}"); if (buildDefaultOptions == null) { return(default);
/// <summary> /// Build micro container with required services /// </summary> /// <returns></returns> public static MicroContainer AddRustApiServices(this MicroContainer container) { // add API options container.LoadApiOptions(); // add services container .Add(typeof(ILogger <>), typeof(UModLogger <>)) .AddSingle <IApiServer, ApiServer>() .AddSingle <ISteamConnection, SteamConnection>() .AddSingle <IAuthenticationService, AuthenticationService>() .AddSingle <RustApiPlugin>(); // add routes container .AddSingle <IApiRoutes, ApiRoutes>() .AddHookRoutes() .AddCommandRoutes() .AddSystemRoutes() .AddAuthRoutes(); return(container); }
public static MicroContainer LoadApiOptions(this MicroContainer container) => container.AddSingle(GetApiOptions(container));