mirror of
https://github.com/yusing/godoxy.git
synced 2026-03-17 23:03:49 +01:00
38 lines
1.0 KiB
Go
38 lines
1.0 KiB
Go
package v1
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
apitypes "github.com/yusing/godoxy/internal/api/types"
|
|
"github.com/yusing/godoxy/internal/homepage"
|
|
)
|
|
|
|
type ListIconsRequest struct {
|
|
Limit int `form:"limit" validate:"omitempty,min=0"`
|
|
Keyword string `form:"keyword" validate:"required"`
|
|
} // @name ListIconsRequest
|
|
|
|
// @x-id "icons"
|
|
// @BasePath /api/v1
|
|
// @Summary List icons
|
|
// @Description List icons
|
|
// @Tags v1
|
|
// @Accept json
|
|
// @Produce json
|
|
// @Param limit query int false "Limit"
|
|
// @Param keyword query string false "Keyword"
|
|
// @Success 200 {array} homepage.IconMetaSearch
|
|
// @Failure 400 {object} apitypes.ErrorResponse
|
|
// @Failure 403 {object} apitypes.ErrorResponse
|
|
// @Router /icons [get]
|
|
func Icons(c *gin.Context) {
|
|
var request ListIconsRequest
|
|
if err := c.ShouldBindQuery(&request); err != nil {
|
|
c.JSON(http.StatusBadRequest, apitypes.Error("invalid request", err))
|
|
return
|
|
}
|
|
icons := homepage.SearchIcons(request.Keyword, request.Limit)
|
|
c.JSON(http.StatusOK, icons)
|
|
}
|