Пример #1
0
        public override void Configure(Container container)
        {
            RequestFilters.Add((req, resp, requestDto) => {
                var log = LogManager.GetLogger(GetType());
                log.Info(string.Format("REQ {0}: {1} {2} {3} {4} {5}", DateTimeOffset.Now.Ticks, req.HttpMethod,
                                       req.OperationName, req.RemoteIp, req.RawUrl, req.UserAgent));
            });
            ResponseFilters.Add((req, resp, dto) => {
                var log = LogManager.GetLogger(GetType());
                log.Info(string.Format("RES {0}: {1} {2}", DateTimeOffset.Now.Ticks, resp.StatusCode,
                                       resp.ContentType));
            });

            JsConfig.DateHandler = JsonDateHandler.ISO8601;
            Plugins.Add(new RequestLogsFeature());

            ConfigureQueues(container);

            var config = new EndpointHostConfig();

            if (m_debugEnabled)
            {
                config.DebugMode             = true;
                config.WriteErrorsToResponse = true;
                config.ReturnsInnerException = true;
            }

            SetConfig(config);
        }
Пример #2
0
            public override void Configure(Container container)
            {
                // Force a response type of JSON.
                RequestFilters.Add(
                    (IHttpRequest httpReq, IHttpResponse httpResp, object requestDto) =>
                {
                    var sessionId = httpReq.ResponseContentType = "text/json";
                });

                ResponseFilters.Add((IHttpRequest request, IHttpResponse response, object dto) =>
                {
                    var statusCode = dto as string;
                    if (statusCode != null)
                    {
                        response.StatusCode = int.Parse(statusCode);
                    }

                    var dict = dto as Dictionary <string, object>;
                    if (dict != null)
                    {
                        var val  = dict["value"];
                        var json = val as JsonObject;
                        if (json != null)
                        {
                            Logger.Info(JsonSerializer.SerializeToString(json));
                        }
                        else
                        {
                            Logger.Info(val.ToString());
                        }
                    }
                });
            }
        public static IQueryable <T> ApplyFilters <T>(this IQueryable <T> query, RequestFilters filters)
        {
            if (filters != null)
            {
                if (filters.Filters.Any())
                {
                    var predicate      = new StringBuilder();
                    var propertyValues = filters.Filters.Select(f => f.Value).ToArray();
                    for (int i = 0; i < filters.Filters.Count; i++)
                    {
                        if (filters.Filters[i].Path == "rating")
                        {
                            continue;
                        }

                        if (i > 0)
                        {
                            predicate.Append($" {filters.LogicalOperator} ");
                        }
                        predicate.Append($"{filters.Filters[i].Path} {filters.Filters[i].Action} ({propertyValues[i]})");
                    }

                    query = query.Where(predicate.ToString());
                }
            }

            return(query);
        }
        public async Task <IEnumerable <TriggeredEvent> > SearcAlerts(RequestFilters filters)
        {
            var currentAlerts = await _apiService.GetCurrentAlertsAsync(filters?.MinutesLookback);

            if (filters != null)
            {
                currentAlerts = ProcessAlertsWithFilters(currentAlerts, filters);
            }

            var alertTypes = await _databaseService.GetAlertTypesByIdsAsync(currentAlerts.Events.Select(x => x.Alert_Type_Id).Concat(currentAlerts.Ranges.Select(x => x.Alert_Type_Id)).Distinct());

            var capturedPCs = await _databaseService.GetCapturedPCsByIdsAsync(currentAlerts.Events.Select(x => x.Capture_PC_Id).Concat(currentAlerts.Ranges.Select(x => x.Capture_PC_Id)).Distinct());

            var recordings = await _databaseService.GetRecordingsByIdsAsync(currentAlerts.Events.Select(x => x.Recording_Id).Concat(currentAlerts.Ranges.Select(x => x.Recording_Id)).Distinct());

            var countries = await _databaseService.GetCountriesByCodesAsync(capturedPCs.Select(x => x.CountryCode));

            var events = ProcessEvents(currentAlerts, alertTypes, capturedPCs, recordings, countries);
            var ranges = ProcessRanges(currentAlerts, alertTypes, capturedPCs, recordings, countries);

            if (filters != null && !string.IsNullOrWhiteSpace(filters.CountryCode))
            {
                events = events.Where(x => x.Country == filters.CountryCode);
                ranges = ranges.Where(x => x.Country == filters.CountryCode);
            }

            return(events.Concat(ranges));
        }
 /// <summary>
 /// Application specific configuration
 /// This method should initialize any IoC resources utilized by your web service classes.
 /// </summary>
 public override void Configure(Container container)
 {
     JsConfig.EmitCamelCaseNames = true;
     container.Register <IUserUnitOfWork>(new UserUnitOfWork());
     container.Register <IUserRepository>(new UserRepository(new UserUnitOfWork()));
     container.Register <IUserBusinessLogic>(new UserBusinessLogic(new UserRepository(new UserUnitOfWork())));
     container.Register <ITaskUnitOfWork>(new TaskUnitOfWork());
     container.Register <ITaskRepository>(new TaskRepository(new TaskUnitOfWork()));
     //container.Register<ITaskBusinessLogic>(new TaskBusinessLogic(new TaskRepository(new TaskUnitOfWork()),
     //    new TaskCategoryRepository(new TaskCategoryUnitOfWork())));
     container.Register <ITaskBusinessLogic>(new TaskBusinessLogic(new TaskRepository(new TaskUnitOfWork())));
     container.Register <ITaskCategoryUnitOfWork>(new TaskCategoryUnitOfWork());
     container.Register <ITaskCategoryRepository>(new TaskCategoryRepository(new TaskCategoryUnitOfWork()));
     container.Register <ITaskCategoryBusinessLogic>(new TaskCategoryBusinessLogic(new TaskCategoryRepository(new TaskCategoryUnitOfWork())));
     this.Plugins.Add(new CorsFeature());
     RequestFilters.Add((httpReq, httpRes, requestDto) =>
     {
         if (httpReq.HttpMethod == "OPTIONS")
         {
             httpRes.AddHeader("Access-Control-Allow-Methods", "POST, GET,DELETE, OPTIONS");
             httpRes.AddHeader("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Accept, X-ApiKey");
             httpRes.EndRequest();
         }
     });
 }
        public RequestsViewModel(IQueryable<Request> requests, int pageNo, int pageSize, User user, RequestFilters requestFilter)
        {
            User = user;
            RequestFilter = requestFilter;

            CurrentPage = pageNo;
            PageSize = pageSize;
            TotalResults = requests.Count();

            TotalPages = (int)Math.Ceiling(TotalResults / (float)PageSize);

            if (TotalPages > CurrentPage)
            {
                NextPage = CurrentPage + 1;
            }

            if (CurrentPage > 1)
            {
                PreviousPage = CurrentPage - 1;
            }

            Count = (TotalResults > pageNo * pageSize) ? pageSize : TotalResults - (pageNo - 1) * pageSize;

            if (Count > 0)
            {
                Requests = requests.Skip((pageNo - 1) * pageSize).Take(Count).AsEnumerable().Select(i => new RequestViewModel(user, i));
            }
            else
            {
                Count = 0;

                Requests = new List<RequestViewModel>();
            }
        }
Пример #7
0
        public override void Configure(Container container)
        {
            SetConfig(new EndpointHostConfig {
                ServiceStackHandlerFactoryPath = "api"
            });

            //Set JSON web services to return idiomatic JSON camelCase properties
            ServiceStack.Text.JsConfig.EmitCamelCaseNames = true;
            ServiceStack.Text.JsConfig.DateHandler        = JsonDateHandler.ISO8601;

            Plugins.Add(new CorsFeature()); //Registers global CORS Headers

            RequestFilters.Add((httpReq, httpRes, requestDto) =>
            {
                //Handles Request and closes Responses after emitting global HTTP Headers
                if (httpReq.HttpMethod == "OPTIONS")
                {
                    httpRes.EndServiceStackRequest();
                }
            });

            //Enable the validation feature
            Plugins.Add(new ValidationFeature());

            //This method scans the assembly for validators
            container.RegisterValidators(typeof(AppHost).Assembly);

            container.Register <ICacheClient>(new MemoryCacheClient());

            // register RavenDB dependencies
            ConfigureRavenDb(container);

            // register authentication framework
            ConfigureAuthentication(container);
        }
Пример #8
0
        public IRequestFilter GetFilter(string name)
        {
            IRequestFilter result;

            RequestFilters.TryGetValue(name, out result);
            return(result);
        }
Пример #9
0
        public override void Configure(Container container)
        {
            LoadConfigEnv();

            RequestFilters.Add((req, resp, requestDto) => {
                var log = LogManager.GetLogger(GetType());
                log.Info(string.Format("REQ {0}: {1} {2} {3} {4} {5}", DateTimeOffset.Now.Ticks, req.HttpMethod,
                                       req.OperationName, req.RemoteIp, req.RawUrl, req.UserAgent));
            });
            ResponseFilters.Add((req, resp, dto) => {
                var log = LogManager.GetLogger(GetType());
                log.Info(string.Format("RES {0}: {1} {2}", DateTimeOffset.Now.Ticks, resp.StatusCode,
                                       resp.ContentType));
            });

            JsConfig.DateHandler = JsonDateHandler.ISO8601;

            Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                                        new IAuthProvider[] { new CredentialsAuthProvider() })
                        );
            Plugins.Add(new RegistrationFeature());
            Plugins.Add(new SessionFeature());
            Plugins.Add(new RequestLogsFeature());


            container.Register <IRedisClientsManager>(c =>
                                                      new PooledRedisClientManager(m_redisConnString));
            container.Register <ICacheClient>(c =>
                                              (ICacheClient)c.Resolve <IRedisClientsManager>()
                                              .GetCacheClient())
            .ReusedWithin(Funq.ReuseScope.None);


            container.Register <IDbConnectionFactory>(
                new OrmLiteConnectionFactory(m_pgConnString, PostgreSQLDialectProvider.Instance)
            {
                ConnectionFilter = x => new ProfiledDbConnection(x, Profiler.Current)
            });

            //Use OrmLite DB Connection to persist the UserAuth and AuthProvider info
            container.Register <IUserAuthRepository>(c => new OrmLiteAuthRepository(c.Resolve <IDbConnectionFactory>()));


            Plugins.Add(new ValidationFeature());

            container.RegisterValidators(typeof(CreateQueueValidator).Assembly);
            container.RegisterValidators(typeof(CreateTopicValidator).Assembly);

            var config = new EndpointHostConfig();

            if (m_debugEnabled)
            {
                config.DebugMode             = true; //Show StackTraces in service responses during development
                config.WriteErrorsToResponse = true;
                config.ReturnsInnerException = true;
            }

            SetConfig(config);
            CreateMissingTables(container);
        }
Пример #10
0
        public async Task <ActionResult> Search(RequestFilters filters)
        {
            var data = new
            {
                data = await _alertDashboardService.SearcAlerts(filters)
            };

            return(Json(data));
        }
Пример #11
0
 public override void Configure(Funq.Container container)
 {
     RequestFilters.Add((request, response, requestDTO) =>
     {
         if (!request.IsSecureConnection)
         {
             throw new Exception("The application needs to be secured. Use https instead of http for hosting!");
         }
     });
 }
Пример #12
0
 public static List <Article> TagsMatch(this List <Article> query, RequestFilters filters)
 {
     if (filters != null && filters.Tags != null)
     {
         if (filters.Tags.Count() > 0)
         {
             query = query.Where(a => a.Tags.Split('#', StringSplitOptions.None).AsQueryable().Intersect(filters.Tags).Any()).ToList();
         }
     }
     return(query);
 }
Пример #13
0
            public override void Configure(Container container)
            {
                //containers
                HttpServiceContainer.Build(container);
                SearchContainer.Build(container);

                // mappings
                AllergyMapper.Build();
                GoalsMapper.Build();
                AllergyMedSearchMapper.Build();
                MedSuppMapper.Build();
                PatientNoteMapper.Build();
                PatientSystemMapper.Build();
                PatientContactMapper.Build();
                ContactTypeLookUpsMappers.Build();
                ContactMapper.Build();
                Plugins.Add(new RequestLogsFeature()
                {
                    RequiredRoles = new string[] {}
                });

                // request filtering for setting global vals.
                RequestFilters.Add((req, res, requestDto) =>
                {
                    HostContext.Instance.Items.Add("Contract", ((IAppDomainRequest)requestDto).ContractNumber);
                    HostContext.Instance.Items.Add("Version", ((IAppDomainRequest)requestDto).Version);
                });

                RequestFilters.Add((req, res, requestDto) =>
                {
                    var obj = req.ResponseContentType;
                });

                var emitGlobalHeadersHandler = new CustomActionHandler((httpReq, httpRes) => httpRes.EndRequest());

                SetConfig(new EndpointHostConfig
                {
                    RawHttpHandlers =
                    {
                        (httpReq) => httpReq.HttpMethod == HttpMethods.Options ? emitGlobalHeadersHandler : null
                    },
                    GlobalResponseHeaders =
                    {
                        //{"Access-Control-Allow-Origin", "*"},
                        { "Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS" },
                        { "Access-Control-Allow-Headers", "Content-Type"                    },
                    },
                    AllowJsonpRequests = true
                });

                // initialize datetime format
                JsConfig.DateHandler = JsonDateHandler.ISO8601;
            }
 public override void Configure(Container container)
 {
     JsConfig.EmitCamelCaseNames = true;
     Plugins.Add(new CorsFeature());
     RequestFilters.Add((httpReq, httpRes, requestDto) =>
     {
         if (httpReq.HttpMethod == "OPTIONS")
         {
             httpRes.AddHeader("Access-Control-Allow-Methods", "POST, GET,DELETE, OPTIONS");
             httpRes.AddHeader("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Accept, X-ApiKey");
             httpRes.EndRequest();
         }
     });
 }
Пример #15
0
        public override void Configure(Funq.Container container)
        {
            Plugins.Add(new RequestLogsFeature()
            {
                RequiredRoles = new string[] {}
            });

            HttpServiceContainer.Build(container);
            // request filtering for setting global vals.

            RequestFilters.Add((req, res, requestDto) =>
            {
                HostContext.Instance.Items.Add("Contract", ((IDataDomainRequest)requestDto).ContractNumber.ToLower());
            });
        }
Пример #16
0
        public override void Configure(Funq.Container container)
        {
            RequestBinders.Clear();

            JsConfig.EmitCamelCaseNames = true;
            JsConfig.IncludeNullValues  = true;
            JsConfig.DateHandler        = JsonDateHandler.ISO8601;

            Plugins.Add(new ValidationFeature());

            // Add custom request filter
            RequestFilters.Add(GetRequestProcessor.DeserializeJsonFromGet);

            container.Adapter = new AutofacContainerAdapter(containerProvider);
            container.RegisterValidators(typeof(GetTagRequestValidator).Assembly);
        }
Пример #17
0
        public override void Configure(Funq.Container container)
        {
            Plugins.Add(new RequestLogsFeature()
            {
                RequiredRoles = new string[] {}
            });

            // get path variables and make them accessible through the context.
            RequestFilters.Add((req, res, requestDto) =>
            {
                HostContext.Instance.Items.Add("Contract", ((IDataDomainRequest)requestDto).ContractNumber.ToLower());
                HostContext.Instance.Items.Add("UserId", ((IDataDomainRequest)requestDto).UserId);
            });

            HttpServiceContainer.Build(container);
        }
Пример #18
0
        public override void Configure(Container container)
        {
            RequestFilters.Add((req, resp, requestDto) => {
                var log = LogManager.GetLogger(GetType());
                log.Info(string.Format("REQ {0}: {1} {2} {3} {4} {5}", DateTimeOffset.Now.Ticks, req.HttpMethod,
                                       req.OperationName, req.RemoteIp, req.RawUrl, req.UserAgent));
            });
            ResponseFilters.Add((req, resp, dto) => {
                var log = LogManager.GetLogger(GetType());
                log.Info(string.Format("RES {0}: {1} {2}", DateTimeOffset.Now.Ticks, resp.StatusCode,
                                       resp.ContentType));
            });

            JsConfig.DateHandler = JsonDateHandler.ISO8601;

            Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                                        new IAuthProvider[] { new CredentialsAuthProvider() })
                        );
            Plugins.Add(new RegistrationFeature());
            Plugins.Add(new SessionFeature());
            Plugins.Add(new RequestLogsFeature());

            container.Register <ICacheClient> (new MemoryCacheClient());

            container.Register <IDbConnectionFactory> (
                new OrmLiteConnectionFactory(@"Data Source=db.sqlite;Version=3;",
                                             SqliteOrmLiteDialectProvider.Instance)
            {
                ConnectionFilter = x => new ProfiledDbConnection(x, Profiler.Current)
            });

            //Use OrmLite DB Connection to persist the UserAuth and AuthProvider info
            container.Register <IUserAuthRepository> (c => new OrmLiteAuthRepository(c.Resolve <IDbConnectionFactory> ()));

            Plugins.Add(new ValidationFeature());

            var config = new EndpointHostConfig();

            if (m_debugEnabled)
            {
                config.DebugMode             = true; //Show StackTraces in service responses during development
                config.WriteErrorsToResponse = true;
                config.ReturnsInnerException = true;
            }

            SetConfig(config);
        }
Пример #19
0
        public override void Configure(Funq.Container container)
        {
            Config.DefaultRedirectPath = "/SimpleService";

            //Register the quota plugin
            Plugins.Add(new SimpleQuotaPlugin(
                            new SimpleQuotaProvider(),
                            new SimpleUsageStorer(UsageTimeToLive)
                            ));

            //Always return JSON
            RequestFilters.Add((httpReq, httpResp, requestDto) => {
                httpReq.ResponseContentType = ContentType.Json;
            });

            Config.DebugMode = true;
        }
Пример #20
0
        /// <summary>
        /// Adds the rest handlers.
        /// </summary>
        /// <param name="services">The services.</param>
        public void Init(IEnumerable <IService> services)
        {
            _restServices.AddRange(services);

            ServiceController = CreateServiceController();

            _logger.Info("Calling ServiceStack AppHost.Init");

            ServiceController.Init(this);

            var requestFilters = _appHost.GetExports <IRequestFilter>().ToList();

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

            ResponseFilters.Add(new ResponseFilter(_logger).FilterResponse);
        }
Пример #21
0
        public override void Configure(Container container)
        {
            var appHostConfiger = new AppHostConfiger(this, container);

            appHostConfiger.ConfigGlobleProperty();
            appHostConfiger.ConfigureIoc();
            appHostConfiger.ConfigPlugins();

            this.CustomizeConfigure(container);

            RequestFilters.Add((httpReq, httpRes, requestDto) =>
            {
                if (httpReq.HttpMethod == "OPTIONS")
                {
                    httpRes.AddHeader("Access-Control-Allow-Origin", "*");
                    httpRes.AddHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
                    httpRes.AddHeader("Access-Control-Allow-Headers", "X-Requested-With, Content-Type");
                    httpRes.End();
                }
            });
        }
Пример #22
0
 public static List <Article> RatingFilter(this List <Article> query, RequestFilters filters)
 {
     if (filters != null)
     {
         foreach (var filter in filters.Filters)
         {
             if (filter.Path == "rating")
             {
                 if (filter.Action == FiltersCompareActions.GreaterThenOrEqual)
                 {
                     query = query.Where(a => a.Rating >= int.Parse(filter.Value)).ToList();
                 }
                 else
                 {
                     query = query.Where(a => a.Rating >= int.Parse(filter.Value)).ToList();
                 }
             }
         }
     }
     return(query);
 }
Пример #23
0
 /// <summary>
 /// Application specific configuration
 /// This method should initialize any IoC resources utilized by your web service classes.
 /// </summary>
 public override void Configure(Container container)
 {
     //Config examples
     //this.Plugins.Add(new PostmanFeature());
     this.Plugins.Add(new CorsFeature());
     RequestFilters.Add((httpReq, httpRes, requestDto) =>
     {
         if (httpReq.HttpMethod == "OPTIONS")
         {
             httpRes.AddHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
             httpRes.AddHeader("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Accept, X-ApiKey");
             httpRes.EndRequest();
         }
     });
     //container.Register<>();
     container.Register <IUserRepo>(new UserRepo(new DatabaseMapper()));
     container.Register <IUserBll>(new UserBll(new UserRepo(new DatabaseMapper())));
     container.Register <ICategoryDal>(new CategoryDal(new DatabaseMapper()));
     container.Register <ICategoryBll>(new CategoryBll(new CategoryDal(new DatabaseMapper())));
     container.Register <ITaskDal>(new TaskDal(new DatabaseMapper()));
     container.Register <ITaskBll>(new TaskBll(new TaskDal(new DatabaseMapper())));
 }
Пример #24
0
        public HttpResponseMessage GetSearchResults(RequestFilters requestFilters)
        {
            try
            {
                searchViewModel = new SearchViewModel();
                searchSerObj    = new SearchService();
                RequestFilters reqFiltersObj = new RequestFilters();
                reqFiltersObj = requestFilters;
                //RequestFilters reqFiltersObj = new JavaScriptSerializer().Deserialize<List<RequestFilters>>(selectedFilters).FirstOrDefault();
                //RequestFilters reqFiltersObj = new RequestFilters();
                reqFiltersObj.SelectedCountry   = reqFiltersObj.SelectedCountry.Equals(Constants.TEXT_DROPDOWN_DEFAULT) ? "0" : reqFiltersObj.SelectedCountry;
                reqFiltersObj.SelectedArea      = reqFiltersObj.SelectedArea.Equals(Constants.TEXT_DROPDOWN_DEFAULT) || reqFiltersObj.SelectedArea.Equals(string.Empty) ? "0" : reqFiltersObj.SelectedArea;
                reqFiltersObj.SelectedLeadAI    = reqFiltersObj.SelectedLeadAI.Equals(Constants.TEXT_DROPDOWN_DEFAULT) ? "0" : reqFiltersObj.SelectedLeadAI;
                reqFiltersObj.SelectedOrginator = reqFiltersObj.SelectedOrginator == null ? Constants.TEXT_DROPDOWN_DEFAULT : reqFiltersObj.SelectedOrginator;
                reqFiltersObj.SelectedReqType   = reqFiltersObj.SelectedReqType.Equals(Constants.TEXT_DROPDOWN_DEFAULT) ? "0" : reqFiltersObj.SelectedReqType;
                reqFiltersObj.SelectedStatus    = reqFiltersObj.SelectedStatus.Equals(Constants.TEXT_DROPDOWN_DEFAULT) ? "0" : reqFiltersObj.SelectedStatus;
                reqFiltersObj.SelectedSubArea   = string.Empty;
                reqFiltersObj.SelectedSubStatus = reqFiltersObj.SelectedSubStatus.Equals(Constants.TEXT_DROPDOWN_DEFAULT) ? "0" : reqFiltersObj.SelectedSubStatus;
                reqFiltersObj.SUorPU            = reqFiltersObj.SUorPU.Equals(string.Empty) ? "-1" : reqFiltersObj.SUorPU;
                reqFiltersObj.NSU       = reqFiltersObj.NSU.Equals(string.Empty) ? "-1" : reqFiltersObj.NSU;
                reqFiltersObj.Concerns  = reqFiltersObj.Concerns;
                reqFiltersObj.ReqNumber = reqFiltersObj.ReqNumber.Equals(string.Empty) ? "-1" : reqFiltersObj.ReqNumber;

                searchViewModel.RequestResults = searchSerObj.GetSearchResultsData(reqFiltersObj);

                return(Request.CreateResponse(HttpStatusCode.OK, searchViewModel));
            }
            catch (Exception ex)
            {
                NameValueCollection additionalInfo = new NameValueCollection();
                additionalInfo.Add("PageName", "Search");
                ExceptionManager.Publish(ex, additionalInfo);
                //Message = errMessages.GetString(Constants.Err_PageLoad);
                errEntity.ErrorNumber   = 420;
                errEntity.ErrorMess     = "Error in GetSearchResults method of search controller";
                searchViewModel.ErrorBE = errEntity;
                return(Request.CreateResponse(HttpStatusCode.OK, searchViewModel));
            }
        }
Пример #25
0
        public override void Configure(Funq.Container container)
        {
            Plugins.Add(new RequestLogsFeature()
            {
                RequiredRoles = new string[] {}
            });
            Plugins.Add(new SwaggerFeature());

            // get path variables and make them accessible through the context.
            RequestFilters.Add((req, res, requestDto) =>
            {
                //{ServiceStack.Api.Swagger.Resources}
                if (requestDto.GetType() == typeof(Resources) || requestDto.GetType() == typeof(ResourceRequest))
                {
                    return;
                }
                HostContext.Instance.Items.Add("Contract", ((IDataDomainRequest)requestDto).ContractNumber.ToLower());
                HostContext.Instance.Items.Add("UserId", ((IDataDomainRequest)requestDto).UserId);
            });

            HttpServiceContainer.Build(container);
        }
Пример #26
0
 public override void Configure(Container container)
 {
     // I add some request/response filters to set up the correct database
     // connection for the integration test database
     RequestFilters.Add((httpRequest, httpResponse, requestDto) =>
     {
         var dbContext = MakeSomeDatabaseContext();
         httpRequest.Items["DatabaseIntegrationTestContext"] = dbContext;
     });
     ResponseFilters.Add((httpRequest, httpResponse, responseDto) =>
     {
         var dbContext = httpRequest.Items["DatabaseIntegrationTestContext"] as DbContext;
         if (dbContext != null)
         {
             dbContext.Dispose();
             httpRequest.Items.Remove("DatabaseIntegrationTestContext");
         }
     });
     // now include any configuration you want to share between this
     // and your regular AppHost, e.g. IoC setup, EndpointHostConfig,
     // JsConfig setup, adding Plugins, etc.
     SharedAppHost.Configure(container);
 }
        private static AlertResponse ProcessAlertsWithFilters(AlertResponse currentAlerts,
                                                              RequestFilters filters)
        {
            if (filters.EventType.HasValue)
            {
                if (filters.EventType == EventType.Event)
                {
                    currentAlerts.Ranges = new List <AlertRange>();
                }

                if (filters.EventType == EventType.Range)
                {
                    currentAlerts.Events = new List <AlertEvent>();
                }
            }

            if (filters.AlertTypeId.HasValue)
            {
                currentAlerts.Events = currentAlerts.Events.Where(x => x.Alert_Type_Id == filters.AlertTypeId);
                currentAlerts.Ranges = currentAlerts.Ranges.Where(x => x.Alert_Type_Id == filters.AlertTypeId);
            }

            if (filters.CapturedPCId.HasValue)
            {
                currentAlerts.Events = currentAlerts.Events.Where(x => x.Capture_PC_Id == filters.CapturedPCId);
                currentAlerts.Ranges = currentAlerts.Ranges.Where(x => x.Capture_PC_Id == filters.CapturedPCId);
            }

            if (filters.RecordingId.HasValue)
            {
                currentAlerts.Events = currentAlerts.Events.Where(x => x.Recording_Id == filters.RecordingId);
                currentAlerts.Ranges = currentAlerts.Ranges.Where(x => x.Recording_Id == filters.RecordingId);
            }

            return(currentAlerts);
        }
Пример #28
0
 public PagedRequest()
 {
     RequestFilters = new RequestFilters();
 }
Пример #29
0
        /*
         * // not needed anymore, we do the type resolution ourselves now.
         *
         * private static readonly string[] _hideKnownAssemblies = new[] {
         *  "ServiceStack", // exclude the service stack assembly
         *   "ClrPlus",
         *  "b03f5f7f11d50a3a", // Microsoft
         *  "b77a5c561934e089", // Microsoft
         *  "31bf3856ad364e35" // Microsoft
         * };
         *
         * private static IEnumerable<Assembly> GetActiveAssemblies() {
         *  return AppDomain.CurrentDomain.GetAssemblies().Where(each => !_hideKnownAssemblies.Any(x => each.FullName.IndexOf(x) > -1));
         * }
         */

        public override void Configure(Container container)
        {
            _configured = true;
            // Feature disableFeatures = Feature.Jsv | Feature.Soap;
            SetConfig(new EndpointHostConfig {
                // EnableFeatures = Feature.All.Remove(disableFeatures), //all formats except of JSV and SOAP
                DebugMode             = true,             //Show StackTraces in service responses during development
                WriteErrorsToResponse = false,            //Disable exception handling
                DefaultContentType    = ContentType.Json, //Change default content type
                AllowJsonpRequests    = true,             //Enable JSONP requests
                ServiceName           = "RestService",
            });

#if DEBUG
            LogManager.LogFactory = new DebugLogFactory();
#endif
            using (var ps = RunspacePool.Dynamic()) {
                foreach (var restCommand in _activeCommands)
                {
                    PSObject command = ps.LookupCommand(restCommand.Name);

                    if (command != null)
                    {
                        var cmdletInfo = (command.ImmediateBaseObject as CmdletInfo);
                        if (cmdletInfo != null)
                        {
                            dynamic d = new AccessPrivateWrapper((ServiceController as ServiceController));

                            // for each type we're adding, see if it's already been added already.
                            if (!d.requestExecMap.ContainsKey(cmdletInfo.ImplementingType))
                            {
                                (ServiceController as ServiceController).RegisterGService(GetTypeFactory(cmdletInfo.ImplementingType), cmdletInfo.ImplementingType);
                                (ServiceController as ServiceController).RegisterNService(GetTypeFactory(cmdletInfo.ImplementingType), cmdletInfo.ImplementingType);
                            }

                            ReverseLookup.AddOrSet(cmdletInfo.ImplementingType, restCommand);
                            Routes.Add(cmdletInfo.ImplementingType, "/" + restCommand.PublishAs + "/", "GET");
                        }
                        else
                        {
                            throw new ClrPlusException("command isn't cmdletinfo: {0}".format(command.GetType()));
                        }
                    }
                }
            }

            Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                                        new IAuthProvider[] {
                new CustomBasicAuthProvider(),
                // new CustomCredentialsAuthProvider(),
            }
                                        ));

            // stick a request filter in to validate that the user has the right to actually
            // call this method.

            RequestFilters.Add((request, response, requestDto) => {
                var restCommand = ReverseLookup[requestDto.GetType()];

                // is this one of the restCommands?
                // and does it has roles defined?
                if (restCommand != null && !restCommand.Roles.IsNullOrEmpty())
                {
                    // ensure we're authenticated if the user passed the right stuff in the request
                    try {
                        AuthenticateAttribute.AuthenticateIfBasicAuth(request, response);
                    } catch (Exception e) {
                        Console.WriteLine(e.Message);
                        response.StatusCode = 401;
                        response.AddHeader("WWW-Authenticate", "Basic realm=\"rest-service\"");
                        response.StatusDescription = "Unauthorized";
                        response.EndServiceStackRequest(false);
                        return;
                    }

                    // get the session object.
                    var session = request.GetSession(false);

                    // check if we got our authentication.
                    if (!session.IsAuthenticated)
                    {
                        response.StatusCode = 401;
                        response.AddHeader("WWW-Authenticate", "Basic realm=\"rest-service\"");
                        response.StatusDescription = "Unauthorized";
                        response.EndServiceStackRequest(false);
                        return;
                    }

                    // validate the user has the role.
                    if (!restCommand.Roles.Any(session.HasRole))
                    {
                        response.StatusCode = 403;

                        response.StatusDescription = "Forbidden";
                        response.EndServiceStackRequest(false);
                    }

                    var req = (requestDto as IHasSession);
                    if (req != null)
                    {
                        req.Session = session;
                    }
                }
            });
        }
        public RequestViewModel(User user, Request request, IEnumerable<Vlan> vlans, IEnumerable<Switch> switches, 
            IEnumerable<SwitchModule> switchModules, IEnumerable<SwitchPort> switchPorts, RequestFilters requestFilter)
        {
            RequestFilter = requestFilter;
            User = user;
            Switches = switches;
            SwitchModules = switchModules;
            SwitchPorts = switchPorts;

            var repo = new RequestRepository();

            OlderRequest = repo.GetOlderRequest(request);

            NewerRequest = repo.GetNewerRequest(request);

            Request = new RequestFormViewModel(request, user, RequestFormViews.View);

            var lastApprovedAction = repo.GetLastApprovedSecurityAction(request);

            if (lastApprovedAction != null)
            {
                Vlan = lastApprovedAction.Vlan;
            }

            // Get the last security action of this request version.
            if (request.SecurityActions.Count > 0)
            {
                LastSecurityAction = request.SecurityActions.OrderByDescending(x => x.Id).First();
            }

            // Get the last communication action of this request version.
            if (request.CommunicationActions.Count > 0)
            {
                LastCommunicationAction = request.CommunicationActions.OrderByDescending(x => x.Id).First();

                Notes = LastCommunicationAction.Notes;
            }

            var lastCompletedAction = repo.GetLastCompletedCommunicationAction(request);

            if (lastCompletedAction != null)
            {
                IPAddress = CommonFunctions.IPDotted(lastCompletedAction.ServerIP.IP.Address);

                if (lastCompletedAction.Completed == true)
                {
                    if (Request.ServerType.Id == (int)ServerTypes.Standalone)
                    {
                        SwitchIPAddress = CommonFunctions.IPDotted(lastCompletedAction.ServerIP.SwitchPort.SwitchModule.Switch.IP.Address);
                        SwitchName = lastCompletedAction.ServerIP.SwitchPort.SwitchModule.Switch.Name;
                        SwitchNumber = lastCompletedAction.ServerIP.SwitchPort.SwitchModule.Switch.StackableNumber;

                        SwitchModuleNumber = lastCompletedAction.ServerIP.SwitchPort.SwitchModule.Number;
                        SwitchPortNumber = lastCompletedAction.ServerIP.SwitchPort.Port;
                    }
                }
            }

            Vlans = vlans;

            Logs = new List<Log>();

            var reqs = repo.GetRequestUpdates(request.OriginalRequest).ToList();

            Logs.AddRange(reqs.Select(x => new Log
            {
                User = x.User,
                Date = x.SubmissionDate,
                Notes = x.Notes,
                LogAction = (x.Id == x.OriginalId) ? LogActions.RequestCreated : LogActions.RequestUpdated
            }));

            Logs.AddRange(reqs.SelectMany(x => x.SecurityActions.Select(action => new Log
            {
                User = action.User,
                Date = action.Date,
                Notes = action.Notes,
                LogAction = action.Approved == true ? LogActions.SecurityApproved :
                            (action.Approved == false ? LogActions.SecurityRejected :
                            (action.Assigned ? LogActions.SecurityAssigned :
                            LogActions.SecurityReleased))
            })));

            Logs.AddRange(reqs.SelectMany(x => x.CommunicationActions.Select(action => new Log
            {
                User = action.User,
                Date = action.Date,
                Notes = action.Notes,
                LogAction = action.Completed == true ? LogActions.CommunicationCompleted :
                            (action.Completed == false ? LogActions.CommunicationProcessing :
                            (action.Assigned ? LogActions.CommunicationAssigned :
                            LogActions.CommunicationReleased))
            })));

            Logs = Logs.OrderByDescending(x => x.Date).ToList();
        }
Пример #31
0
 public IRequestFilter Remove(string name)
 {
     RequestFilters.TryRemove(name, out IRequestFilter item);
     return(item);
 }
Пример #32
0
        public override void Configure(Container container)
        {
            Log.Logger = new LoggerConfiguration()
                         .ReadFrom.AppSettings()
                         .Enrich.FromLogContext()
                         .CreateLogger();

            JsConfig.EmitCamelCaseNames = true;

            container.Register <ICaseRepository>(new CaseRepository());
            container.Register <IUserRepository>(new UserRepository());
            container.Register <IUserRoleRepository>(new UserRoleRepository());
            container.Register <ITokenRepository>(new TokenRepository());
            container.Register <IRoleRepository>(new RoleRepository());
            container.Register <ICaseInformationRepository>(new CaseInformationRepository());
            container.Register <ICaseReferenceRepository>(new CaseReferenceRepository());
            container.Register <ICaseStatusRepository>(new CaseStatusRepository());
            container.Register <IClientRepository>(new ClientRepository());
            container.Register <INotesRepository>(new NotesRepository());
            container.Register <IDeclarationDal>(c =>
                                                 new DeclarationDal(
                                                     c.Resolve <IDatabaseMapper>()
                                                     )
                                                 );
            container.Register <IMasterDataRepository>(c =>
                                                       new MasterDataRepository(
                                                           c.Resolve <IMasterDataMapper>()
                                                           )
                                                       );

            container.Register <IClientMapper>(new ClientMapper());
            container.Register <ICaseInformationMapper>(new CaseInformationMapper());
            container.Register <ICaseStatusMapper>(new CaseStatusMapper());
            container.Register <ICaseReferenceMapper>(new CaseReferenceMapper());
            container.Register <INotesMapper>(new NotesMapper());
            container.Register <IDatabaseMapper>(new DatabaseMapper());
            container.Register <IMasterDataMapper>(new MasterDataMapper());

            container.Register <IRoleBusinessLogic>(c =>
                                                    new RoleBusinessLogic(
                                                        c.Resolve <IUserRoleRepository>(),
                                                        c.Resolve <IRoleRepository>()
                                                        )
                                                    );

            container.Register <ITokenBusinessLogic>(c =>
                                                     new TokenBusinessLogic(
                                                         c.Resolve <IRoleBusinessLogic>(),
                                                         c.Resolve <ITokenRepository>(),
                                                         c.Resolve <IUserRepository>()
                                                         )
                                                     );

            container.Register <IUserBusinessLogic>(c =>
                                                    new UserBusinessLogic(
                                                        c.Resolve <IUserRepository>(),
                                                        c.Resolve <ITokenBusinessLogic>()
                                                        )
                                                    );

            container.Register <IClientBusinessLogic>(c =>
                                                      new ClientBusinessLogic(
                                                          c.Resolve <IClientRepository>(),
                                                          c.Resolve <IClientMapper>()
                                                          )
                                                      );

            container.Register <ICaseInformationBusinessLogic>(c =>
                                                               new CaseInformationBusinessLogic(
                                                                   c.Resolve <ICaseInformationRepository>(),
                                                                   c.Resolve <ICaseInformationMapper>()
                                                                   )
                                                               );

            container.Register <ICaseStatusBusinessLogic>(c =>
                                                          new CaseStatusBusinessLogic(
                                                              c.Resolve <ICaseStatusRepository>(),
                                                              c.Resolve <ICaseStatusMapper>()
                                                              )
                                                          );

            container.Register <INotesBusinessLogic>(c =>
                                                     new NotesBusinessLogic(
                                                         c.Resolve <INotesRepository>(),
                                                         c.Resolve <INotesMapper>()
                                                         )
                                                     );

            container.Register <ICaseReferenceBusinessLogic>(c =>
                                                             new CaseReferenceBusinessLogic(
                                                                 c.Resolve <ICaseReferenceRepository>(),
                                                                 c.Resolve <ICaseReferenceMapper>()
                                                                 )
                                                             );

            container.Register <ICaseBusinessLogic>(c =>
                                                    new CaseBusinessLogic(
                                                        c.Resolve <IClientBusinessLogic>(),
                                                        c.Resolve <ICaseInformationBusinessLogic>(),
                                                        c.Resolve <ICaseStatusBusinessLogic>(),
                                                        c.Resolve <INotesBusinessLogic>(),
                                                        c.Resolve <ICaseReferenceBusinessLogic>(),
                                                        c.Resolve <ICaseRepository>()
                                                        )
                                                    );

            container.Register <IDeclarationBll>(c =>
                                                 new DeclarationBll(
                                                     c.Resolve <IDeclarationDal>()
                                                     )
                                                 );

            container.Register <IMasterDataBll>(c =>
                                                new MasterDataBll(
                                                    c.Resolve <IMasterDataRepository>()
                                                    )
                                                );

            Plugins.Add(new CorsFeature());
            RequestFilters.Add((httpReq, httpRes, requestDto) =>
            {
                if (httpReq.HttpMethod == "OPTIONS")
                {
                    httpRes.AddHeader("Access-Control-Allow-Methods", "POST, GET,DELETE, OPTIONS");
                    httpRes.AddHeader("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Accept, X-ApiKey");
                    httpRes.EndRequest();
                }
            });
        }