| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- // Copyright 2017 Frédéric Guillot. All rights reserved.
- // Use of this source code is governed by the Apache 2.0
- // license that can be found in the LICENSE file.
- package core
- import (
- "log"
- "net/http"
- "time"
- "github.com/miniflux/miniflux2/helper"
- "github.com/miniflux/miniflux2/locale"
- "github.com/miniflux/miniflux2/server/middleware"
- "github.com/miniflux/miniflux2/server/template"
- "github.com/miniflux/miniflux2/storage"
- "github.com/gorilla/mux"
- )
- type HandlerFunc func(ctx *Context, request *Request, response *Response)
- type Handler struct {
- store *storage.Storage
- translator *locale.Translator
- template *template.TemplateEngine
- router *mux.Router
- middleware *middleware.MiddlewareChain
- }
- func (h *Handler) Use(f HandlerFunc) http.Handler {
- return h.middleware.WrapFunc(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- defer helper.ExecutionTime(time.Now(), r.URL.Path)
- log.Println(r.Method, r.URL.Path)
- ctx := NewContext(w, r, h.store, h.router)
- request := NewRequest(w, r)
- response := NewResponse(w, r, h.template)
- if ctx.IsAuthenticated() {
- h.template.SetLanguage(ctx.GetUserLanguage())
- } else {
- h.template.SetLanguage("en_US")
- }
- f(ctx, request, response)
- }))
- }
- func NewHandler(store *storage.Storage, router *mux.Router, template *template.TemplateEngine, translator *locale.Translator, middleware *middleware.MiddlewareChain) *Handler {
- return &Handler{
- store: store,
- translator: translator,
- router: router,
- template: template,
- middleware: middleware,
- }
- }
|