Handler Code:
package handlers
import (
"SCW/go-task-list/internal/logwrapper"
"SCW/go-task-list/internal/middlewares"
"database/sql"
"net/http"
"github.com/dchest/captcha"
"github.com/garyburd/redigo/redis"
"github.com/gorilla/mux"
)
type API struct {
DBAccess *sql.DB
Log logwrapper.Logger
Middleware *middlewares.Middleware
RedisDB redis.Conn
}
func (a *API) Router() http.Handler {
r := mux.NewRouter().StrictSlash(true)
a.addAPIHandlers(r)
return r
}
func (a *API) addAPIHandlers(r *mux.Router) {
r.HandleFunc("/register", a.RegisterPageHandler).Methods("GET")
r.HandleFunc("/register", a.RegisterHandler).Methods("POST")
r.HandleFunc("/", a.LoginPageHandler).Methods("GET")
r.HandleFunc("/login", a.LoginPageHandler).Methods("GET")
loginHandler := a.Middleware.AuthorizationsCheck(a.LoginHandler)
r.HandleFunc("/login", loginHandler).Methods("POST")
logoutHandler := a.Middleware.CheckSession(a.LogoutHandler)
r.HandleFunc("/logout", logoutHandler).Methods("POST")
tasksHandler := a.Middleware.CheckSession(a.TasksHandler)
r.HandleFunc("/tasks", tasksHandler).Methods("GET")
taskHandler := a.Middleware.CheckSession(a.TaskHandler)
r.HandleFunc("/task/{taskUID}", taskHandler).Methods("GET")
taskDeleteHandler := a.Middleware.CheckSession(a.TaskDeleteHandler)
r.HandleFunc("/tasks/delete/{taskUID}", taskDeleteHandler).Methods("POST")
taskCreateHandler := a.Middleware.CheckSession(a.TaskCreateHandler)
r.HandleFunc("/tasks/new", taskCreateHandler).Methods("GET", "POST")
r.Handle("/captcha/{capthcaID}", captcha.Server(captcha.StdWidth, captcha.StdHeight))
http.Handle("/", a.Middleware.PanicMiddleware(a.Middleware.Nocsrf(
a.Middleware.Headers(a.Middleware.LoggingMiddleware(r)))))
go http.ListenAndServeTLS(":8081", "cert.pem", "key.pem", nil)
}
No comments:
Post a Comment