// Code scaffolded by goctl. Safe to edit. // goctl 1.10.1 package member import ( "errors" "net/http" app "haixun-backend/internal/library/errors" "haixun-backend/internal/library/errors/code" "haixun-backend/internal/logic/member" "haixun-backend/internal/response" "haixun-backend/internal/svc" ) const maxAvatarUploadBytes = 5 << 20 func UploadMemberAvatarHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { r.Body = http.MaxBytesReader(w, r.Body, maxAvatarUploadBytes) file, header, err := r.FormFile("avatar") if err != nil { if errors.As(err, new(*http.MaxBytesError)) { response.Write(r.Context(), w, nil, app.For(code.Member).InputInvalidFormat("avatar file must be smaller than 5MB")) return } response.Write(r.Context(), w, nil, app.For(code.Member).InputMissingRequired("avatar file is required")) return } defer file.Close() l := member.NewUploadMemberAvatarLogic(r.Context(), svcCtx) data, err := l.UploadMemberAvatar(header.Filename, header.Header.Get("Content-Type"), file) response.Write(r.Context(), w, data, err) } }