Add swaggo annotations to all handlers and regenerate full Swagger docs
- Added @Summary/@Router/@Param/@Success/@Security annotations to all API handlers - Regenerated docs/swagger.json, docs/swagger.yaml, docs/docs.go with full endpoint definitions - Fixed generated docs.go to remove unsupported LeftDelim/RightDelim fields
This commit is contained in:
@@ -58,6 +58,20 @@ type createCommandRequest struct {
|
||||
|
||||
// ---- handlers ----
|
||||
|
||||
// @Summary Create a slash command
|
||||
// @Description Create a new slash command for a bot
|
||||
// @Tags bot commands
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Security SessionAuth
|
||||
// @Param botID path string true "Bot ID"
|
||||
// @Param body body createCommandRequest true "Command data"
|
||||
// @Success 201 {object} slashCommandResponse
|
||||
// @Failure 400 {object} map[string]string
|
||||
// @Failure 401 {object} map[string]string
|
||||
// @Failure 403 {object} map[string]string
|
||||
// @Failure 409 {object} map[string]string
|
||||
// @Router /bots/{botID}/commands [post]
|
||||
func (h *CommandHandler) Create(w http.ResponseWriter, r *http.Request) {
|
||||
userID, ok := middleware.UserIDFromContext(r.Context())
|
||||
if !ok {
|
||||
@@ -131,6 +145,17 @@ func (h *CommandHandler) Create(w http.ResponseWriter, r *http.Request) {
|
||||
writeJSON(w, http.StatusCreated, cmd)
|
||||
}
|
||||
|
||||
// @Summary List bot commands
|
||||
// @Description List all slash commands for a bot
|
||||
// @Tags bot commands
|
||||
// @Produce json
|
||||
// @Security SessionAuth
|
||||
// @Param botID path string true "Bot ID"
|
||||
// @Success 200 {array} slashCommandResponse
|
||||
// @Failure 401 {object} map[string]string
|
||||
// @Failure 403 {object} map[string]string
|
||||
// @Failure 404 {object} map[string]string
|
||||
// @Router /bots/{botID}/commands [get]
|
||||
func (h *CommandHandler) ListByBot(w http.ResponseWriter, r *http.Request) {
|
||||
userID, ok := middleware.UserIDFromContext(r.Context())
|
||||
if !ok {
|
||||
@@ -180,6 +205,17 @@ func (h *CommandHandler) ListByBot(w http.ResponseWriter, r *http.Request) {
|
||||
writeJSON(w, http.StatusOK, cmds)
|
||||
}
|
||||
|
||||
// @Summary Delete a slash command
|
||||
// @Description Delete a slash command
|
||||
// @Tags bot commands
|
||||
// @Security SessionAuth
|
||||
// @Param botID path string true "Bot ID"
|
||||
// @Param cmdID path string true "Command ID"
|
||||
// @Success 204
|
||||
// @Failure 401 {object} map[string]string
|
||||
// @Failure 403 {object} map[string]string
|
||||
// @Failure 404 {object} map[string]string
|
||||
// @Router /bots/{botID}/commands/{cmdID} [delete]
|
||||
func (h *CommandHandler) Delete(w http.ResponseWriter, r *http.Request) {
|
||||
userID, ok := middleware.UserIDFromContext(r.Context())
|
||||
if !ok {
|
||||
@@ -217,7 +253,14 @@ func (h *CommandHandler) Delete(w http.ResponseWriter, r *http.Request) {
|
||||
w.WriteHeader(http.StatusNoContent)
|
||||
}
|
||||
|
||||
// ListByServer returns all slash commands registered in a server (public, no auth).
|
||||
// @Summary List server commands
|
||||
// @Description List all slash commands registered in a server (public)
|
||||
// @Tags bot commands
|
||||
// @Produce json
|
||||
// @Param serverID path string true "Server ID"
|
||||
// @Success 200 {array} slashCommandResponse
|
||||
// @Failure 500 {object} map[string]string
|
||||
// @Router /bots/servers/{serverID}/commands [get]
|
||||
func (h *CommandHandler) ListByServer(w http.ResponseWriter, r *http.Request) {
|
||||
serverID := chi.URLParam(r, "serverID")
|
||||
|
||||
|
||||
@@ -78,6 +78,17 @@ func writeErr(w http.ResponseWriter, status int, msg string) {
|
||||
|
||||
// ---- handlers ----
|
||||
|
||||
// @Summary Create a bot
|
||||
// @Description Create a new bot
|
||||
// @Tags bots
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Security SessionAuth
|
||||
// @Param body body createBotRequest true "Bot data"
|
||||
// @Success 201 {object} botWithToken
|
||||
// @Failure 400 {object} map[string]string
|
||||
// @Failure 401 {object} map[string]string
|
||||
// @Router /bots [post]
|
||||
func (h *Handler) Create(w http.ResponseWriter, r *http.Request) {
|
||||
userID, ok := middleware.UserIDFromContext(r.Context())
|
||||
if !ok {
|
||||
@@ -121,6 +132,14 @@ func (h *Handler) Create(w http.ResponseWriter, r *http.Request) {
|
||||
writeJSON(w, http.StatusCreated, bot)
|
||||
}
|
||||
|
||||
// @Summary List bots
|
||||
// @Description List all bots owned by the current user
|
||||
// @Tags bots
|
||||
// @Produce json
|
||||
// @Security SessionAuth
|
||||
// @Success 200 {array} botResponse
|
||||
// @Failure 401 {object} map[string]string
|
||||
// @Router /bots [get]
|
||||
func (h *Handler) List(w http.ResponseWriter, r *http.Request) {
|
||||
userID, ok := middleware.UserIDFromContext(r.Context())
|
||||
if !ok {
|
||||
@@ -161,6 +180,17 @@ func (h *Handler) List(w http.ResponseWriter, r *http.Request) {
|
||||
writeJSON(w, http.StatusOK, bots)
|
||||
}
|
||||
|
||||
// @Summary Get a bot
|
||||
// @Description Get a bot by ID (owner only)
|
||||
// @Tags bots
|
||||
// @Produce json
|
||||
// @Security SessionAuth
|
||||
// @Param botID path string true "Bot ID"
|
||||
// @Success 200 {object} botResponse
|
||||
// @Failure 401 {object} map[string]string
|
||||
// @Failure 403 {object} map[string]string
|
||||
// @Failure 404 {object} map[string]string
|
||||
// @Router /bots/{botID} [get]
|
||||
func (h *Handler) Get(w http.ResponseWriter, r *http.Request) {
|
||||
userID, ok := middleware.UserIDFromContext(r.Context())
|
||||
if !ok {
|
||||
@@ -197,6 +227,20 @@ func (h *Handler) Get(w http.ResponseWriter, r *http.Request) {
|
||||
writeJSON(w, http.StatusOK, b)
|
||||
}
|
||||
|
||||
// @Summary Update a bot
|
||||
// @Description Update a bot's name, description, or avatar (owner only)
|
||||
// @Tags bots
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Security SessionAuth
|
||||
// @Param botID path string true "Bot ID"
|
||||
// @Param body body updateBotRequest true "Bot update data"
|
||||
// @Success 200 {object} botResponse
|
||||
// @Failure 400 {object} map[string]string
|
||||
// @Failure 401 {object} map[string]string
|
||||
// @Failure 403 {object} map[string]string
|
||||
// @Failure 404 {object} map[string]string
|
||||
// @Router /bots/{botID} [patch]
|
||||
func (h *Handler) Update(w http.ResponseWriter, r *http.Request) {
|
||||
userID, ok := middleware.UserIDFromContext(r.Context())
|
||||
if !ok {
|
||||
@@ -259,6 +303,16 @@ func (h *Handler) Update(w http.ResponseWriter, r *http.Request) {
|
||||
writeJSON(w, http.StatusOK, b)
|
||||
}
|
||||
|
||||
// @Summary Delete a bot
|
||||
// @Description Delete a bot (owner only)
|
||||
// @Tags bots
|
||||
// @Security SessionAuth
|
||||
// @Param botID path string true "Bot ID"
|
||||
// @Success 204
|
||||
// @Failure 401 {object} map[string]string
|
||||
// @Failure 403 {object} map[string]string
|
||||
// @Failure 404 {object} map[string]string
|
||||
// @Router /bots/{botID} [delete]
|
||||
func (h *Handler) Delete(w http.ResponseWriter, r *http.Request) {
|
||||
userID, ok := middleware.UserIDFromContext(r.Context())
|
||||
if !ok {
|
||||
@@ -294,6 +348,20 @@ func (h *Handler) Delete(w http.ResponseWriter, r *http.Request) {
|
||||
w.WriteHeader(http.StatusNoContent)
|
||||
}
|
||||
|
||||
// @Summary Add bot to server
|
||||
// @Description Add a bot to a server
|
||||
// @Tags bots
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Security SessionAuth
|
||||
// @Param botID path string true "Bot ID"
|
||||
// @Param body body addToServerRequest true "Server data"
|
||||
// @Success 201 {object} map[string]string
|
||||
// @Failure 400 {object} map[string]string
|
||||
// @Failure 401 {object} map[string]string
|
||||
// @Failure 403 {object} map[string]string
|
||||
// @Failure 404 {object} map[string]string
|
||||
// @Router /bots/{botID}/servers [post]
|
||||
func (h *Handler) AddToServer(w http.ResponseWriter, r *http.Request) {
|
||||
userID, ok := middleware.UserIDFromContext(r.Context())
|
||||
if !ok {
|
||||
@@ -361,6 +429,17 @@ func (h *Handler) AddToServer(w http.ResponseWriter, r *http.Request) {
|
||||
})
|
||||
}
|
||||
|
||||
// @Summary Remove bot from server
|
||||
// @Description Remove a bot from a server
|
||||
// @Tags bots
|
||||
// @Security SessionAuth
|
||||
// @Param botID path string true "Bot ID"
|
||||
// @Param serverID path string true "Server ID"
|
||||
// @Success 204
|
||||
// @Failure 401 {object} map[string]string
|
||||
// @Failure 403 {object} map[string]string
|
||||
// @Failure 404 {object} map[string]string
|
||||
// @Router /bots/{botID}/servers/{serverID} [delete]
|
||||
func (h *Handler) RemoveFromServer(w http.ResponseWriter, r *http.Request) {
|
||||
userID, ok := middleware.UserIDFromContext(r.Context())
|
||||
if !ok {
|
||||
@@ -405,6 +484,17 @@ func (h *Handler) RemoveFromServer(w http.ResponseWriter, r *http.Request) {
|
||||
w.WriteHeader(http.StatusNoContent)
|
||||
}
|
||||
|
||||
// @Summary Regenerate bot token
|
||||
// @Description Regenerate a bot's API token (owner only)
|
||||
// @Tags bots
|
||||
// @Produce json
|
||||
// @Security SessionAuth
|
||||
// @Param botID path string true "Bot ID"
|
||||
// @Success 200 {object} botWithToken
|
||||
// @Failure 401 {object} map[string]string
|
||||
// @Failure 403 {object} map[string]string
|
||||
// @Failure 404 {object} map[string]string
|
||||
// @Router /bots/{botID}/regenerate-token [post]
|
||||
func (h *Handler) RegenerateToken(w http.ResponseWriter, r *http.Request) {
|
||||
userID, ok := middleware.UserIDFromContext(r.Context())
|
||||
if !ok {
|
||||
|
||||
Reference in New Issue
Block a user