Files
lunchrun-safe/src/Server/Server.fs
2019-11-03 00:45:25 +00:00

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