1234567891011121314151617181920212223242526 |
- package middleware
-
- import (
- "net/http"
- "strings"
- )
-
- // Heartbeat endpoint middleware useful to setting up a path like
- // `/ping` that load balancers or uptime testing external services
- // can make a request before hitting any routes. It's also convenient
- // to place this above ACL middlewares as well.
- func Heartbeat(endpoint string) func(http.Handler) http.Handler {
- f := func(h http.Handler) http.Handler {
- fn := func(w http.ResponseWriter, r *http.Request) {
- if r.Method == "GET" && strings.EqualFold(r.URL.Path, endpoint) {
- w.Header().Set("Content-Type", "text/plain")
- w.WriteHeader(http.StatusOK)
- w.Write([]byte("."))
- return
- }
- h.ServeHTTP(w, r)
- }
- return http.HandlerFunc(fn)
- }
- return f
- }
|