forked from alterminal/alterminal
重組前檢查點:根目錄 main package
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"github.com/go-chi/chi/v5"
|
||||
"github.com/go-chi/chi/v5/middleware"
|
||||
)
|
||||
|
||||
func main() {
|
||||
if len(os.Args) > 1 {
|
||||
runCommand(os.Args[1:])
|
||||
return
|
||||
}
|
||||
|
||||
db, err := openDB()
|
||||
if err != nil {
|
||||
log.Fatal("database: ", err)
|
||||
}
|
||||
|
||||
r := chi.NewRouter()
|
||||
|
||||
r.Use(middleware.Logger)
|
||||
r.Use(middleware.Recoverer)
|
||||
|
||||
r.Get("/", accountPageHandler(db))
|
||||
|
||||
r.Get("/users/{name}", func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Write([]byte("Hello, " + chi.URLParam(r, "name") + "!"))
|
||||
})
|
||||
|
||||
r.Get("/login", loginPageHandler(db))
|
||||
r.Post("/login", loginHandler(db))
|
||||
r.Post("/logout", logoutHandler(db))
|
||||
|
||||
r.Get("/admin/keys", adminKeysPageHandler(db))
|
||||
r.Post("/admin/keys", adminKeysCreateHandler(db))
|
||||
r.Post("/admin/keys/{id}/retire", adminKeysRetireHandler(db))
|
||||
|
||||
r.Get("/admin/applications", adminApplicationsPageHandler(db))
|
||||
r.Get("/admin/applications/new", adminApplicationNewPageHandler(db))
|
||||
r.Post("/admin/applications/new", adminApplicationsCreateHandler(db))
|
||||
r.Post("/admin/applications/{id}/secret", adminApplicationsRotateSecretHandler(db))
|
||||
r.Post("/admin/applications/{id}/delete", adminApplicationsDeleteHandler(db))
|
||||
|
||||
r.Handle("/static/*", staticHandler())
|
||||
|
||||
r.Get("/health", func(w http.ResponseWriter, r *http.Request) {
|
||||
sqlDB, err := db.DB()
|
||||
if err != nil {
|
||||
w.WriteHeader(http.StatusServiceUnavailable)
|
||||
w.Write([]byte("db: " + err.Error()))
|
||||
return
|
||||
}
|
||||
if err := sqlDB.Ping(); err != nil {
|
||||
w.WriteHeader(http.StatusServiceUnavailable)
|
||||
w.Write([]byte("db: " + err.Error()))
|
||||
return
|
||||
}
|
||||
w.Write([]byte("ok"))
|
||||
})
|
||||
|
||||
// 未匹配任何路由的路徑(不分方法)輸出自訂 404 頁。
|
||||
r.NotFound(notFoundHandler)
|
||||
|
||||
if err := http.ListenAndServe(":8080", r); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user