feat(smalltrip,exceptions): retryAfter in 503 Service Unavailable exceptionn

This commit is contained in:
Guz
2025-02-26 16:39:35 -03:00
parent 59a5ea56eb
commit ad17abe01c

View File

@@ -3,6 +3,7 @@ package exceptions
import ( import (
"errors" "errors"
"net/http" "net/http"
"time"
) )
// InternalServerError creates a new [Exception] with the "500 Internal Server Error" // InternalServerError creates a new [Exception] with the "500 Internal Server Error"
@@ -58,13 +59,18 @@ func BadGateway(opts ...Option) Exception {
// ServiceUnavailable creates a new [Exception] with the "503 Service Unavailable" // ServiceUnavailable creates a new [Exception] with the "503 Service Unavailable"
// status code, a human readable message and the provided error describing what in // status code, a human readable message and the provided error describing what in
// the request was wrong. The severity of this Exception by default is [ERROR]. // the request was wrong. The severity of this Exception by default is [ERROR].
func ServiceUnavailable(opts ...Option) Exception { //
// A Retry-After header is passed with the duration provided by the "retryAfter"
// parameter.
func ServiceUnavailable(retryAfter time.Time, opts ...Option) Exception {
o := []Option{ o := []Option{
WithStatus(http.StatusServiceUnavailable), WithStatus(http.StatusServiceUnavailable),
WithCode("Service Unavailable"), WithCode("Service Unavailable"),
WithMessage("Not ready to handle the request."), WithMessage("Not ready to handle the request."),
WithError(errors.New("server is not ready to handle the request")), WithError(errors.New("server is not ready to handle the request")),
WithSeverity(ERROR), WithSeverity(ERROR),
WithHeader("Retry-After", retryAfter.Format("Mon, 02 Jan 2006 15:04:05 GMT")),
} }
o = append(o, opts...) o = append(o, opts...)