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  }