package internal import ( "encoding/json" "fmt" "net/http" ) type StatusMessageBuilder struct { statusCode *int message *string } func NewStatusMessage() *StatusMessageBuilder { return &StatusMessageBuilder{} } func (sm *StatusMessageBuilder) StatusCode(statusCode int) *StatusMessageBuilder { sm.statusCode = &statusCode return sm } func (sm *StatusMessageBuilder) Message(message string) *StatusMessageBuilder { sm.message = &message return sm } func (sm *StatusMessageBuilder) Build() *StatusMessage { return &StatusMessage{ StatusCode: sm.statusCode, Message: sm.message, } } type StatusMessage struct { StatusCode *int Message *string `json:"msg"` } func ErrorResponse(w http.ResponseWriter, statusMessage *StatusMessage) error { if statusMessage.StatusCode == nil { return fmt.Errorf("status code is missing") } if statusMessage.Message == nil { return fmt.Errorf("message is missing") } w.Header().Add("Content-Type", "application/json") w.WriteHeader(*statusMessage.StatusCode) b, err := json.Marshal(statusMessage) if err != nil { return fmt.Errorf("failed to marshal JSON") } w.Write(b) return nil }