All checks were successful
continuous-integration/drone/push Build is passing
25 lines
470 B
Go
25 lines
470 B
Go
package handler
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
defaultRequestTimeout = 2 * time.Minute
|
|
reportRequestTimeout = 10 * time.Minute
|
|
longRunningRequestTimeout = 2 * time.Hour
|
|
)
|
|
|
|
func withRequestTimeout(r *http.Request, timeout time.Duration) (context.Context, context.CancelFunc) {
|
|
base := context.Background()
|
|
if r != nil {
|
|
base = r.Context()
|
|
}
|
|
if timeout <= 0 {
|
|
return base, func() {}
|
|
}
|
|
return context.WithTimeout(base, timeout)
|
|
}
|