forked from Altonymous/forum
/
server.go
48 lines (37 loc) · 1.41 KB
/
server.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
package main
import (
"log"
"github.com/altonymous/forum/controllers"
"github.com/altonymous/forum/models"
"github.com/hoisie/web"
)
func generateRoutes() {
log.Println("starting route generation")
generateResourceRoutes(&controllers.Forums{})
generateResourceRoutes(&controllers.Topics{})
generateResourceRoutes(&controllers.Posts{})
generateResourceRoutes(&controllers.Users{})
log.Println("finished route generation")
}
func generateResourceRoutes(resource controllers.Controllers) {
resourceString := controllers.FriendlyName(resource)
models.SetupTable(resourceString)
log.Printf(" - starting /%s routes generation\n", resourceString)
web.Get("(?i)/"+resourceString+"/?", resource.Index)
web.Get("(?i)/"+resourceString+"/(\\d*)", resource.Show)
web.Get("(?i)/"+resourceString+"/new/?", resource.New)
web.Get("(?i)/"+resourceString+"/(\\d*)", resource.Edit)
web.Post("(?i)/"+resourceString+"/?", resource.Create)
web.Put("(?i)/"+resourceString+"/(\\d*)", resource.Update)
web.Delete("(?i)/"+resourceString+"/(\\d*)", resource.Delete)
log.Printf(" - finished /%s routes generation\n", resourceString)
}
func startServer(port string) {
models.SetDatabase(&globalConfiguration.Database)
web.Get("/?", index)
generateRoutes()
web.Run("0.0.0.0:" + port)
}
func index(webContext *web.Context) {
webContext.WriteString("Powered by <a href=\"http://www.github.com/Altonymous/forum/\">Altonymous forum!</a>")
}