navigation

ApplicationBuilder

Namespace: Saturn
Parent: Application

Computation expression used to configure Saturn application. Under the hood it's using ASP.NET application configurations interfaces such as IWebHostBuilder, IServiceCollection, IApplicationBuilder and others. It aims to hide cumbersome ASP.NET application configuration and enable high level, declarative application configuration using feature toggles.

Example:

let app = application {
    pipe_through endpointPipe
    use_router topRouter
    url "http://0.0.0.0:8085/"
    memory_cache
    use_static "static"
    use_gzip
}
val app : obj

Name Description
Instance Members
x.ActivateDeveloperExceptions(state)
Signature: state:ApplicationState -> ApplicationState


CE Custom Operation: use_developer_exceptions

Turns on the developer exception page, if the environment is in development mode.

x.AddChannel(state, url, channel)
Signature: (state:ApplicationState * url:string * channel:IChannel) -> ApplicationState


CE Custom Operation: add_channel

Registers channel for given url.

x.AddMimeTypes(state, mimeList)
Signature: (state:ApplicationState * mimeList:(string * string) list) -> ApplicationState


CE Custom Operation: use_mime_types

Adds MIME types definitions as a list of (extension, mime)

x.AppConfig(state, config)
Signature: (state:ApplicationState * config:(IApplicationBuilder -> IApplicationBuilder)) -> ApplicationState


CE Custom Operation: app_config

Adds custom application configuration step.

x.CliArguments(state, args)
Signature: (state:ApplicationState * args:string array) -> ApplicationState


CE Custom Operation: cli_arguments

Sets the cli arguments for the IWebHostBuilder to enable default command line configuration and functionality.

x.ConfigJSONSerializer(state, settings)
Signature: (state:ApplicationState * settings:JsonSerializerSettings) -> ApplicationState


CE Custom Operation: use_json_settings

Configures built in JSON.Net (de)serializer with custom settings.

x.ConfigXMLSerializer(state, settings)
Signature: (state:ApplicationState * settings:XmlWriterSettings) -> ApplicationState


CE Custom Operation: use_xml_settings

Configures built in XML (de)serializer with custom settings.

x.DisableDiagnostics(state)
Signature: state:'?39607 -> '?39607


CE Custom Operation: disable_diagnostics

Disables generation of diagnostic files that can be used by Saturn tooling.

x.EndpointRouter(state, routes)
Signature: (state:ApplicationState * routes:Endpoint list) -> ApplicationState


CE Custom Operation: use_endpoint_router

Defines top-level endpoint router used for the application

x.ErrorHandler(state, handler)
Signature: (state:ApplicationState * handler:ErrorHandler) -> ApplicationState


CE Custom Operation: error_handler

Adds error/not-found handler for current scope

x.ForceSSL(state)
Signature: state:ApplicationState -> ApplicationState


CE Custom Operation: force_ssl

Redirect all HTTP request to HTTPS

x.HostConfig(state, config)
Signature: (state:ApplicationState * config:(IHostBuilder -> IHostBuilder)) -> ApplicationState


CE Custom Operation: host_config

Adds custom generic host (IHostBuilder) configuration step. Configuration for web host should use webhost_config instead.

x.ListenLocal(state, portNumber, listenOptions)
Signature: (state:ApplicationState * portNumber:int * listenOptions:(ListenOptions -> unit)) -> ApplicationState


CE Custom Operation: listen_local

Listens on ::1 and 127.0.0.1 with the given port. Requesting a dynamic port by specifying 0 is not supported for this type of endpoint

x.Logging(state, config)
Signature: (state:ApplicationState * config:(ILoggingBuilder -> unit)) -> ApplicationState


CE Custom Operation: logging

Adds logging configuration.

x.MemoryCache(state)
Signature: state:ApplicationState -> ApplicationState


CE Custom Operation: memory_cache

Enables in-memory session cache

x.NoRouter(state)
Signature: state:ApplicationState -> ApplicationState


CE Custom Operation: no_router

Disable warning message about lack of router definition. Should be used for channels-only or gRPC applications.

x.NoWebhost(state)
Signature: state:ApplicationState -> ApplicationState


CE Custom Operation: no_webhost

Disables any configuration of webhost. Could be used for generic IHostBuilder applications not using Kestrel/IIS

x.PipeThrough(state, pipe)
Signature: (state:ApplicationState * pipe:HttpHandler) -> ApplicationState


CE Custom Operation: pipe_through

Adds pipeline to the list of pipelines that will be used for every request

x.Router(state, handler)
Signature: (state:ApplicationState * handler:HttpHandler) -> ApplicationState


CE Custom Operation: use_router

Defines top-level router used for the application

x.Run(state)
Signature: state:ApplicationState -> IHostBuilder

x.ServiceConfig(state, config)
Signature: (state:ApplicationState * config:(IServiceCollection -> IServiceCollection)) -> ApplicationState


CE Custom Operation: service_config

Adds custom service configuration step.

x.Url(state, url)
Signature: (state:ApplicationState * url:string) -> ApplicationState


CE Custom Operation: url

Adds url

x.UseAntiforgery(state)
Signature: state:ApplicationState -> ApplicationState


CE Custom Operation: use_antiforgery

Enables use of the protectFromForgery pipeline component and the CSRF features in general.

x.UseAntiforgeryWithConfig(state, configFn)
Signature: (state:ApplicationState * configFn:(AntiforgeryOptions -> unit)) -> ApplicationState


CE Custom Operation: use_antiforgery_with_config

Enables use of the protectFromForgery pipeline component and the CSRF features in general. This overload allows for custom configuration of the subsystem, for more information see the AntiforgeryOptions class at https://github.com/aspnet/Antiforgery/blob/dev/src/Microsoft.AspNetCore.Antiforgery/AntiforgeryOptions.cs

x.UseConfig(state, configBuilder)
Signature: (state:ApplicationState * configBuilder:(IConfiguration -> 'a)) -> ApplicationState


CE Custom Operation: use_config
x.UseCookiesAuth(state, issuer)
Signature: (state:ApplicationState * issuer:string) -> ApplicationState


CE Custom Operation: use_cookies_authentication

Enables default cookies authentication

x.UseCookiesAuthConfig(state, options)
Signature: (state:ApplicationState * options:(CookieAuthenticationOptions -> unit)) -> ApplicationState


CE Custom Operation: use_cookies_authentication_with_config

Enables cookies authentication with custom configuration

x.UseCors(state, policy, policyConfig)
Signature: (state:ApplicationState * policy:string * policyConfig:(CorsPolicyBuilder -> unit)) -> ApplicationState


CE Custom Operation: use_cors

Enables application level CORS protection

x.UseCustomJSONSerializer(state, serializer)
Signature: (state:ApplicationState * serializer:'?39613) -> ApplicationState


CE Custom Operation: use_json_serializer

Replaces built in JSON.Net (de)serializer with custom serializer

x.UseCustomXMLSerializer(state, serializer)
Signature: (state:ApplicationState * serializer:'?39616) -> ApplicationState


CE Custom Operation: use_xml_serializer

Replaces built in XML (de)serializer with custom serializer

x.UseGZip(state)
Signature: state:ApplicationState -> ApplicationState


CE Custom Operation: use_gzip

Enables gzip compression

x.UseIIS(state)
Signature: state:ApplicationState -> ApplicationState


CE Custom Operation: use_iis

Enables IIS integration

x.UseJWTAuth(state, secret, issuer)
Signature: (state:ApplicationState * secret:string * issuer:string) -> ApplicationState


CE Custom Operation: use_jwt_authentication

Enables default JWT authentication

x.UseJWTAuthConfig(state, config)
Signature: (state:ApplicationState * config:(JwtBearerOptions -> unit)) -> ApplicationState


CE Custom Operation: use_jwt_authentication_with_config

Enables JWT authentication with custom configuration

x.UseOAuthWithConfig(state, name, config)
Signature: (state:ApplicationState * name:string * config:(OAuthOptions -> unit)) -> ApplicationState


CE Custom Operation: use_oauth_with_config

Enables OAuth authentication with custom configuration

x.UseOAuthWithSettings(state, clientId, clientSecret, settings)
Signature: (state:ApplicationState * clientId:string * clientSecret:string * settings:OAuthSettings) -> ApplicationState


CE Custom Operation: use_oauth

Enables simple custom OAuth authentication using parmeters provided with OAuth.OAuthSettings record. Can be used to quickly implement default OAuth authentication for 3rd party providers.

x.UsePolicy(state, policy, evaluator)
Signature: (state:ApplicationState * policy:string * evaluator:(AuthorizationHandlerContext -> bool)) -> ApplicationState


CE Custom Operation: use_policy

Add custom policy, taking an AuthorizationHandlerContext -> bool

x.UseStatic(state, path)
Signature: (state:ApplicationState * path:string) -> ApplicationState


CE Custom Operation: use_static

Enables using static file hosting.

x.WebHostConfig(state, config)
Signature: (state:ApplicationState * config:(IWebHostBuilder -> IWebHostBuilder)) -> ApplicationState


CE Custom Operation: webhost_config

Adds custom web host configuration step.

x.Yield(arg1)
Signature: '?39576 -> ApplicationState