重組前檢查點:根目錄 main package

This commit is contained in:
2026-10-03 09:23:38 +08:00
commit f373cb8d37
45 changed files with 5332 additions and 0 deletions
+71
View File
@@ -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)
}
}