diff options
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 52 |
1 files changed, 37 insertions, 15 deletions
@@ -2,21 +2,23 @@ package main | |||
2 | 2 | ||
3 | import ( | 3 | import ( |
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 | ||
15 | var renderer *frontend.Renderer | 18 | var app *grilist.Grilist |
16 | var charakterin *login.Charakterin | ||
17 | 19 | ||
18 | func index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { | 20 | func 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 | |||
33 | func 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 | ||
31 | func main() { | 41 | func 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 | } |