67 lines
2.2 KiB
Go
67 lines
2.2 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/gob"
|
|
"log"
|
|
"net/http"
|
|
|
|
"lishwist/api"
|
|
"lishwist/db"
|
|
"lishwist/env"
|
|
"lishwist/router"
|
|
"lishwist/routing"
|
|
)
|
|
|
|
func main() {
|
|
gob.Register(&api.RegisterProps{})
|
|
gob.Register(&api.LoginProps{})
|
|
|
|
err := db.Open()
|
|
if err != nil {
|
|
log.Fatalf("Failed to open DB: %s\n", err)
|
|
}
|
|
err = db.Init()
|
|
if err != nil {
|
|
log.Fatalf("Failed to init DB: %s\n", err)
|
|
}
|
|
|
|
store, err := db.NewSessionStore()
|
|
if err != nil {
|
|
log.Fatalf("Failed to initialize session store: %s\n", err)
|
|
}
|
|
store.Options.MaxAge = 86_400
|
|
store.Options.Secure = !env.InDev
|
|
store.Options.HttpOnly = true
|
|
|
|
r := router.New(store)
|
|
|
|
r.Public.HandleFunc("GET /", routing.Login)
|
|
r.Public.HandleFunc("GET /group/{groupReference}", routing.PublicGroupPage)
|
|
r.Public.HandleFunc("GET /list/{userReference}", routing.PublicWishlist)
|
|
r.Public.HandleFunc("GET /register", routing.Register)
|
|
r.Public.HandleFunc("POST /", routing.LoginPost)
|
|
r.Public.HandleFunc("POST /register", routing.RegisterPost)
|
|
|
|
r.Private.HandleFunc("GET /", routing.NotFound)
|
|
r.Private.HandleFunc("GET /group/{groupReference}", routing.ExpectUser(routing.GroupPage))
|
|
r.Private.HandleFunc("GET /groups", routing.ExpectUser(routing.GroupsJson))
|
|
r.Private.HandleFunc("GET /groups/{groupReference}", routing.ExpectUser(routing.Group))
|
|
r.Private.HandleFunc("GET /list/{userReference}", routing.ExpectUser(routing.ForeignWishlist))
|
|
r.Private.HandleFunc("GET /users", routing.ExpectUser(routing.Users))
|
|
r.Private.HandleFunc("GET /users/{userReference}", routing.ExpectUser(routing.User))
|
|
r.Private.HandleFunc("GET /{$}", routing.ExpectUser(routing.Home))
|
|
r.Private.HandleFunc("POST /groups/{groupReference}", routing.ExpectUser(routing.GroupPost))
|
|
r.Private.HandleFunc("POST /list/{userReference}", routing.ExpectUser(routing.ForeignWishlistPost))
|
|
r.Private.HandleFunc("POST /logout", routing.LogoutPost)
|
|
r.Private.HandleFunc("POST /users/{userReference}", routing.ExpectUser(routing.UserPost))
|
|
r.Private.HandleFunc("POST /{$}", routing.ExpectUser(routing.HomePost))
|
|
|
|
http.Handle("/", r)
|
|
|
|
log.Printf("Running at http://127.0.0.1:%s\n", env.ServePort)
|
|
err = http.ListenAndServe(":"+env.ServePort, nil)
|
|
if err != nil {
|
|
log.Fatalln("Failed to listen and server:", err)
|
|
}
|
|
}
|