middleware

package
v0.0.0-...-65eb38e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 28, 2026 License: MIT Imports: 32 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ChannelID       = "channel_id"
	Group           = "group"
	Token           = "token"
	GroupBalance    = "group_balance"
	RequestModel    = "request_model"
	RequestUser     = "request_user"
	RequestMetadata = "request_metadata"
	RequestAt       = "request_at"
	RequestID       = "request_id"
	ModelCaches     = "model_caches"
	ModelConfig     = "model_config"
	Mode            = "mode"
	JobID           = "job_id"
	GenerationID    = "generation_id"
	ResponseID      = "response_id"
)
View Source
const (
	XRateLimitLimitRequests = "X-RateLimit-Limit-Requests"
	//nolint:gosec
	XRateLimitLimitTokens       = "X-RateLimit-Limit-Tokens"
	XRateLimitRemainingRequests = "X-RateLimit-Remaining-Requests"
	//nolint:gosec
	XRateLimitRemainingTokens = "X-RateLimit-Remaining-Tokens"
	XRateLimitResetRequests   = "X-RateLimit-Reset-Requests"
	//nolint:gosec
	XRateLimitResetTokens = "X-RateLimit-Reset-Tokens"
)
View Source
const (
	GroupBalanceNotEnough = "group_balance_not_enough"
)
View Source
const (
	RequestIDHeader = "X-Request-Id"
)

Variables

View Source
var (
	ErrRequestRateLimitExceeded = errors.New("request rate limit exceeded, please try again later")
	ErrRequestTpmLimitExceeded  = errors.New("request tpm limit exceeded, please try again later")
)

Functions

func AbortLogWithMessage

func AbortLogWithMessage(
	c *gin.Context,
	statusCode int,
	message string,
	opts ...relaymodel.WrapperErrorOptionFunc,
)

func AbortLogWithMessageWithMode

func AbortLogWithMessageWithMode(
	m mode.Mode,
	c *gin.Context,
	statusCode int,
	message string,
	opts ...relaymodel.WrapperErrorOptionFunc,
)

func AbortWithMessage

func AbortWithMessage(
	c *gin.Context,
	statusCode int,
	message string,
	opts ...relaymodel.WrapperErrorOptionFunc,
)

func AbortWithMessageWithMode

func AbortWithMessageWithMode(
	m mode.Mode,
	c *gin.Context,
	statusCode int,
	message string,
	opts ...relaymodel.WrapperErrorOptionFunc,
)

func AdminAuth

func AdminAuth(c *gin.Context)

func CORS

func CORS() gin.HandlerFunc

func CheckRelayMode

func CheckRelayMode(requestMode, modelMode mode.Mode) bool

func ErrorResponse

func ErrorResponse(c *gin.Context, code int, message string)

func GenRequestID

func GenRequestID(t time.Time) string

func GetChannelID

func GetChannelID(c *gin.Context) int

func GetGenerationID

func GetGenerationID(c *gin.Context) string

func GetGroup

func GetGroup(c *gin.Context) model.GroupCache

func GetGroupAdjustedModelConfig

func GetGroupAdjustedModelConfig(group model.GroupCache, mc model.ModelConfig) model.ModelConfig

func GetJobID

func GetJobID(c *gin.Context) string

func GetMode

func GetMode(c *gin.Context) mode.Mode

func GetModelCaches

func GetModelCaches(c *gin.Context) *model.ModelCaches

func GetModelConfig

func GetModelConfig(c *gin.Context) model.ModelConfig

func GetModelFromJSON

func GetModelFromJSON(body []byte) (string, error)

func GetPreviousResponseIDFromJSON

func GetPreviousResponseIDFromJSON(body []byte) (string, error)

func GetRequestAt

func GetRequestAt(c *gin.Context) time.Time

func GetRequestID

func GetRequestID(c *gin.Context) string

func GetRequestMetadata

func GetRequestMetadata(c *gin.Context) map[string]string

func GetRequestMetadataFromJSON

func GetRequestMetadataFromJSON(body []byte) (map[string]string, error)

func GetRequestModel

func GetRequestModel(c *gin.Context) string

func GetRequestUser

func GetRequestUser(c *gin.Context) string

func GetRequestUserFromJSON

func GetRequestUserFromJSON(body []byte) (string, error)

func GetResponseID

func GetResponseID(c *gin.Context) string

func GetToken

func GetToken(c *gin.Context) model.TokenCache

func GinRecoveryHandler

func GinRecoveryHandler(c *gin.Context)

func IPBlock

func IPBlock(c *gin.Context)

func MCPAuth

func MCPAuth(c *gin.Context)

func NewDistribute

func NewDistribute(mode mode.Mode) gin.HandlerFunc

func NewLog

func NewLog(l *logrus.Logger) gin.HandlerFunc

func NewMetaByContext

func NewMetaByContext(c *gin.Context,
	channel *model.Channel,
	mode mode.Mode,
	opts ...meta.Option,
) *meta.Meta

func RequestIDMiddleware

func RequestIDMiddleware(c *gin.Context)

func SetLogActualModelFields

func SetLogActualModelFields(fields logrus.Fields, actualModel string)

func SetLogChannelFields

func SetLogChannelFields(fields logrus.Fields, channel meta.ChannelMeta)

func SetLogFieldsFromMeta

func SetLogFieldsFromMeta(m *meta.Meta, fields logrus.Fields)

func SetLogGroupFields

func SetLogGroupFields(fields logrus.Fields, group model.GroupCache)

func SetLogModeField

func SetLogModeField(fields logrus.Fields, mode mode.Mode)

func SetLogModelFields

func SetLogModelFields(fields logrus.Fields, model string)

func SetLogRequestIDField

func SetLogRequestIDField(fields logrus.Fields, requestID string)

func SetLogTokenFields

func SetLogTokenFields(fields logrus.Fields, token model.TokenCache, internal bool)

func SetRequestAt

func SetRequestAt(c *gin.Context, requestAt time.Time)

func SetRequestID

func SetRequestID(c *gin.Context, id string)

func SuccessResponse

func SuccessResponse(c *gin.Context, data any)

func TokenAuth

func TokenAuth(c *gin.Context)

Types

type APIResponse

type APIResponse struct {
	Data    any    `json:"data,omitempty"`
	Message string `json:"message,omitempty"`
	Success bool   `json:"success"`
}

type GroupBalanceConsumer

type GroupBalanceConsumer struct {
	Group string

	CheckBalance func(amount float64) bool
	Consumer     balance.PostGroupConsumer
	// contains filtered or unexported fields
}

func GetGroupBalanceConsumer

func GetGroupBalanceConsumer(
	c *gin.Context,
	group model.GroupCache,
) (*GroupBalanceConsumer, error)

func GetGroupBalanceConsumerFromContext

func GetGroupBalanceConsumerFromContext(c *gin.Context) *GroupBalanceConsumer

type RequestWithMetadata

type RequestWithMetadata struct {
	Metadata map[string]string `json:"metadata,omitempty"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL