feat: adding apiKey for authentication

This commit is contained in:
2025-11-21 16:24:33 +07:00
parent 49a30d3b44
commit 4fc0c438c8
7 changed files with 147 additions and 19 deletions

View File

@@ -0,0 +1,56 @@
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
}