package controllers_pages import ( "main/mvc/models" "main/mvc/models/models_pages" "net/http" ) // Обработчик главной страницы func PostPageHandler(app *models.App) http.HandlerFunc { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { var err error // Ссылка вида /postname link := r.URL.Path // Страничка рендерится только если ее нет в кэше pageData, ok := app.PagesCache.Get(link) if !ok { post := app.PostsMap[models_pages.PostLink(link)] pageData, err = post.RenderPostPage(app.Templates, app.Version) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } app.PagesCache.Set(link, pageData) } sendPostPage(w, pageData) }) } // Отправляет страницу func sendPostPage(w http.ResponseWriter, data []byte) { w.Header().Set("Content-Type", "text/html; charset=utf-8") w.WriteHeader(http.StatusOK) w.Write(data) }