url_shortener/internal/lib/api/response/response.go

52 lines
936 B
Go
Raw Permalink Normal View History

2023-12-08 12:59:55 +02:00
package response
import (
"fmt"
"strings"
"github.com/go-playground/validator/v10"
)
type Response struct {
Status string `json:"status"`
Error string `json:"error,omitempty"`
}
const (
StatusOK = "OK"
StatusError = "Error"
)
func OK() Response {
return Response{
Status: StatusOK,
}
}
func Error(msg string) Response {
return Response{
Status: StatusError,
Error: msg,
}
}
func ValidationError(errs validator.ValidationErrors) Response {
var errMsgs []string
for _, err := range errs {
switch err.ActualTag() {
case "required":
errMsgs = append(errMsgs, fmt.Sprintf("field %s is a required field", err.Field()))
case "url":
errMsgs = append(errMsgs, fmt.Sprintf("field %s is not a valid url", err.Field()))
default:
errMsgs = append(errMsgs, fmt.Sprintf("field %s is not valid", err.Field()))
}
}
return Response{
Status: StatusError,
Error: strings.Join(errMsgs, ", "),
}
}