38 lines
1.5 KiB
Go
38 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"expvar"
|
|
"net/http"
|
|
|
|
"github.com/julienschmidt/httprouter"
|
|
)
|
|
|
|
func (app *application) routes() http.Handler {
|
|
router := httprouter.New()
|
|
|
|
router.NotFound = http.HandlerFunc(app.notFoundResponse)
|
|
router.MethodNotAllowed = http.HandlerFunc(app.methodNotAllowResponse)
|
|
router.HandlerFunc(http.MethodGet, "/v1/healthcheck", app.healthcheckHandler)
|
|
router.HandlerFunc(http.MethodGet, "/v1/movies", app.requirePermission("movies:read", app.listMoviesHandler))
|
|
router.HandlerFunc(http.MethodPost, "/v1/movies", app.requirePermission("movies:write", app.createMovieHandler))
|
|
router.HandlerFunc(http.MethodGet, "/v1/movies/:id", app.requirePermission("movies:read", app.showMovieHandler))
|
|
router.HandlerFunc(http.MethodPatch, "/v1/movies/:id", app.requirePermission("movies:write", app.updateMovieHandler))
|
|
router.HandlerFunc(http.MethodDelete, "/v1/movies/:id", app.requirePermission("movies:write", app.deleteMovieHandler))
|
|
router.HandlerFunc(http.MethodPost, "/v1/example", app.exampleHandler)
|
|
router.HandlerFunc(http.MethodPost, "/v1/users", app.registerUserHandler)
|
|
router.HandlerFunc(http.MethodPut, "/v1/users/activated", app.activateUserHandler)
|
|
router.HandlerFunc(http.MethodPost, "/v1/tokens/activation", app.createActivationTokenHandler)
|
|
router.HandlerFunc(http.MethodPost, "/v1/tokens/authentication", app.createAuthenticationTokenHandler)
|
|
router.Handler(http.MethodGet, "/debug/vars", expvar.Handler())
|
|
return app.metrics(
|
|
app.recoverPanic(
|
|
app.enableCORS(
|
|
app.rateLimit(
|
|
app.authenticate(router),
|
|
),
|
|
),
|
|
),
|
|
)
|
|
|
|
}
|