public override void Configure(Container container) { PreRequestFilters.Add((req, res) => { var roleHeader = req.GetHeader("X-role"); if (roleHeader == null) { return; } req.Items[Keywords.Session] = new AuthUserSession { UserAuthId = "1", UserAuthName = "test", Roles = new List <string> { roleHeader } }; }); ServiceExceptionHandlers.Add((req, dto, ex) => { return(DtoUtils.CreateErrorResponse(dto, ex)); }); }
public override void Configure(Container container) { PreRequestFilters.Add((req, res) => { req.UseBufferedStream = true; res.UseBufferedStream = true; }); }
public void EnableBuffering() { PreRequestFilters.Add((req, res) => { req.UseBufferedStream = true; res.UseBufferedStream = true; }); }
public override void Configure(Funq.Container container) { //register any dependencies your services use, e.g: //container.Register<ICacheClient>(new MemoryCacheClient()); PreRequestFilters.Add((httpReq, httpRes) => { httpReq.UseBufferedStream = true; }); }
public override void Configure(Container container) { // Global Configurations SetConfig(new HostConfig { DefaultContentType = MimeTypes.Json, EnableFeatures = Feature.Json, PreferredContentTypes = new List <string> { MimeTypes.Json }, MapExceptionToStatusCode = { { typeof(InabilityToProcessPayloadException), (int)HttpStatusCode.BadRequest }, } }); // Exception Handlers ServiceExceptionHandlers.Add((httpReq, request, exception) => { var message = exception.Message; Log.Error(message); Log.Error(exception.GetResponseBody()); Log.Info(httpReq.AbsoluteUri); return(exception is DeclinePaymentException ? new HttpResult( ProcessDto.GetErrorResponse(httpReq.AbsoluteUri, message, ((DeclinePaymentException)exception).ErrorCode), HttpStatusCode.OK) : new HttpResult(null, HttpStatusCode.BadRequest)); }); UncaughtExceptionHandlers.Add((req, res, operationName, ex) => { Log.Error(ex.GetResponseBody()); res.StatusCode = ex is SerializationException ? (int)HttpStatusCode.BadRequest : (int)HttpStatusCode.InternalServerError; res.EndRequest(true); }); // Global Filters PreRequestFilters.Add((req, res) => { Log.Info($"{HTTP_HEADER.HOST} : {req.UserHostAddress}"); Log.Info($"{HTTP_HEADER.USER_AGENT} : {req.UserAgent}"); Log.Info($"{HTTP_HEADER.CONTENT_LENGTH} : {req.ContentLength}"); Log.Info($"{HTTP_HEADER.CONTENT_TYPE} : {req.ContentType}"); Log.Info($"{HTTP_HEADER.ACCEPT} : {req.AcceptTypes}"); Simulate500Error.CallMqServer(); }); // Validations Plugins.Add(new ValidationFeature()); container.RegisterValidators(typeof(MerchantPaymentValidator).Assembly, typeof(MerchantPaymentAdviceValidator).Assembly, typeof(CashInValidator).Assembly, typeof(CashInAdviceValidator).Assembly, typeof(CashOutValidator).Assembly, typeof(CashOutAdviceValidator).Assembly); // IoC container.RegisterAutoWiredAs <AppSettings, IAppSettings>(); }
/// <summary> /// AppHostHttpListenerBase method. /// </summary> /// <param name="container">SS's funq container</param> public override void Configure(Funq.Container container) { HostContext.Config.GlobalResponseHeaders.Clear(); PreRequestFilters.Add((req, res) => req.UseBufferedStream = res.UseBufferedStream = true); //Signal advanced web browsers what HTTP Methods you accept //base.SetConfig(new EndpointHostConfig()); Routes.Add <PlainText>("/test/plaintext", "GET"); }
/// <summary> /// Configure the given container with the registrations provided by the funqlet. /// </summary> /// <param name="container">Container to register.</param> public override void Configure(Container container) { Log.Info("Starting service..."); // Set up base configuration const Feature disableFeatures = Feature.Soap | Feature.Xml | Feature.Csv | Feature.Jsv; SetConfig(new EndpointHostConfig { EnableFeatures = Feature.All.Remove(disableFeatures), #if DEBUG DebugMode = true, #endif DefaultContentType = ContentType.Json }); // Set JSON services to return "camelCase" rather than "CamelCase" JsConfig.EmitCamelCaseNames = true; // Set dates to serialize to ISO-8601 dates JsConfig.DateHandler = JsonDateHandler.ISO8601; // Don't serialize type information JsConfig.ExcludeTypeInfo = true; // Set up authentication service Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new MoshAppAuthProvider() }) { ServiceRoutes = new Dictionary <Type, string[]> { { typeof(AuthService), new[] { "/authenticate" } }, }, HtmlRedirect = null, IncludeAssignRoleServices = false, }); // Enable CORS (Cross-Origin Resource Sharing) // http://stackoverflow.com/questions/8211930/servicestack-rest-api-and-cors Plugins.Add(new CorsFeature()); PreRequestFilters.Add((req, res) => { if (req.HttpMethod == "OPTIONS") { res.EndServiceStackRequest(); } }); container.Register((Global.Cache = new MemoryCacheClient())); Log.Debug(Config.Metadata.Dump()); Log.Info("Service started!"); Log.Debug("Debug mode is {0}!".F(Config.DebugMode ? "ON" : "OFF")); }
public override void Configure(Container container) { Plugins.Add(new CsvFormat()); //required to allow .csv ContentTypes.Register(MimeTypes.PlainText, (req, o, stream) => JsonSerializer.SerializeToStream(o.GetType(), stream), JsonSerializer.DeserializeFromStream); PreRequestFilters.Add((req, res) => { if (req.ContentType.MatchesContentType(MimeTypes.PlainText)) { req.ResponseContentType = MimeTypes.Json; } }); }
public override void Configure(Funq.Container container) { JsConfig.EmitCamelCaseNames = true; JsConfig.DateHandler = DateHandler.ISO8601; Plugins.Add(new CorsFeature(allowedOrigins: "*", allowedMethods: "GET, POST, PUT, DELETE, OPTIONS", allowedHeaders: "Content-Type, authToken, accept, authorization", allowCredentials: false)); var emitGlobalHeadersHandler = new CustomActionHandler((httpReq, httpRes) => httpRes.EndRequest()); RawHttpHandlers.Add(httpReq => httpReq.HttpMethod == HttpMethods.Options ? emitGlobalHeadersHandler : null); PreRequestFilters.Add((req, res) => req.UseBufferedStream = true); }
public override void Configure(Container container) { PreRequestFilters.Add((httpReq, httpRes) => { if (UseBufferredStream) { httpReq.UseBufferedStream = UseBufferredStream; } LastRequestBody = null; LastRequestBody = httpReq.GetRawBody(); }); Plugins.Add(new RequestLogsFeature { EnableRequestBodyTracking = EnableRequestBodyTracking }); }
public override void Configure(Container container) { HostConfig.Instance.DefaultRedirectPath = DefaultRedirectPath; HostConfig.Instance.LogUnobservedTaskExceptions = false; HostConfig.Instance.MapExceptionToStatusCode = new Dictionary <Type, int> { { typeof(InvalidOperationException), 422 }, { typeof(ResourceNotFoundException), 404 }, { typeof(FileNotFoundException), 404 }, { typeof(DirectoryNotFoundException), 404 }, { typeof(SecurityException), 401 }, { typeof(PaymentRequiredException), 402 }, { typeof(UnauthorizedAccessException), 500 }, { typeof(ApplicationException), 500 } }; HostConfig.Instance.DebugMode = false; HostConfig.Instance.LogFactory = LogManager.LogFactory; // The Markdown feature causes slow startup times (5 mins+) on cold boots for some users // Custom format allows images HostConfig.Instance.EnableFeatures = Feature.Csv | Feature.Html | Feature.Json | Feature.Jsv | Feature.Metadata | Feature.Xml | Feature.CustomFormat; container.Adapter = _containerAdapter; Plugins.Add(new SwaggerFeature()); Plugins.Add(new CorsFeature(allowedHeaders: "Content-Type, Authorization, Range, X-MediaBrowser-Token, X-Emby-Authorization")); //Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { // new SessionAuthProvider(_containerAdapter.Resolve<ISessionContext>()), //})); PreRequestFilters.Add((httpReq, httpRes) => { //Handles Request and closes Responses after emitting global HTTP Headers if (string.Equals(httpReq.Verb, "OPTIONS", StringComparison.OrdinalIgnoreCase)) { httpRes.EndRequest(); //add a 'using ServiceStack;' } }); HostContext.GlobalResponseFilters.Add(new ResponseFilter(_logger).FilterResponse); }
// http://localhost:5000/auth/[email protected]&&password=!Abc1234 // Configure your AppHost with the necessary configuration and dependencies your App needs public override void Configure(Container container) { // enable server-side rendering, see: https://sharpscript.net Plugins.Add(new SharpPagesFeature()); if (Config.DebugMode) { Plugins.Add(new HotReloadFeature()); } Plugins.Add(new RazorFormat()); // enable ServiceStack.Razor SetConfig(new HostConfig { AddRedirectParamsToQueryString = true, DebugMode = AppSettings.Get(nameof(HostConfig.DebugMode), false), UseSameSiteCookies = true, // prevents OAuth providers which use Sessions like Twitter from working UseSecureCookies = true, }); var cache = container.Resolve <ICacheClient>(); Plugins.Add(new ValidationFeature()); // Svg.CssFillColor["svg-auth"] = "#ccc"; Svg.CssFillColor["svg-icons"] = "#e33"; this.CustomErrorHttpHandlers[HttpStatusCode.NotFound] = new RazorHandler("/notfound"); this.CustomErrorHttpHandlers[HttpStatusCode.Forbidden] = new SharpPageHandler("/forbidden"); PreRequestFilters.Add((req, res) => { $"CALLED for: {req.PathInfo}".PrintDump(); }); // TypeScriptGenerator.TypeFilter = (type, args) => { // if (type == "ResponseBase`1" && args[0] == "Dictionary<String,List`1>") // return "ResponseBase<Map<string,Array<any>>>"; // return null; // }; //GetPlugin<SvgFeature>().ValidateFn = req => Config.DebugMode; // only allow in DebugMode }
public override void Configure(Container container) { PreRequestFilters.Add((req, res) => { var roleHeader = req.GetHeader("X-role"); if (roleHeader == null) { return; } req.Items[Keywords.Session] = new AuthUserSession { UserAuthId = "1", UserAuthName = "test", Roles = new List <string> { roleHeader } }; }); }
public override void Configure(Container container) { SetConfig(new EndpointHostConfig { AllowJsonpRequests = true }); JsConfig.EmitCamelCaseNames = true; JsConfig.DateHandler = JsonDateHandler.ISO8601; Plugins.Add(new CorsFeature()); PreRequestFilters.Add((httpReq, httpRes) => { if (httpReq.HttpMethod == "OPTIONS") { httpRes.EndRequest(); } }); }
public override void Configure(Container container) { SetConfig(new HostConfig { AllowRouteContentTypeExtensions = true }); Plugins.Add(new CsvFormat()); //required to allow .csv Plugins.RemoveAll(x => x is MarkdownFormat); ContentTypes.Register(MimeTypes.PlainText, (req, o, stream) => JsonSerializer.SerializeToStream(o.GetType(), stream), JsonSerializer.DeserializeFromStream); PreRequestFilters.Add((req, res) => { if (req.ContentType.MatchesContentType(MimeTypes.PlainText)) { req.ResponseContentType = MimeTypes.Json; } }); }
public override void Configure(Container container) { JsConfig.DateHandler = DateHandler.ISO8601; var appSettings = new AppSettings(); ServiceExceptionHandlers.Add((httpReq, request, exception) => { var logger = LogManager.GetLogger(GetType()); logger.Error(exception); return(null); }); container.Register <ICacheClient>(new MemoryCacheClient { FlushOnDispose = false }); JsConfig.AssumeUtc = true; container.RegisterAs <FordereAuthEventHandler, IAuthEvents>(); container.Register <IDbConnectionFactory>( new OrmLiteConnectionFactory( "Server = {0}; Database = {1}; Uid = {2}; Pwd = {3}".Fmt( appSettings.Get("DB.Host"), appSettings.Get("DB.Name"), appSettings.Get("DB.User"), appSettings.Get("DB.Pass")), MySqlDialect.Provider)); container.Register <IUserAuthRepository>(c => new OrmLiteAuthRepository(c.Resolve <IDbConnectionFactory>())); var authProvider = new IAuthProvider[] { new CredentialsAuthProvider(), new JwtAuthProvider(appSettings), }.ToList(); if (appSettings.Get("Debug", false)) { authProvider.Add(new BasicAuthProvider()); } var authFeature = new AuthFeature(() => new FordereAuthUserService(), authProvider.ToArray()); this.Plugins.Add(new RegistrationFeature()); this.Plugins.Add(authFeature); this.Plugins.Add(new RequestLogsFeature { // do not log request bodies of requests containing passwords HideRequestBodyForRequestDtoTypes = new[] { typeof(Authenticate), typeof(Register), typeof(UpdateUserProfileRequest) }, }); if (appSettings.Get("CORS.Enabled", false)) { this.Plugins.Add( new CorsFeature( allowedOrigins: appSettings.GetString("CORS.AllowedOrigins"), allowedMethods: "OPTIONS,GET,POST,PUT,DELETE,PATCH", allowedHeaders: "Content-Type,Authorization,division_id", allowCredentials: true)); } if (appSettings.Get("Debug", false)) { this.Plugins.Add(new PostmanFeature()); this.Plugins.Add(new OpenApiFeature()); } if (appSettings.Get("Debug", false) == false) { this.Plugins.RemoveAll(x => x is MetadataFeature); } this.SetConfig(new HostConfig { // TODO SSH This sets ss-pid/ss-opt to NOT HttpOnly.. is this a security issue? AllowNonHttpOnlyCookies = true, DebugMode = appSettings.Get("Debug", false) }); this.RegisterTypedRequestFilter <ICaptchaRequest>(Filter.Captcha); this.RegisterTypedRequestFilter <EnterMatchAppointmentRequest>(Filter.EnterMatchAppointment); this.RegisterTypedRequestFilter <EnterMatchResultRequest>(Filter.EnterMatchResult); this.RegisterTypedResponseFilter <TeamDto>(Filter.TeamPlayerDetails); PreRequestFilters.Add((httpReq, httpRes) => { if (httpReq.Verb.ToUpper() == "PATCH") { httpReq.UseBufferedStream = true; } }); }