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) }