44 lines
990 B
Go
44 lines
990 B
Go
package rest
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"tanabata/internal/domain"
|
|
)
|
|
|
|
type ErrorResponse struct {
|
|
Error string `json:"error"`
|
|
Code string `json:"code,omitempty"`
|
|
Message string `json:"message,omitempty"`
|
|
}
|
|
|
|
type ErrorMapper struct{}
|
|
|
|
func (m *ErrorMapper) MapError(err domain.DomainError) (int, ErrorResponse) {
|
|
switch err.Code {
|
|
case domain.ErrCodeFileNotFound:
|
|
return http.StatusNotFound, ErrorResponse{
|
|
Error: "Not Found",
|
|
Code: string(err.Code),
|
|
Message: err.Message,
|
|
}
|
|
case domain.ErrCodeMIMENotSupported:
|
|
return http.StatusNotFound, ErrorResponse{
|
|
Error: "MIME not supported",
|
|
Code: string(err.Code),
|
|
Message: err.Message,
|
|
}
|
|
case domain.ErrCodeBadRequest:
|
|
return http.StatusNotFound, ErrorResponse{
|
|
Error: "Bad Request",
|
|
Code: string(err.Code),
|
|
Message: err.Message,
|
|
}
|
|
}
|
|
return http.StatusInternalServerError, ErrorResponse{
|
|
Error: "Internal Server Error",
|
|
Code: string(err.Code),
|
|
Message: err.Message,
|
|
}
|
|
}
|