Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
Пример #3
0
        /// <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);
        }
Пример #4
0
 public static MicroContainer LoadApiOptions(this MicroContainer container) => container.AddSingle(GetApiOptions(container));