-
Notifications
You must be signed in to change notification settings - Fork 4
/
Program.fs
94 lines (77 loc) · 2.42 KB
/
Program.fs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
module examples.App
open System
open Giraffe
open Microsoft.AspNetCore.Hosting
open Microsoft.Extensions.DependencyInjection
open Microsoft.AspNetCore.Builder
open Microsoft.Extensions.Logging
open Microsoft.AspNetCore
open Feliz.ViewEngine
// ---------------------------------
// Models
// ---------------------------------
type Message = {
Text : string
}
// ---------------------------------
// Views
// ---------------------------------
module Views =
let layout (content: ReactElement list) =
Html.html [
Html.head [
Html.title "examples"
Html.link [
prop.rel "stylesheet"
prop.type' "text/css"
prop.href "/main.css"
]
]
Html.body [
prop.style [ style.fontFamily("Arial, Helvetica, sans-serif"); style.color("#333") ]
prop.children content
]
]
let partial () =
Html.h1 [
prop.style [ style.fontSize(100); style.color("#137373") ]
prop.text "examples"
]
let index (model : Message) =
[
partial ()
Html.p [ Html.text model.Text ]
] |> layout
// ---------------------------------
// Web app
// ---------------------------------
let indexHandler (name : string) =
let greetings = sprintf "Hello %s, from Giraffe!" name
let model = { Text = greetings }
let view = Views.index model
htmlString (Render.htmlDocument view)
let webApp : HttpHandler =
choose [
GET >=>
choose [
route "/" >=> indexHandler "world"
routef "/hello/%s" indexHandler
]
setStatusCode 404 >=> text "Not Found" ]
type Startup() =
member __.ConfigureServices (services : IServiceCollection) =
// Register default Giraffe dependencies
services.AddGiraffe() |> ignore
member __.Configure (app: IApplicationBuilder) (env: IWebHostEnvironment) (loggerFactory: ILoggerFactory) =
// Add Giraffe to the ASP.NET Core pipeline
app.UseGiraffe webApp
let port = 8080
[<EntryPoint>]
let main _ =
WebHost
.CreateDefaultBuilder()
.UseStartup<Startup>()
.UseUrls("http://0.0.0.0:" + port.ToString () + "/")
.Build()
.Run()
0