31 lines
923 B
Go
31 lines
923 B
Go
package quizzes
|
|
|
|
import (
|
|
"git.golem15.com/golem15/sm-quizzes-plugin/controllers/api"
|
|
"git.golem15.com/golem15/summercms/modules/pact"
|
|
"git.golem15.com/golem15/summercms/modules/surf"
|
|
)
|
|
|
|
var _ pact.HasRoutes = (*Plugin)(nil)
|
|
|
|
// Routes mounts the quiz API under /_quizzes/api/v1 behind golem15.user's
|
|
// jwt.auth middleware.
|
|
func (p *Plugin) Routes(r pact.Router) error {
|
|
h := api.New(p.app)
|
|
r.Group("/_quizzes/api/v1", surf.Use("jwt.auth"), func(g pact.Router) {
|
|
g.Get("/quizzes", h.ListQuizzes)
|
|
g.Get("/quizzes/{slug}", h.ShowQuiz)
|
|
g.Where("slug", `[a-z0-9-]+`)
|
|
g.Post("/quizzes/{slug}/attempts", h.StartAttempt)
|
|
g.Where("slug", `[a-z0-9-]+`)
|
|
g.Get("/attempts", h.ListAttempts)
|
|
g.Get("/attempts/{id}", h.ShowAttempt)
|
|
g.Where("id", `[0-9]+`)
|
|
g.Post("/attempts/{id}/answers", h.Answer)
|
|
g.Where("id", `[0-9]+`)
|
|
g.Post("/attempts/{id}/finish", h.Finish)
|
|
g.Where("id", `[0-9]+`)
|
|
})
|
|
return nil
|
|
}
|