P0 fixes: - ModelError.Is(): use exact matching instead of substring contains() - shouldClearStickySession: add context param for cancellation/tracing P1 fixes: - TODO stubs: return 501 Not Implemented errors - validateInstanceSignature: deduplicate to shared validateCodeSignature() - Error messages: standardize to English only - http.go: remove pseudo if-else with duplicate branches
30 lines
1.1 KiB
Go
30 lines
1.1 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
)
|
|
|
|
type ProxyLatencyInfo struct {
|
|
Success bool `json:"success"`
|
|
LatencyMs *int64 `json:"latency_ms,omitempty"`
|
|
Message string `json:"message,omitempty"`
|
|
IPAddress string `json:"ip_address,omitempty"`
|
|
Country string `json:"country,omitempty"`
|
|
CountryCode string `json:"country_code,omitempty"`
|
|
Region string `json:"region,omitempty"`
|
|
City string `json:"city,omitempty"`
|
|
QualityStatus string `json:"quality_status,omitempty"`
|
|
QualityScore *int `json:"quality_score,omitempty"`
|
|
QualityGrade string `json:"quality_grade,omitempty"`
|
|
QualitySummary string `json:"quality_summary,omitempty"`
|
|
QualityCheckedAt *int64 `json:"quality_checked_at,omitempty"`
|
|
QualityCFRay string `json:"quality_cf_ray,omitempty"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type ProxyLatencyCache interface {
|
|
GetProxyLatencies(ctx context.Context, proxyIDs []int64) (map[int64]*ProxyLatencyInfo, error)
|
|
SetProxyLatency(ctx context.Context, proxyID int64, info *ProxyLatencyInfo) error
|
|
}
|