public override void Configure(Container container)
        {
            LogManager.LogFactory = new NLogFactory();

            GlobalRequestFilters.Add((req, resp, requestDto) => {
                ILog log = LogManager.GetLogger(GetType());
                log.Debug(string.Format(
                              "REQ {0}: {1} {2} {3} {4} {5}\n",
                              DateTimeOffset.Now.Ticks, req.Verb,
                              req.OperationName, req.RemoteIp, req.RawUrl, req.UserAgent));
            });
            GlobalResponseFilters.Add((req, resp, requestDto) => {
                ILog log = LogManager.GetLogger(GetType());
                log.Debug(string.Format(
                              "RES {0}: {1} {2}\n",
                              DateTimeOffset.Now.Ticks, resp.StatusCode, resp.ContentType));
            });
            this.ServiceExceptionHandlers.Add((httpReq, request, exception) => {
                ILog log = LogManager.GetLogger(GetType());
                log.Error(exception);
                return(DtoUtils.CreateErrorResponse(request, exception));
            });


            var config = new HostConfig();

            config.DebugMode             = true; //Show StackTraces in service responses during development
            config.WriteErrorsToResponse = true;
            config.ReturnsInnerException = true;
            SetConfig(config);
        }
Exemple #2
0
        public override void Configure(Container container)
        {
            JsConfig.EmitCamelCaseNames = true;
            Plugins.Add(new SwaggerFeature());
            var manager = new InsteonManager(insteonSource);

            container.Register(manager);
            var settingsProvider = new SettingsProvider(new RoamingAppDataStorage("Insteon"));
            var mySettings       = settingsProvider.GetSettings <SmartThingsSettings>();

            container.Register(mySettings);

            manager.Network.Devices.DeviceStatusChanged += (sender, data) =>
            {
                logger.DebugFormat("{0}:{1}", data.Device.Address, data.DeviceStatus);
                var settings = container.Resolve <SmartThingsSettings>();
                var cb       = new SmartThingsCallbacks(settings);
                cb.PushDeviceStatusUpdate(data.Device, data.DeviceStatus);
            };

            GlobalResponseFilters.Add((req, res, dto) =>
            {
                res.AddHeader("X-Insteon", ServiceName);
            });

            manager.Connect();
        }
Exemple #3
0
        public override void Configure(Container container)
        {
            GlobalRequestFilters.Add((rew, res, dto) =>
                                     ReplyAllRequestAttribute.AssertSingleDto(dto));

            GlobalResponseFilters.Add((rew, res, dto) =>
                                      ReplyAllResponseAttribute.AssertSingleDto(dto));

            container.Register <IDbConnectionFactory>(c =>
                                                      new OrmLiteConnectionFactory(":memory:", SqliteDialect.Provider));
        }
Exemple #4
0
        public override void Configure()
        {
            var requestFilters = _appHost.GetExports <IRequestFilter>().ToList();

            foreach (var filter in requestFilters)
            {
                GlobalRequestFilters.Add(filter.Filter);
            }

            GlobalResponseFilters.Add(new ResponseFilter(_logger).FilterResponse);
        }
Exemple #5
0
 protected void PopulateArrayFilters()
 {
     PreRequestFiltersArray                = PreRequestFilters.ToArray();
     RequestConvertersArray                = RequestConverters.ToArray();
     ResponseConvertersArray               = ResponseConverters.ToArray();
     GlobalRequestFiltersArray             = GlobalRequestFilters.ToArray();
     GlobalRequestFiltersAsyncArray        = GlobalRequestFiltersAsync.ToArray();
     GlobalResponseFiltersArray            = GlobalResponseFilters.ToArray();
     GlobalResponseFiltersAsyncArray       = GlobalResponseFiltersAsync.ToArray();
     GlobalMessageRequestFiltersArray      = GlobalMessageRequestFilters.ToArray();
     GlobalMessageRequestFiltersAsyncArray = GlobalMessageRequestFiltersAsync.ToArray();
     GlobalMessageResponseFiltersArray     = GlobalMessageResponseFilters.ToArray();
     RawHttpHandlersArray             = RawHttpHandlers.ToArray();
     CatchAllHandlersArray            = CatchAllHandlers.ToArray();
     GatewayRequestFiltersArray       = GatewayRequestFilters.ToArray();
     GatewayRequestFiltersAsyncArray  = GatewayRequestFiltersAsync.ToArray();
     GatewayResponseFiltersArray      = GatewayResponseFilters.ToArray();
     GatewayResponseFiltersAsyncArray = GatewayResponseFiltersAsync.ToArray();
 }
        public override void Configure(Container container)
        {
            LogManager.LogFactory = new NLogFactory();

            GlobalRequestFilters.Add((req, resp, requestDto) => {
                ILog log = LogManager.GetLogger(GetType());
                log.Info(string.Format(
                             "REQ {0}: {1} {2} {3} {4} {5} \n",
                             DateTimeOffset.Now.Ticks, req.Verb,
                             req.OperationName, req.RemoteIp, req.RawUrl, req.UserAgent));
            });
            GlobalResponseFilters.Add((req, resp, requestDto) => {
                ILog log = LogManager.GetLogger(GetType());
                log.Info(string.Format(
                             "RES {0}: {1} {2}\n",
                             DateTimeOffset.Now.Ticks, resp.StatusCode, resp.ContentType));
            });

            this.ServiceExceptionHandlers.Add((httpReq, request, exception) => {
                ILog log = LogManager.GetLogger(GetType());
                log.Error(exception);
                //call default exception handler or prepare your own custom response
                return(DtoUtils.CreateErrorResponse(request, exception));
            });

            /*
             * Plugins.Add (new AuthFeature (() => new AuthUserSession (),
             *                            new IAuthProvider[] {new BasicAuthProvider ()})
             *           );
             * Plugins.Add (new RegistrationFeature ());
             * //Plugins.Add(new RequestLogsFeature());
             *
             * container.Register<ICacheClient>(new MemoryCacheClient());
             * var userRep = new InMemoryAuthRepository();
             * container.Register<IUserAuthRepository>(userRep);
             */
            var config = new HostConfig();

            config.DebugMode             = true; //Show StackTraces in service responses during development
            config.WriteErrorsToResponse = true;
            config.ReturnsInnerException = true;
            SetConfig(config);
        }
        public override void Configure(Container container)
        {
            GlobalResponseFilters.Add((req, res, dto) =>
            {
                res.AddHeader("X-Paradox", ServiceName);
            });

            JsConfig.EmitCamelCaseNames = true;
            Plugins.Add(new SwaggerFeature());

            bool smartThingsEnabled = Convert.ToBoolean(ConfigurationManager.AppSettings["enableSmartThings"]);

            if (smartThingsEnabled)
            {
                Plugins.Add(new SmartThingsPlugin());
            }

            var manager = new IpModuleManager(module);

            // try one attempt to logout/login if can't login initially
            if (!manager.Login())
            {
                logger.Warn("Couldn't login. Attempting to logout then login to alarm module.");
                manager.Logout();
                manager.Login();
            }

            try
            {
                manager.GetAlarmInformation();
            }
            catch (Exception)
            {
                logger.Error("Problem logging in and getting alarm information. Services will start but Alarm host will not be connected.");
            }

            container.Register(manager);

            alarmStatusCheckThread = new Thread(manager.StartStatusUpdates);
            container.Register(alarmStatusCheckThread);
            alarmStatusCheckThread.Start();
        }
Exemple #8
0
        // Configure your AppHost with the necessary configuration and dependencies your App needs
        public override void Configure(Container container)
        {
            Plugins.Add(new PostmanFeature());
            Plugins.Add(new OpenApiFeature());

            SetConfig(new HostConfig
            {
                DebugMode = AppSettings.Get(nameof(HostConfig.DebugMode), false),
#if DEBUG
                AdminAuthSecret = "adm1nSecret", // Enable Admin Access with ?authsecret=adm1nSecret
#endif
            });

            container.Register <IList <GroupModel> >(new List <GroupModel>());

            GlobalRequestFilters.Add((req, resp, reqDto) =>
            {
                req.Items.Add("BeginTimestamp", DateTime.Now);
            });
            GlobalResponseFilters.Add((req, resp, respDto) =>
            {
                Console.WriteLine();
                Console.WriteLine();
                Console.WriteLine($"**************** {nameof(GlobalResponseFilters)} ****************");
                //Console.WriteLine($"***** req: {req.ToSafeJson()}");
                Console.WriteLine();

                var beginTimestamp = req.Items["BeginTimestamp"];
                var endTimestamp   = DateTime.Now;

                Console.WriteLine($"=====> Request at [{beginTimestamp}]");
                if (req.IsAuthenticated())
                {
                    var session    = req.SessionAs <CustomUserSession>();
                    var authRepo   = container.Resolve <IAuthRepository>();
                    var manageRole = authRepo as IManageRoles;
                    var roles      = manageRole.GetRoles(session.UserAuthId);

                    Console.WriteLine($"       Username: {session.UserName}, Roles: {roles.ToSafeJson()}");
                }

                Console.WriteLine($"       {req.Verb}, {req.OperationName}, {req.Dto.ToSafeJson()}");
                Console.WriteLine();

                Console.WriteLine($"<===== Response at [{endTimestamp}]");
                Console.WriteLine($"       Type: {respDto.GetType().Name}");
                // Console.WriteLine($"***** resp: {resp.ToSafeJson()}");
                // Console.WriteLine();

                if (respDto is HttpError)
                {
                    var error      = respDto as HttpError;
                    var respStatus = error.ResponseStatus;
                    Console.WriteLine($"       Status: {error.Status}, {error.StatusCode}, {respStatus.ErrorCode}, {respStatus.Message}");
                    Console.WriteLine();
                }
                else
                {
                    object success = respDto is HttpResult
                    ? (respDto as HttpResult).Response
                    : respDto;
                    Console.WriteLine($"       respDto: {success.ToSafeJson()}");
                    Console.WriteLine();
                }
            });

            //Handle Exceptions occurring in Services:
            //
            ServiceExceptionHandlers.Add((httpReq, request, exception) => {
                //log your exceptions here...
                return(null); //continue with default Error Handling

                //or return your own custom response
                //return DtoUtils.CreateErrorResponse(request, exception);
            });

            //Handle Unhandled Exceptions occurring outside of Services
            //E.g. Exceptions during Request binding or in filters:
            //
            UncaughtExceptionHandlers.Add((req, res, operationName, ex) => {
                res.Write($"Error: {ex.GetType().Name}: {ex.Message}");
                res.EndRequest(skipHeaders: true);
            });

            container.Register <IDbConnectionFactory>(c =>
                                                      new OrmLiteConnectionFactory(":memory:", SqliteDialect.Provider));

            container.Register <IAuthRepository>(c =>
                                                 new OrmLiteAuthRepository(c.Resolve <IDbConnectionFactory>())
            {
                UseDistinctRoleTables = true,
            });
            container.Resolve <IAuthRepository>().InitSchema();

            // // TODO: Replace OAuth App settings in: appsettings.Development.json
            Plugins.Add(new AuthFeature(() => new CustomUserSession(),
                                        new IAuthProvider[] {
                // new NetCoreIdentityAuthProvider(AppSettings) { // Adapter to enable ServiceStack Auth in MVC
                //     AdminRoles = { "Manager" }, // Automatically Assign additional roles to Admin Users
                // },
                new BasicAuthProvider(),                  //Allow Sign-ins with HTTP Basic Auth
                new CredentialsAuthProvider(AppSettings), // Sign In with Username / Password credentials
                // new FacebookAuthProvider(AppSettings), /* Create Facebook App at: https://developers.facebook.com/apps */
                // new TwitterAuthProvider(AppSettings),  /* Create Twitter App at: https://dev.twitter.com/apps */
                // new GoogleAuthProvider(AppSettings),   /* Create App https://console.developers.google.com/apis/credentials */
                // new MicrosoftGraphAuthProvider(AppSettings),   /* Create App https://apps.dev.microsoft.com */
            })
            {
                IncludeRegistrationService = true,
                IncludeAssignRoleServices  = false,
            });

            AddSeedUsers((IUserAuthRepository)container.Resolve <IAuthRepository>());
        }