some changes

master
serr 2025-04-06 14:16:38 +03:00
parent 24a36b22b3
commit 61341eaa03
4 changed files with 14 additions and 11 deletions

View File

@ -50,10 +50,8 @@ func setupRoutesAndRun(a *models.App) error {
func setupRoutes(a *models.App) *http.ServeMux { func setupRoutes(a *models.App) *http.ServeMux {
router := http.NewServeMux() router := http.NewServeMux()
// middlewares // Цепочка обработчиков, которые сработают до отдачи страницы юзеру
m := controllers.MiddlewaresChain( m := controllers.MiddlewaresChain
controllers.LoggingMiddleware,
)
// Обработка статических файлов с кэшированием // Обработка статических файлов с кэшированием
router.Handle(a.Config.AssetsPath, m(controllers.StaticHandler())) router.Handle(a.Config.AssetsPath, m(controllers.StaticHandler()))

View File

@ -8,16 +8,22 @@ import (
type Middleware func(http.Handler) http.Handler type Middleware func(http.Handler) http.Handler
var (
MiddlewaresChain = CreateMiddlewaresChain(
LoggingMiddleware,
)
)
/* /*
Возвращает один middleware, который объединяет все переданные Возвращает один middleware, который объединяет все переданные
MiddlewaresChain(m1, m2, m3) CreateMiddlewaresChain(m1, m2, m3)
= func(next http.Handler) http.Handler { return m1(m2(m3(final))) } = func(next http.Handler) http.Handler { return m1(m2(m3(final))) }
MiddlewaresChain(LoggingMiddleware) CreateMiddlewaresChain(LoggingMiddleware)
= func(next http.Handler) http.Handler { return LoggingMiddleware(final) } = func(next http.Handler) http.Handler { return LoggingMiddleware(final) }
*/ */
func MiddlewaresChain(middlewares ...Middleware) Middleware { func CreateMiddlewaresChain(middlewares ...Middleware) Middleware {
return func(final http.Handler) http.Handler { return func(final http.Handler) http.Handler {
for i := len(middlewares) - 1; i >= 0; i-- { for i := len(middlewares) - 1; i >= 0; i-- {
final = middlewares[i](final) final = middlewares[i](final)
@ -29,10 +35,9 @@ func MiddlewaresChain(middlewares ...Middleware) Middleware {
func LoggingMiddleware(next http.Handler) http.Handler { func LoggingMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
start := time.Now() start := time.Now()
log.Printf("Started %s %s", r.Method, r.URL.Path)
next.ServeHTTP(w, r) next.ServeHTTP(w, r)
log.Printf("Completed %s in %v", r.URL.Path, time.Since(start)) log.Printf("%s %s in %v", r.Method, r.URL.Path, time.Since(start))
}) })
} }

View File

@ -46,7 +46,7 @@
what do i do? what do i do?
</h1> </h1>
<p> <p>
programming is my everything - my job, my hobby, my lifelong obsession programming is my everything - my job, my hobby, my lifestyle
</p> </p>
<p> <p>
i love growing in all areas of programming - i am literally interested in everything: cybersecurity (chaotically breaking things, analyzing code, writing automated analyzers, and moving bytes back and forth), concurrency/multithreading, web development, low-level programming, cryptography and a lot more! i love growing in all areas of programming - i am literally interested in everything: cybersecurity (chaotically breaking things, analyzing code, writing automated analyzers, and moving bytes back and forth), concurrency/multithreading, web development, low-level programming, cryptography and a lot more!

View File

@ -53,7 +53,7 @@
чем я занимаюсь? чем я занимаюсь?
</h1> </h1>
<p> <p>
программирование - это моё всё: работа, хобби, пожизненная одержимость программирование - это моё всё: работа, хобби, стиль жизни
</p> </p>
<p> <p>
мне нравится развиваться во всех областях программирования - мне буквально интересно всё: кибербезопасность (хаотичный взлом вещей, анализ кода, написание автоматических анализаторов и перекладывание байтов туда-сюда), многопоточность, веб-разработка, низкоуровневое программирование, криптография и многое другое! мне нравится развиваться во всех областях программирования - мне буквально интересно всё: кибербезопасность (хаотичный взлом вещей, анализ кода, написание автоматических анализаторов и перекладывание байтов туда-сюда), многопоточность, веб-разработка, низкоуровневое программирование, криптография и многое другое!