4f770d01d8
Signed-off-by: Tobias Erbshäußer <tobias@tesoft.dev>
57 lines
1.5 KiB
Go
57 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
)
|
|
|
|
func main() {
|
|
port := os.Getenv("PORT")
|
|
if port == "" {
|
|
port = "8080"
|
|
}
|
|
|
|
frontendPath := os.Getenv("FRONTEND_PATH")
|
|
if frontendPath == "" {
|
|
frontendPath = "static"
|
|
}
|
|
|
|
dbPath := os.Getenv("DB_PATH")
|
|
if dbPath == "" {
|
|
dbPath = "./database.sqlite"
|
|
}
|
|
|
|
db, err := NewDatabase(dbPath)
|
|
if err != nil {
|
|
log.Fatal(err.Error())
|
|
}
|
|
defer db.Close()
|
|
|
|
apiHandler := &ApiHandler{db: db}
|
|
|
|
mux := http.NewServeMux()
|
|
mux.Handle("/", http.FileServer(http.Dir(frontendPath)))
|
|
mux.Handle("GET /api/blog", apiHandler.ProcessAuth(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
|
|
apiHandler.ServeBlogGet(writer, request)
|
|
}), false))
|
|
mux.Handle("PUT /api/blog", apiHandler.ProcessAuth(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
|
|
apiHandler.ServeBlogPut(writer, request)
|
|
}), true))
|
|
mux.Handle("GET /api/blog/{id}", apiHandler.ProcessAuth(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
|
|
apiHandler.ServeBlogGetSingle(writer, request)
|
|
}), false))
|
|
mux.Handle("GET /api/blog/{articleId}/file/{fileId}", apiHandler.ProcessAuth(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
|
|
apiHandler.ServeBlogFileGetSingle(writer, request)
|
|
}), false))
|
|
mux.HandleFunc("/api/", func(writer http.ResponseWriter, request *http.Request) {
|
|
http.NotFound(writer, request)
|
|
})
|
|
|
|
log.Println("Listening on port", port)
|
|
err = http.ListenAndServe(":"+port, mux)
|
|
if err != nil {
|
|
log.Fatalln(err.Error())
|
|
}
|
|
}
|