internal/middleware: move the timeout middleware to its own package
This removes the direct dependency from cmd/pkgsite to the middleware
package. The middleware package has a lot of dependencies but most
middlewares are not used by cmd/pkgsite.
There are still some middlewares used by internal/frontend so the
indirect dependency still exists.
For #61399
Change-Id: I09eee46b2ff13e112d24df62073074eb5aa3e901
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/511315
Run-TryBot: Michael Matloob <matloob@golang.org>
Reviewed-by: Jamal Carvalho <jamal@golang.org>
kokoro-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
diff --git a/cmd/frontend/main.go b/cmd/frontend/main.go
index 175e401..3812db7 100644
--- a/cmd/frontend/main.go
+++ b/cmd/frontend/main.go
@@ -24,6 +24,7 @@
"golang.org/x/pkgsite/internal/frontend"
"golang.org/x/pkgsite/internal/log"
"golang.org/x/pkgsite/internal/middleware"
+ "golang.org/x/pkgsite/internal/middleware/timeout"
"golang.org/x/pkgsite/internal/postgres"
"golang.org/x/pkgsite/internal/proxy"
"golang.org/x/pkgsite/internal/queue"
@@ -188,7 +189,7 @@
middleware.Experiment(experimenter),
middleware.Panic(panicHandler),
ermw,
- middleware.Timeout(54*time.Second),
+ timeout.Timeout(54*time.Second),
)
addr := cfg.HostAddr(*hostAddr)
log.Infof(ctx, "Listening on addr %s", addr)
diff --git a/cmd/pkgsite/main.go b/cmd/pkgsite/main.go
index 4b08645..01fc9d8 100644
--- a/cmd/pkgsite/main.go
+++ b/cmd/pkgsite/main.go
@@ -72,7 +72,7 @@
"golang.org/x/pkgsite/internal/fetchdatasource"
"golang.org/x/pkgsite/internal/frontend"
"golang.org/x/pkgsite/internal/log"
- "golang.org/x/pkgsite/internal/middleware"
+ "golang.org/x/pkgsite/internal/middleware/timeout"
"golang.org/x/pkgsite/internal/proxy"
"golang.org/x/pkgsite/internal/source"
"golang.org/x/pkgsite/internal/stdlib"
@@ -170,7 +170,7 @@
router := http.NewServeMux()
server.Install(router.Handle, nil, nil)
- mw := middleware.Timeout(54 * time.Second)
+ mw := timeout.Timeout(54 * time.Second)
srv := &http.Server{Addr: addr, Handler: mw(router)}
die("%v", srv.Serve(ln))
}
diff --git a/cmd/worker/main.go b/cmd/worker/main.go
index a14f4cd..46d3c1d 100644
--- a/cmd/worker/main.go
+++ b/cmd/worker/main.go
@@ -23,6 +23,7 @@
"golang.org/x/pkgsite/internal/index"
"golang.org/x/pkgsite/internal/log"
"golang.org/x/pkgsite/internal/middleware"
+ mtimeout "golang.org/x/pkgsite/internal/middleware/timeout"
"golang.org/x/pkgsite/internal/proxy"
"golang.org/x/pkgsite/internal/queue/gcpqueue"
"golang.org/x/pkgsite/internal/source"
@@ -142,7 +143,7 @@
mw := middleware.Chain(
middleware.RequestLog(cmdconfig.Logger(ctx, cfg, "worker-log")),
- middleware.Timeout(time.Duration(timeout)*time.Minute),
+ mtimeout.Timeout(time.Duration(timeout)*time.Minute),
iap,
middleware.Experiment(experimenter),
)
diff --git a/internal/middleware/timeout.go b/internal/middleware/timeout/timeout.go
similarity index 86%
rename from internal/middleware/timeout.go
rename to internal/middleware/timeout/timeout.go
index de8bb83..93d992d 100644
--- a/internal/middleware/timeout.go
+++ b/internal/middleware/timeout/timeout.go
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package middleware
+package timeout
import (
"context"
@@ -12,7 +12,7 @@
// Timeout returns a new Middleware that times out each request after the given
// duration.
-func Timeout(d time.Duration) Middleware {
+func Timeout(d time.Duration) func(http.Handler) http.Handler {
return func(h http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
ctx, cancel := context.WithTimeout(r.Context(), d)
diff --git a/internal/middleware/timeout_test.go b/internal/middleware/timeout/timeout_test.go
similarity index 98%
rename from internal/middleware/timeout_test.go
rename to internal/middleware/timeout/timeout_test.go
index d9206a3..ea4380d 100644
--- a/internal/middleware/timeout_test.go
+++ b/internal/middleware/timeout/timeout_test.go
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package middleware
+package timeout
import (
"fmt"