github.com/angryronald/go-kit@v0.0.0-20240505173814-ff2bd9c79dbf/net/http/response.function.go (about) 1 package http 2 3 import ( 4 "fmt" 5 "net/http" 6 7 "github.com/pkg/errors" 8 "github.com/sirupsen/logrus" 9 10 "github.com/angryronald/go-kit/cast" 11 "github.com/angryronald/go-kit/constant" 12 ) 13 14 func Response(w http.ResponseWriter, statusCode int, data interface{}, log *logrus.Logger) { 15 response := &ResponseModel{} 16 response.Code = string(constant.HTTPStatusToResponseCodeMappping[statusCode]) 17 response.Message = string(constant.HTTPStatusToResponseMessage[statusCode]) 18 response.Status = fmt.Sprintf("%d", statusCode) 19 response.Data = data 20 21 w.WriteHeader(statusCode) 22 var resultInBytes []byte 23 var err error 24 if resultInBytes, err = cast.ToBytes(response); err != nil { 25 log.Warnf(`[ResponseError] error: %s StackTrace: %v`, err, errors.WithStack(err)) 26 27 w.WriteHeader(http.StatusInternalServerError) 28 http.Error(w, string(constant.InternalServerErrorResponseMessage), http.StatusInternalServerError) 29 return 30 } 31 32 w.Write(resultInBytes) 33 } 34 35 func ResponseError(w http.ResponseWriter, statusCode int, optionalCustomizedMessage string, log *logrus.Logger) { 36 response := &ResponseModel{} 37 response.Code = string(constant.HTTPStatusToResponseCodeMappping[statusCode]) 38 response.Message = optionalCustomizedMessage 39 if optionalCustomizedMessage == "" { 40 response.Message = string(constant.HTTPStatusToResponseMessage[statusCode]) 41 } 42 response.Status = fmt.Sprintf("%d", statusCode) 43 44 w.WriteHeader(statusCode) 45 var resultInBytes []byte 46 var err error 47 if resultInBytes, err = cast.ToBytes(response); err != nil { 48 log.Warnf(`[ResponseError] error: %s StackTrace: %v`, err, errors.WithStack(err)) 49 50 w.WriteHeader(http.StatusInternalServerError) 51 http.Error(w, string(constant.InternalServerErrorResponseMessage), http.StatusInternalServerError) 52 return 53 } 54 55 w.Write(resultInBytes) 56 }