mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-28 11:54:02 +08:00
feat/auth-hook: refactor RequstInfo to preserve original HTTP semantics
This commit is contained in:
@@ -2282,23 +2282,8 @@ func (h *Handler) GetAuthStatus(c *gin.Context) {
|
||||
// PopulateAuthContext extracts request info and adds it to the context
|
||||
func PopulateAuthContext(ctx context.Context, c *gin.Context) context.Context {
|
||||
info := &coreauth.RequestInfo{
|
||||
Query: make(map[string]string),
|
||||
Headers: make(map[string]string),
|
||||
Query: c.Request.URL.Query(),
|
||||
Headers: c.Request.Header,
|
||||
}
|
||||
|
||||
// Capture all query parameters, joining multiple values with a comma.
|
||||
for k, v := range c.Request.URL.Query() {
|
||||
if len(v) > 0 {
|
||||
info.Query[k] = strings.Join(v, ",")
|
||||
}
|
||||
}
|
||||
|
||||
// Capture all headers, joining multiple values with a comma.
|
||||
for k, v := range c.Request.Header {
|
||||
if len(v) > 0 {
|
||||
info.Headers[k] = strings.Join(v, ",")
|
||||
}
|
||||
}
|
||||
|
||||
return coreauth.WithRequestInfo(ctx, info)
|
||||
}
|
||||
|
||||
@@ -5,6 +5,8 @@ import (
|
||||
"crypto/sha256"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
@@ -21,8 +23,8 @@ type PostAuthHook func(context.Context, *Auth) error
|
||||
// RequestInfo holds information extracted from the HTTP request.
|
||||
// It is injected into the context passed to PostAuthHook.
|
||||
type RequestInfo struct {
|
||||
Query map[string]string
|
||||
Headers map[string]string
|
||||
Query url.Values
|
||||
Headers http.Header
|
||||
}
|
||||
|
||||
type requestInfoKey struct{}
|
||||
|
||||
Reference in New Issue
Block a user