package server import ( "net/http" "music-server/internal/backend" "github.com/labstack/echo/v5" ) type CharacterHandler struct { characters *backend.CharacterService } func NewCharacterHandler(characters *backend.CharacterService) *CharacterHandler { return &CharacterHandler{characters: characters} } // GetCharacterList godoc // @Summary Get list of characters // @Description Returns a list of all available characters // @Tags characters // @Produce json // @Success 200 {array} string // @Router /characters [get] func (c *CharacterHandler) GetCharacterList(ctx *echo.Context) error { characters, err := c.characters.List() if err != nil { return songError(err) } return ctx.JSON(http.StatusOK, characters) } // GetCharacter godoc // @Summary Get character image // @Description Returns the image for a specific character // @Tags characters // @Produce image/png // @Produce image/jpeg // @Param name query string true "Character file name" // @Success 200 {file} file // @Failure 400 {string} string "invalid name" // @Failure 404 {string} string "not found" // @Router /character [get] func (c *CharacterHandler) GetCharacter(ctx *echo.Context) error { f, err := c.characters.Open(ctx.QueryParam("name")) if err != nil { return songError(err) } return serveFile(ctx, f, "") }