-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
63 lines (48 loc) · 1.45 KB
/
main.go
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
package main
import (
"strings"
"github.com/aerogo/aero"
"github.com/konnakanji/konnakanji/assets"
"github.com/konnakanji/konnakanji/components"
)
func main() {
app := aero.New()
configure(app).Run()
}
func configure(app *aero.Application) *aero.Application {
configureHTTPS(app)
assets.Load()
appCode := func(ctx aero.Context) error {
return ctx.HTML(components.Layout(ctx))
}
app.Get("/", appCode)
app.Get("/test/*name", appCode)
app.Get("/scripts", func(ctx aero.Context) error {
return ctx.JavaScript(assets.JS)
})
app.Get("/styles", func(ctx aero.Context) error {
return ctx.CSS(assets.CSS)
})
app.Get("/manifest.json", func(ctx aero.Context) error {
return ctx.JSON(assets.Manifest)
})
app.Get("/words/*file", func(ctx aero.Context) error {
return ctx.File("words/" + ctx.Get("file"))
})
app.Get("/images/*file", func(ctx aero.Context) error {
return ctx.File("images/" + ctx.Get("file"))
})
app.Get("/service-worker", func(ctx aero.Context) error {
return ctx.File("scripts/ServiceWorker/ServiceWorker.js")
})
// Send "Link" header for Cloudflare on HTML responses
app.Use(func(next aero.Handler) aero.Handler {
return func(ctx aero.Context) error {
if !strings.HasPrefix(ctx.Path(), "/_/") && strings.Contains(ctx.Request().Header("Accept"), "text/html") {
ctx.Response().SetHeader("Link", "</styles>; rel=preload; as=style,</scripts>; rel=preload; as=script")
}
return next(ctx)
}
})
return app
}