aboutsummaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go52
1 files changed, 37 insertions, 15 deletions
diff --git a/main.go b/main.go
index f367922..e106a80 100644
--- a/main.go
+++ b/main.go
@@ -2,21 +2,23 @@ package main
2 2
3import ( 3import (
4 "database/sql" 4 "database/sql"
5 "fmt"
5 "log" 6 "log"
6 "net/http" 7 "net/http"
7 8
8 login "fagott.pw/charakterin" 9 "fagott.pw/charakterin"
9 "fagott.pw/grilist/frontend" 10 "fagott.pw/grilist/frontend"
11 "fagott.pw/grilist/grilist"
12 "fagott.pw/grilist/modules/lists"
10 13
11 "github.com/julienschmidt/httprouter" 14 "github.com/julienschmidt/httprouter"
12 _ "github.com/lib/pq" 15 _ "github.com/lib/pq"
13) 16)
14 17
15var renderer *frontend.Renderer 18var app *grilist.Grilist
16var charakterin *login.Charakterin
17 19
18func index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { 20func index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
19 user, err := charakterin.GetUserFromRequest(r) 21 user, err := app.Charakterin.GetUserFromRequest(r)
20 if err != nil { 22 if err != nil {
21 http.Redirect(w, r, "/login", 302) 23 http.Redirect(w, r, "/login", 302)
22 return 24 return
@@ -25,11 +27,19 @@ func index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
25 data := make(map[string]interface{}) 27 data := make(map[string]interface{})
26 28
27 data["username"] = user.GetName() 29 data["username"] = user.GetName()
28 renderer.RenderPage("index", w, data) 30 app.Renderer.RenderPage("index", w, data)
31}
32
33func loadModule(mod grilist.Module) error {
34 if _, ok := app.Modules[mod.Name()]; ok {
35 return fmt.Errorf("module with name %s already exists", mod.Name())
36 }
37 app.Modules[mod.Name()] = mod
38 return nil
29} 39}
30 40
31func main() { 41func main() {
32 config := LoadConfig() 42 config := grilist.LoadConfig()
33 db, err := sql.Open("postgres", config.DBConnectionString()) 43 db, err := sql.Open("postgres", config.DBConnectionString())
34 if err != nil { 44 if err != nil {
35 log.Fatal(err) 45 log.Fatal(err)
@@ -40,22 +50,34 @@ func main() {
40 50
41 log.Println("database connection established") 51 log.Println("database connection established")
42 52
43 renderer = frontend.New("views") 53 renderer := frontend.New("views")
44 charakterin = login.New(db) 54 login := charakterin.New(db)
45 charakterin.UseRenderer(renderer) 55 login.UseRenderer(renderer)
46 56
47 router := httprouter.New() 57 router := httprouter.New()
48 router.HandlerFunc("GET", "/login", charakterin.DisplayLogin) 58
49 router.HandlerFunc("POST", "/login", charakterin.Login) 59 app = &grilist.Grilist{
50 router.HandlerFunc("GET", "/logout", charakterin.Logout) 60 config,
51 router.HandlerFunc("GET", "/register", charakterin.DisplayRegistration) 61 renderer,
52 router.HandlerFunc("POST", "/register", charakterin.Register) 62 login,
63 db,
64 make(map[string]grilist.Module),
65 router,
66 }
67
68 router.HandlerFunc("GET", "/login", login.DisplayLogin)
69 router.HandlerFunc("POST", "/login", login.Login)
70 router.HandlerFunc("GET", "/logout", login.Logout)
71 router.HandlerFunc("GET", "/register", login.DisplayRegistration)
72 router.HandlerFunc("POST", "/register", login.Register)
53 router.GET("/", index) 73 router.GET("/", index)
54 74
55 fs := http.FileServer(http.Dir("assets")) 75 fs := http.FileServer(http.Dir("assets"))
56 http.Handle("/assets/", http.StripPrefix("/assets/", fs)) 76 http.Handle("/assets/", http.StripPrefix("/assets/", fs))
57
58 http.Handle("/", router) 77 http.Handle("/", router)
59 78
79 // Module laden
80 loadModule(lists.New())
81
60 log.Fatal(http.ListenAndServe(":8080", nil)) 82 log.Fatal(http.ListenAndServe(":8080", nil))
61} 83}