|
|
- package Webserver
-
- import (
- "net/http"
- "path/filepath"
-
- "PersonalWebsite/Variables"
-
- "github.com/gorilla/mux"
- )
-
- var (
- WebRoot string
- )
-
- func init() {
- WebRoot = filepath.Join(
- Variables.ProjectRoot,
- "/web",
- )
- }
-
- func webRootJoin(p string) string {
- return filepath.Join(
- WebRoot,
- p,
- )
- }
-
- func Start() error {
- var (
- r *mux.Router
- e error
- )
-
- r = mux.NewRouter()
-
- // For images / anything static
- r.PathPrefix("/static/").Handler(
- http.StripPrefix("/static/",
- http.FileServer(http.Dir(webRootJoin("static"))),
- ),
- )
-
- // Handle CSS
- r.PathPrefix("/css/").Handler(
- http.StripPrefix("/css/",
- http.FileServer(http.Dir(webRootJoin("css"))),
- ),
- )
-
- // Handle JS
- r.PathPrefix("/js/").Handler(
- http.StripPrefix("/js/",
- http.FileServer(http.Dir(webRootJoin("js"))),
- ),
- )
-
- // Interface endpoints
- r.HandleFunc("/", ViewIndex)
- r.HandleFunc("/post/{id}", ViewPost)
-
- // Administration
- r.HandleFunc("/admin", AdminView)
- r.HandleFunc("/admin/login", AdminLogin)
- r.HandleFunc("/admin/post/new", AdminNewPost)
- r.HandleFunc("/admin/post/{id}/edit", AdminEditPost)
-
- e = http.ListenAndServe(Variables.WebserverHost, r)
- if e != nil {
- return e
- }
-
- return nil
- }
|