Files
ycc-proxy-server/app/main/api/internal/handler/agent/getinviteposterhandler.go
2026-02-09 10:58:32 +08:00

51 lines
1.2 KiB
Go

package agent
import (
"net/http"
"strings"
"ycc-server/app/main/api/internal/logic/agent"
"ycc-server/app/main/api/internal/svc"
"ycc-server/app/main/api/internal/types"
"ycc-server/common/result"
"ycc-server/pkg/lzkit/validator"
"github.com/zeromicro/go-zero/rest/httpx"
)
func GetInvitePosterHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var req types.GetInvitePosterReq
if err := httpx.Parse(r, &req); err != nil {
result.ParamErrorResult(r, w, err)
return
}
req.Format = strings.TrimSpace(strings.ToLower(req.Format))
if err := validator.Validate(req); err != nil {
result.ParamValidateErrorResult(r, w, err)
return
}
l := agent.NewGetInvitePosterLogic(r.Context(), svcCtx)
if req.Format == "base64" {
base64Str, err := l.GetInvitePosterBase64(&req)
if err != nil {
result.HttpResult(r, w, nil, err)
return
}
result.HttpResult(r, w, &types.GetInvitePosterResp{PosterBase64: base64Str}, nil)
return
}
pngBytes, err := l.GetInvitePoster(&req)
if err != nil {
result.HttpResult(r, w, nil, err)
return
}
w.Header().Set("Content-Type", "image/png")
w.WriteHeader(http.StatusOK)
_, _ = w.Write(pngBytes)
}
}