/// <summary> /// Adds the rest handlers. /// </summary> /// <param name="services">The services.</param> public void Init(IEnumerable <IRestfulService> services) { _restServices.AddRange(services); _logger.Info("Calling EndpointHost.ConfigureHost"); EndpointHost.ConfigureHost(this, ServerName, CreateServiceManager()); _logger.Info("Registering protobuf as a content type filter"); ContentTypeFilters.Register(ContentType.ProtoBuf, (reqCtx, res, stream) => ProtobufSerializer.SerializeToStream(res, stream), (type, stream) => ProtobufSerializer.DeserializeFromStream(stream, type)); _logger.Info("Calling ServiceStack AppHost.Init"); Init(); }
public override void Configure(Container containerFunq) { Log.Info("Configure AppHost"); new Module().Init(UnityServiceLocator.Instance); var container = UnityServiceLocator.Instance; containerFunq.Adapter = new UnityContainerAdapter(container, new Logger()); var serverSettings = container.Resolve <IServerSettings>(); Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new CustomCredentialsAuthProvider(UnityContainerExtensions.Resolve <ICommandBus>(container), UnityContainerExtensions.Resolve <IAccountDao>(container), UnityContainerExtensions.Resolve <IPasswordService>(container), UnityContainerExtensions.Resolve <IServerSettings>(container)), new CustomFacebookAuthProvider(UnityContainerExtensions.Resolve <IAccountDao>(container)), new CustomTwitterAuthProvider(UnityContainerExtensions.Resolve <IAccountDao>(container)) })); Plugins.Add(new ValidationFeature()); containerFunq.RegisterValidators(typeof(SaveFavoriteAddressValidator).Assembly); RequestFilters.Add((httpReq, httpResp, requestDto) => { var authSession = httpReq.GetSession(); if (authSession != null && !string.IsNullOrEmpty(authSession.UserAuthId)) { var account = container.Resolve <IAccountDao>().FindById(new Guid(authSession.UserAuthId)); if (account == null || account.DisabledByAdmin) { httpReq.RemoveSession(); } } }); SetConfig(new EndpointHostConfig { GlobalResponseHeaders = { { "Access-Control-Allow-Origin", "*" }, { "Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS" }, }, EnableFeatures = (serverSettings.ServerData.ShowAPIMetadata ? Feature.All : Feature.All.Remove(Feature.Metadata)) }); ContentTypeFilters.Register("text/x-csv", CsvCustomSerializer.SerializeToStream, CsvCustomSerializer.DeserializeFromStream); ResponseFilters.Add((req, res, dto) => { if (req.ResponseContentType == "text/x-csv") { res.AddHeader(HttpHeaders.ContentDisposition, string.Format("attachment;filename={0}.csv", req.OperationName)); } }); Log.Info("Configure AppHost finished"); }