46 lines
1.3 KiB
Forth
46 lines
1.3 KiB
Forth
open System.IO
|
|
open System.Threading.Tasks
|
|
|
|
open Microsoft.AspNetCore.Builder
|
|
open Microsoft.Extensions.DependencyInjection
|
|
open FSharp.Control.Tasks.V2
|
|
open Giraffe
|
|
open Saturn
|
|
open Shared
|
|
|
|
open Microsoft.WindowsAzure.Storage
|
|
|
|
let tryGetEnv = System.Environment.GetEnvironmentVariable >> function null | "" -> None | x -> Some x
|
|
|
|
let publicPath = tryGetEnv "public_path" |> Option.defaultValue "../Client/public" |> Path.GetFullPath
|
|
let storageAccount = tryGetEnv "STORAGE_CONNECTIONSTRING" |> Option.defaultValue "UseDevelopmentStorage=true" |> CloudStorageAccount.Parse
|
|
|
|
let port =
|
|
"SERVER_PORT"
|
|
|> tryGetEnv |> Option.map uint16 |> Option.defaultValue 8085us
|
|
|
|
let webApp = router {
|
|
get "/api/init" (fun next ctx ->
|
|
task {
|
|
let counter = {Value = 42}
|
|
return! json counter next ctx
|
|
})
|
|
}
|
|
|
|
let configureAzure (services:IServiceCollection) =
|
|
tryGetEnv "APPINSIGHTS_INSTRUMENTATIONKEY"
|
|
|> Option.map services.AddApplicationInsightsTelemetry
|
|
|> Option.defaultValue services
|
|
|
|
let app = application {
|
|
url ("http://0.0.0.0:" + port.ToString() + "/")
|
|
use_router webApp
|
|
memory_cache
|
|
use_static publicPath
|
|
use_json_serializer(Thoth.Json.Giraffe.ThothSerializer())
|
|
service_config configureAzure
|
|
use_gzip
|
|
}
|
|
|
|
run app
|