docs(middleware): 为中间件模块添加标准化 godoc 注释

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
xfy 2026-04-20 11:23:03 +08:00
parent 42a4c8d311
commit 13bfc090f7
6 changed files with 19 additions and 13 deletions

View File

@ -184,13 +184,13 @@ type limitedBodyReader struct {
Read(p []byte) (n int, err error) Read(p []byte) (n int, err error)
} }
// ctx 请求上下文,用于设置错误响应 // ctx 请求上下文,用于设置错误响应
ctx *fasthttp.RequestCtx ctx *fasthttp.RequestCtx
// limit 最大允许读取的字节数 // limit 最大允许读取的字节数
limit int64 limit int64
// read 已读取的字节数 // read 已读取的字节数
read int64 read int64
// done 是否已达到限制 // done 是否已达到限制
done bool done bool
} }
// Read 实现读取接口,在超过限制时返回错误。 // Read 实现读取接口,在超过限制时返回错误。

View File

@ -48,6 +48,7 @@ const (
accessAllow = "allow" accessAllow = "allow"
accessDeny = "deny" accessDeny = "deny"
accessUnknown = "unknown"
geoPrivateAllow = "PRIVATE_ALLOW" geoPrivateAllow = "PRIVATE_ALLOW"
geoPrivateDeny = "PRIVATE_DENY" geoPrivateDeny = "PRIVATE_DENY"
) )
@ -478,7 +479,7 @@ func actionToString(action Action) string {
case ActionDeny: case ActionDeny:
return accessDeny return accessDeny
default: default:
return "unknown" return accessUnknown
} }
} }

View File

@ -56,7 +56,7 @@ type AuthRequest struct {
// config 认证子请求配置 // config 认证子请求配置
config config.AuthRequestConfig config config.AuthRequestConfig
// mu 读写锁,保护并发访问 client 和 config // mu 读写锁,保护并发访问 client 和 config
mu sync.RWMutex mu sync.RWMutex
} }
// NewAuthRequest 使用给定的配置创建一个新的 AuthRequest 中间件。 // NewAuthRequest 使用给定的配置创建一个新的 AuthRequest 中间件。

View File

@ -88,7 +88,7 @@ func NewGeoIPLookup(dbPath string, cacheSize int, ttl time.Duration, privateIPBe
// 默认私有 IP 行为 // 默认私有 IP 行为
if privateIPBehavior == "" { if privateIPBehavior == "" {
privateIPBehavior = "allow" privateIPBehavior = accessAllow
} }
return &GeoIPLookup{ return &GeoIPLookup{
@ -114,7 +114,7 @@ func (g *GeoIPLookup) LookupCountry(ip net.IP) (string, error) {
// 检查私有 IP // 检查私有 IP
if isPrivateIP(ip) { if isPrivateIP(ip) {
switch g.privateIPBehavior { switch g.privateIPBehavior {
case "allow": case accessAllow:
return "PRIVATE_ALLOW", nil // 特殊标记,表示允许 return "PRIVATE_ALLOW", nil // 特殊标记,表示允许
case accessDeny: case accessDeny:
return "PRIVATE_DENY", nil // 特殊标记,表示拒绝 return "PRIVATE_DENY", nil // 特殊标记,表示拒绝

View File

@ -250,7 +250,12 @@ func TestGeoIPLookup_Close(t *testing.T) {
// TestGeoIPLookup_TTLExpiration 测试缓存 TTL 过期。 // TestGeoIPLookup_TTLExpiration 测试缓存 TTL 过期。
func TestGeoIPLookup_TTLExpiration(t *testing.T) { func TestGeoIPLookup_TTLExpiration(t *testing.T) {
geoip, err := NewGeoIPLookup("/tmp/GeoIP2-Country-Test.mmdb", 1000, 1*time.Millisecond, "allow") testDB := "/tmp/GeoIP2-Country-Test.mmdb"
if _, err := os.Stat(testDB); os.IsNotExist(err) {
t.Skipf("Skipping test: GeoIP test database not available: %v", err)
}
geoip, err := NewGeoIPLookup(testDB, 1000, 1*time.Millisecond, "allow")
require.NoError(t, err) require.NoError(t, err)
defer geoip.Close() defer geoip.Close()

View File

@ -32,7 +32,7 @@ type limiterBucket struct {
// counters 限流键到计数器的映射 // counters 限流键到计数器的映射
counters map[string]*windowCounter counters map[string]*windowCounter
// mu 读写锁,保护 counters 的并发访问 // mu 读写锁,保护 counters 的并发访问
mu sync.RWMutex mu sync.RWMutex
} }
// SlidingWindowLimiter 滑动窗口限流器。 // SlidingWindowLimiter 滑动窗口限流器。
@ -43,9 +43,9 @@ type SlidingWindowLimiter struct {
// buckets 分段锁桶数组,固定 16 个桶 // buckets 分段锁桶数组,固定 16 个桶
buckets [16]*limiterBucket buckets [16]*limiterBucket
// window 滑动窗口大小 // window 滑动窗口大小
window time.Duration window time.Duration
// limit 窗口内最大请求数 // limit 窗口内最大请求数
limit int limit int
// precise 是否使用精确模式 // precise 是否使用精确模式
precise bool precise bool
} }
@ -71,9 +71,9 @@ type windowCounter struct {
// timestamps 请求时间戳列表 // timestamps 请求时间戳列表
timestamps []time.Time timestamps []time.Time
// count 当前窗口内的请求计数 // count 当前窗口内的请求计数
count int64 count int64
// mu 互斥锁,保护并发访问 // mu 互斥锁,保护并发访问
mu sync.Mutex mu sync.Mutex
} }
// NewSlidingWindowLimiter 创建滑动窗口限流器。 // NewSlidingWindowLimiter 创建滑动窗口限流器。