1
0
mirror of https://github.com/pocket-id/pocket-id.git synced 2026-02-11 00:14:17 +00:00

feat: add HTTP HEAD method support (#1135)

This commit is contained in:
Elias Schneider
2025-12-05 11:17:13 +01:00
committed by GitHub
parent 3a1dd3168e
commit 91b0d74c43
2 changed files with 52 additions and 1 deletions

View File

@@ -0,0 +1,40 @@
package middleware
import (
"net/http"
"strconv"
"github.com/gin-gonic/gin"
)
type IsHeadRequestCtxKey struct{}
type headWriter struct {
gin.ResponseWriter
size int
}
func (w *headWriter) Write(b []byte) (int, error) {
w.size += len(b)
return w.size, nil
}
func HeadMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
// Only process if it's a HEAD request
if c.Request.Context().Value(IsHeadRequestCtxKey{}) != true {
c.Next()
return
}
// Replace the ResponseWriter with our headWriter to swallow the body
hw := &headWriter{ResponseWriter: c.Writer}
c.Writer = hw
c.Next()
c.Writer.Header().Set("Content-Length", strconv.Itoa(hw.size))
c.Request.Method = http.MethodHead
}
}