mirror of
https://github.com/mentos1386/zdravko.git
synced 2024-11-25 17:05:21 +00:00
55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
"net/http"
|
|
|
|
"github.com/gorilla/mux"
|
|
|
|
"code.tjo.space/mentos1386/zdravko/internal"
|
|
"code.tjo.space/mentos1386/zdravko/internal/handlers"
|
|
"code.tjo.space/mentos1386/zdravko/web/static"
|
|
)
|
|
|
|
func main() {
|
|
config := internal.NewConfig()
|
|
|
|
r := mux.NewRouter()
|
|
|
|
db, query, err := internal.ConnectToDatabase(config.SQLITE_DB_PATH)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
log.Println("Connected to database")
|
|
|
|
h := handlers.NewBaseHandler(db, query, config)
|
|
|
|
// Health
|
|
r.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
|
|
d, err := db.DB()
|
|
if err != nil {
|
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
}
|
|
err = d.Ping()
|
|
if err != nil {
|
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
}
|
|
_, err = w.Write([]byte("OK"))
|
|
if err != nil {
|
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
}
|
|
})
|
|
|
|
// Server static files
|
|
r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.FS(static.Static))))
|
|
|
|
r.HandleFunc("/", h.Index).Methods("GET")
|
|
r.HandleFunc("/settings", h.Settings).Methods("GET")
|
|
|
|
// OAuth2
|
|
r.HandleFunc("/oauth2/login", h.OAuth2LoginGET).Methods("GET")
|
|
r.HandleFunc("/oauth2/callback", h.OAuth2CallbackGET).Methods("GET")
|
|
|
|
log.Println("Server started on", config.PORT)
|
|
log.Fatal(http.ListenAndServe(":"+config.PORT, r))
|
|
}
|