SYMBOL INDEX (5366 symbols across 586 files) FILE: common/api_type.go function ChannelType2APIType (line 5) | func ChannelType2APIType(channelType int) (int, bool) { FILE: common/audio.go function GetAudioDuration (line 21) | func GetAudioDuration(ctx context.Context, f io.ReadSeeker, ext string) ... function getMP3Duration (line 54) | func getMP3Duration(r io.Reader) (float64, error) { function getWAVDuration (line 73) | func getWAVDuration(r io.ReadSeeker) (float64, error) { function getFLACDuration (line 137) | func getFLACDuration(r io.Reader) (float64, error) { function getM4ADuration (line 150) | func getM4ADuration(r io.ReadSeeker) (float64, error) { function getOGGDuration (line 161) | func getOGGDuration(r io.ReadSeeker) (float64, error) { function getOpusDuration (line 196) | func getOpusDuration(r io.ReadSeeker) (float64, error) { function getAIFFDuration (line 257) | func getAIFFDuration(r io.ReadSeeker) (float64, error) { function getWebMDuration (line 277) | func getWebMDuration(r io.ReadSeeker) (float64, error) { function getAACDuration (line 312) | func getAACDuration(r io.ReadSeeker) (float64, error) { FILE: common/body_storage.go type BodyStorage (line 14) | type BodyStorage interface type memoryStorage (line 29) | type memoryStorage struct method Read (line 47) | func (m *memoryStorage) Read(p []byte) (n int, err error) { method Seek (line 56) | func (m *memoryStorage) Seek(offset int64, whence int) (int64, error) { method Close (line 65) | func (m *memoryStorage) Close() error { method Bytes (line 74) | func (m *memoryStorage) Bytes() ([]byte, error) { method Size (line 83) | func (m *memoryStorage) Size() int64 { method IsDisk (line 87) | func (m *memoryStorage) IsDisk() bool { function newMemoryStorage (line 37) | func newMemoryStorage(data []byte) *memoryStorage { type diskStorage (line 92) | type diskStorage struct method Read (line 169) | func (d *diskStorage) Read(p []byte) (n int, err error) { method Seek (line 178) | func (d *diskStorage) Seek(offset int64, whence int) (int64, error) { method Close (line 187) | func (d *diskStorage) Close() error { method Bytes (line 198) | func (d *diskStorage) Bytes() ([]byte, error) { method Size (line 232) | func (d *diskStorage) Size() int64 { method IsDisk (line 236) | func (d *diskStorage) IsDisk() bool { function newDiskStorage (line 100) | func newDiskStorage(data []byte, cachePath string) (*diskStorage, error) { function newDiskStorageFromReader (line 132) | func newDiskStorageFromReader(reader io.Reader, maxBytes int64, cachePat... function CreateBodyStorage (line 241) | func CreateBodyStorage(data []byte) (BodyStorage, error) { function CreateBodyStorageFromReader (line 262) | func CreateBodyStorageFromReader(reader io.Reader, contentLength int64, ... function ReaderOnly (line 307) | func ReaderOnly(r io.Reader) io.Reader { function CleanupOldCacheFiles (line 312) | func CleanupOldCacheFiles() { FILE: common/constants.go constant RequestIdKey (line 137) | RequestIdKey = "X-Oneapi-Request-Id" constant RoleGuestUser (line 141) | RoleGuestUser = 0 constant RoleCommonUser (line 142) | RoleCommonUser = 1 constant RoleAdminUser (line 143) | RoleAdminUser = 10 constant RoleRootUser (line 144) | RoleRootUser = 100 function IsValidateRole (line 147) | func IsValidateRole(role int) bool { constant UserStatusEnabled (line 188) | UserStatusEnabled = 1 constant UserStatusDisabled (line 189) | UserStatusDisabled = 2 constant TokenStatusEnabled (line 193) | TokenStatusEnabled = 1 constant TokenStatusDisabled (line 194) | TokenStatusDisabled = 2 constant TokenStatusExpired (line 195) | TokenStatusExpired = 3 constant TokenStatusExhausted (line 196) | TokenStatusExhausted = 4 constant RedemptionCodeStatusEnabled (line 200) | RedemptionCodeStatusEnabled = 1 constant RedemptionCodeStatusDisabled (line 201) | RedemptionCodeStatusDisabled = 2 constant RedemptionCodeStatusUsed (line 202) | RedemptionCodeStatusUsed = 3 constant ChannelStatusUnknown (line 206) | ChannelStatusUnknown = 0 constant ChannelStatusEnabled (line 207) | ChannelStatusEnabled = 1 constant ChannelStatusManuallyDisabled (line 208) | ChannelStatusManuallyDisabled = 2 constant ChannelStatusAutoDisabled (line 209) | ChannelStatusAutoDisabled = 3 constant TopUpStatusPending (line 213) | TopUpStatusPending = "pending" constant TopUpStatusSuccess (line 214) | TopUpStatusSuccess = "success" constant TopUpStatusFailed (line 215) | TopUpStatusFailed = "failed" constant TopUpStatusExpired (line 216) | TopUpStatusExpired = "expired" FILE: common/copy.go function DeepCopy (line 9) | func DeepCopy[T any](src *T) (*T, error) { FILE: common/crypto.go function GenerateHMACWithKey (line 11) | func GenerateHMACWithKey(key []byte, data string) string { function GenerateHMAC (line 17) | func GenerateHMAC(data string) string { function Password2Hash (line 23) | func Password2Hash(password string) (string, error) { function ValidatePasswordAndHash (line 29) | func ValidatePasswordAndHash(password string, hash string) bool { FILE: common/custom-event.go type stringWriter (line 15) | type stringWriter interface type stringWrapper (line 20) | type stringWrapper struct method writeString (line 24) | func (w stringWrapper) writeString(str string) (int, error) { function checkWriter (line 28) | func checkWriter(writer io.Writer) stringWriter { type CustomEvent (line 51) | type CustomEvent struct method Render (line 73) | func (r CustomEvent) Render(w http.ResponseWriter) error { method WriteContentType (line 78) | func (r CustomEvent) WriteContentType(w http.ResponseWriter) { function encode (line 60) | func encode(writer io.Writer, event CustomEvent) error { function writeData (line 65) | func writeData(w stringWriter, data interface{}) error { FILE: common/database.go constant DatabaseTypeMySQL (line 4) | DatabaseTypeMySQL = "mysql" constant DatabaseTypeSQLite (line 5) | DatabaseTypeSQLite = "sqlite" constant DatabaseTypePostgreSQL (line 6) | DatabaseTypePostgreSQL = "postgres" FILE: common/disk_cache.go type DiskCacheType (line 13) | type DiskCacheType constant DiskCacheTypeBody (line 16) | DiskCacheTypeBody DiskCacheType = "body" constant DiskCacheTypeFile (line 17) | DiskCacheTypeFile DiskCacheType = "file" constant diskCacheDir (line 21) | diskCacheDir = "new-api-body-cache" function GetDiskCacheDir (line 25) | func GetDiskCacheDir() string { function EnsureDiskCacheDir (line 34) | func EnsureDiskCacheDir() error { function CreateDiskCacheFile (line 42) | func CreateDiskCacheFile(cacheType DiskCacheType) (string, *os.File, err... function WriteDiskCacheFile (line 61) | func WriteDiskCacheFile(cacheType DiskCacheType, data []byte) (string, e... function WriteDiskCacheFileString (line 83) | func WriteDiskCacheFileString(cacheType DiskCacheType, data string) (str... function ReadDiskCacheFile (line 88) | func ReadDiskCacheFile(filePath string) ([]byte, error) { function ReadDiskCacheFileString (line 93) | func ReadDiskCacheFileString(filePath string) (string, error) { function RemoveDiskCacheFile (line 102) | func RemoveDiskCacheFile(filePath string) error { function CleanupOldDiskCacheFiles (line 109) | func CleanupOldDiskCacheFiles(maxAge time.Duration) error { function GetDiskCacheInfo (line 141) | func GetDiskCacheInfo() (fileCount int, totalSize int64, err error) { function ShouldUseDiskCache (line 167) | func ShouldUseDiskCache(dataSize int64) bool { FILE: common/disk_cache_config.go type DiskCacheConfig (line 9) | type DiskCacheConfig struct function GetDiskCacheConfig (line 30) | func GetDiskCacheConfig() DiskCacheConfig { function SetDiskCacheConfig (line 37) | func SetDiskCacheConfig(config DiskCacheConfig) { function IsDiskCacheEnabled (line 44) | func IsDiskCacheEnabled() bool { function GetDiskCacheThresholdBytes (line 51) | func GetDiskCacheThresholdBytes() int64 { function GetDiskCacheMaxSizeBytes (line 58) | func GetDiskCacheMaxSizeBytes() int64 { function GetDiskCachePath (line 65) | func GetDiskCachePath() string { type DiskCacheStats (line 72) | type DiskCacheStats struct function GetDiskCacheStats (line 94) | func GetDiskCacheStats() DiskCacheStats { function IncrementDiskFiles (line 109) | func IncrementDiskFiles(size int64) { function DecrementDiskFiles (line 115) | func DecrementDiskFiles(size int64) { function IncrementMemoryBuffers (line 125) | func IncrementMemoryBuffers(size int64) { function DecrementMemoryBuffers (line 131) | func DecrementMemoryBuffers(size int64) { function IncrementDiskCacheHits (line 137) | func IncrementDiskCacheHits() { function IncrementMemoryCacheHits (line 142) | func IncrementMemoryCacheHits() { function ResetDiskCacheStats (line 147) | func ResetDiskCacheStats() { function ResetDiskCacheUsage (line 153) | func ResetDiskCacheUsage() { function SyncDiskCacheStats (line 160) | func SyncDiskCacheStats() { function IsDiskCacheAvailable (line 170) | func IsDiskCacheAvailable(requestSize int64) bool { FILE: common/email-outlook-auth.go type outlookAuth (line 9) | type outlookAuth struct method Start (line 17) | func (a *outlookAuth) Start(_ *smtp.ServerInfo) (string, []byte, error) { method Next (line 21) | func (a *outlookAuth) Next(fromServer []byte, more bool) ([]byte, erro... function LoginAuth (line 13) | func LoginAuth(username, password string) smtp.Auth { function isOutlookServer (line 35) | func isOutlookServer(server string) bool { FILE: common/email.go function generateMessageID (line 13) | func generateMessageID() (string, error) { function SendEmail (line 22) | func SendEmail(subject string, receiver string, content string) error { FILE: common/embed-file-system.go type embedFileSystem (line 14) | type embedFileSystem struct method Exists (line 18) | func (e *embedFileSystem) Exists(prefix string, path string) bool { method Open (line 26) | func (e *embedFileSystem) Open(name string) (http.File, error) { function EmbedFolder (line 35) | func EmbedFolder(fsEmbed embed.FS, targetPath string) static.ServeFileSy... FILE: common/endpoint_defaults.go type EndpointInfo (line 13) | type EndpointInfo struct function GetDefaultEndpointInfo (line 31) | func GetDefaultEndpointInfo(et constant.EndpointType) (EndpointInfo, boo... FILE: common/endpoint_type.go function GetEndpointTypesByChannelType (line 6) | func GetEndpointTypesByChannelType(channelType int, modelName string) []... FILE: common/env.go function GetEnvOrDefault (line 9) | func GetEnvOrDefault(env string, defaultValue int) int { function GetEnvOrDefaultString (line 21) | func GetEnvOrDefaultString(env string, defaultValue string) string { function GetEnvOrDefaultBool (line 28) | func GetEnvOrDefaultBool(env string, defaultValue bool) bool { FILE: common/gin.go constant KeyRequestBody (line 20) | KeyRequestBody = "key_request_body" constant KeyBodyStorage (line 21) | KeyBodyStorage = "key_body_storage" function IsRequestBodyTooLargeError (line 25) | func IsRequestBodyTooLargeError(err error) bool { function GetRequestBody (line 36) | func GetRequestBody(c *gin.Context) (io.Seeker, error) { function GetBodyStorage (line 86) | func GetBodyStorage(c *gin.Context) (BodyStorage, error) { function CleanupBodyStorage (line 99) | func CleanupBodyStorage(c *gin.Context) { function UnmarshalBodyReusable (line 108) | func UnmarshalBodyReusable(c *gin.Context, v any) error { function SetContextKey (line 139) | func SetContextKey(c *gin.Context, key constant.ContextKey, value any) { function GetContextKey (line 143) | func GetContextKey(c *gin.Context, key constant.ContextKey) (any, bool) { function GetContextKeyString (line 147) | func GetContextKeyString(c *gin.Context, key constant.ContextKey) string { function GetContextKeyInt (line 151) | func GetContextKeyInt(c *gin.Context, key constant.ContextKey) int { function GetContextKeyBool (line 155) | func GetContextKeyBool(c *gin.Context, key constant.ContextKey) bool { function GetContextKeyStringSlice (line 159) | func GetContextKeyStringSlice(c *gin.Context, key constant.ContextKey) [... function GetContextKeyStringMap (line 163) | func GetContextKeyStringMap(c *gin.Context, key constant.ContextKey) map... function GetContextKeyTime (line 167) | func GetContextKeyTime(c *gin.Context, key constant.ContextKey) time.Time { function GetContextKeyType (line 171) | func GetContextKeyType[T any](c *gin.Context, key constant.ContextKey) (... function ApiError (line 181) | func ApiError(c *gin.Context, err error) { function ApiErrorMsg (line 188) | func ApiErrorMsg(c *gin.Context, msg string) { function ApiSuccess (line 195) | func ApiSuccess(c *gin.Context, data any) { function ApiErrorI18n (line 205) | func ApiErrorI18n(c *gin.Context, key string, args ...map[string]any) { function ApiSuccessI18n (line 214) | func ApiSuccessI18n(c *gin.Context, key string, data any, args ...map[st... function init (line 228) | func init() { function ParseMultipartFormReusable (line 236) | func ParseMultipartFormReusable(c *gin.Context) (*multipart.Form, error) { function processFormMap (line 274) | func processFormMap(formMap map[string]any, v any) error { function parseFormData (line 288) | func parseFormData(data []byte, v any) error { function parseMultipartFormData (line 305) | func parseMultipartFormData(c *gin.Context, data []byte, v any) error { function parseBoundary (line 342) | func parseBoundary(contentType string) (string, error) { function multipartMemoryLimit (line 359) | func multipartMemoryLimit() int64 { FILE: common/go-channel.go function SafeSendBool (line 7) | func SafeSendBool(ch chan bool, value bool) (closed bool) { function SafeSendString (line 22) | func SafeSendString(ch chan string, value string) (closed bool) { function SafeSendStringTimeout (line 38) | func SafeSendStringTimeout(ch chan string, value string, timeout int) (c... FILE: common/gopool.go function init (line 13) | func init() { function RelayCtxGo (line 23) | func RelayCtxGo(ctx context.Context, f func()) { FILE: common/hash.go function Sha256Raw (line 10) | func Sha256Raw(data []byte) []byte { function Sha1Raw (line 16) | func Sha1Raw(data []byte) []byte { function Sha1 (line 22) | func Sha1(data []byte) string { function HmacSha256Raw (line 26) | func HmacSha256Raw(message, key []byte) []byte { function HmacSha256 (line 32) | func HmacSha256(message, key string) string { FILE: common/init.go function printHelp (line 24) | func printHelp() { function InitEnv (line 31) | func InitEnv() { function initConstantEnv (line 130) | func initConstantEnv() { FILE: common/ip.go function IsIP (line 5) | func IsIP(s string) bool { function ParseIP (line 10) | func ParseIP(s string) net.IP { function IsPrivateIP (line 14) | func IsPrivateIP(ip net.IP) bool { function IsIpInCIDRList (line 33) | func IsIpInCIDRList(ip net.IP, cidrList []string) bool { FILE: common/json.go function Unmarshal (line 9) | func Unmarshal(data []byte, v any) error { function UnmarshalJsonStr (line 13) | func UnmarshalJsonStr(data string, v any) error { function DecodeJson (line 17) | func DecodeJson(reader io.Reader, v any) error { function Marshal (line 21) | func Marshal(v any) ([]byte, error) { function GetJsonType (line 25) | func GetJsonType(data json.RawMessage) string { FILE: common/limiter/limiter.go type RedisLimiter (line 16) | type RedisLimiter struct method Allow (line 42) | func (rl *RedisLimiter) Allow(ctx context.Context, key string, opts ..... function New (line 26) | func New(ctx context.Context, r *redis.Client) *RedisLimiter { type Config (line 72) | type Config struct type Option (line 78) | type Option function WithCapacity (line 80) | func WithCapacity(c int64) Option { function WithRate (line 84) | func WithRate(r int64) Option { function WithRequested (line 88) | func WithRequested(n int64) Option { FILE: common/model.go function IsOpenAIResponseOnlyModel (line 29) | func IsOpenAIResponseOnlyModel(modelName string) bool { function IsImageGenerationModel (line 38) | func IsImageGenerationModel(modelName string) bool { function IsOpenAITextModel (line 51) | func IsOpenAITextModel(modelName string) bool { FILE: common/page_info.go type PageInfo (line 9) | type PageInfo struct method GetStartIdx (line 17) | func (p *PageInfo) GetStartIdx() int { method GetEndIdx (line 21) | func (p *PageInfo) GetEndIdx() int { method GetPageSize (line 25) | func (p *PageInfo) GetPageSize() int { method GetPage (line 29) | func (p *PageInfo) GetPage() int { method SetTotal (line 33) | func (p *PageInfo) SetTotal(total int) { method SetItems (line 37) | func (p *PageInfo) SetItems(items any) { function GetPageQuery (line 41) | func GetPageQuery(c *gin.Context) *PageInfo { FILE: common/performance_config.go type PerformanceMonitorConfig (line 6) | type PerformanceMonitorConfig struct function init (line 15) | func init() { function GetPerformanceMonitorConfig (line 26) | func GetPerformanceMonitorConfig() PerformanceMonitorConfig { function SetPerformanceMonitorConfig (line 31) | func SetPerformanceMonitorConfig(config PerformanceMonitorConfig) { FILE: common/pprof.go function Monitor (line 13) | func Monitor() { FILE: common/pyro.go function StartPyroScope (line 9) | func StartPyroScope() error { FILE: common/quota.go function GetTrustQuota (line 3) | func GetTrustQuota() int { FILE: common/rate-limit.go type InMemoryRateLimiter (line 8) | type InMemoryRateLimiter struct method Init (line 14) | func (l *InMemoryRateLimiter) Init(expirationDuration time.Duration) { method clearExpiredItems (line 28) | func (l *InMemoryRateLimiter) clearExpiredItems() { method Request (line 45) | func (l *InMemoryRateLimiter) Request(key string, maxRequestNum int, d... FILE: common/redis.go function RedisKeyCacheSeconds (line 19) | func RedisKeyCacheSeconds() int { function InitRedisClient (line 24) | func InitRedisClient() (err error) { function ParseRedisOption (line 56) | func ParseRedisOption() *redis.Options { function RedisSet (line 64) | func RedisSet(key string, value string, expiration time.Duration) error { function RedisGet (line 72) | func RedisGet(key string) (string, error) { function RedisDel (line 91) | func RedisDel(key string) error { function RedisDelKey (line 99) | func RedisDelKey(key string) error { function RedisHSetObj (line 107) | func RedisHSetObj(key string, obj interface{}, expiration time.Duration)... function RedisHGetObj (line 161) | func RedisHGetObj(key string, obj interface{}) error { function RedisIncr (line 242) | func RedisIncr(key string, delta int64) error { function RedisHIncrBy (line 275) | func RedisHIncrBy(key, field string, delta int64) error { function RedisHSetField (line 302) | func RedisHSetField(key, field string, value interface{}) error { FILE: common/ssrf_protection.go type SSRFProtection (line 12) | type SSRFProtection struct method isAllowedPort (line 133) | func (p *SSRFProtection) isAllowedPort(port int) bool { method isDomainAllowed (line 173) | func (p *SSRFProtection) isDomainAllowed(domain string) bool { method IsIPAccessAllowed (line 193) | func (p *SSRFProtection) IsIPAccessAllowed(ip net.IP) bool { method ValidateURL (line 208) | func (p *SSRFProtection) ValidateURL(urlStr string) error { function isPrivateIP (line 33) | func isPrivateIP(ip net.IP) bool { function parsePortRanges (line 76) | func parsePortRanges(portConfigs []string) ([]int, error) { function isDomainListed (line 147) | func isDomainListed(domain string, list []string) bool { function isIPListed (line 184) | func isIPListed(ip net.IP, list []string) bool { function ValidateURLWithFetchSetting (line 289) | func ValidateURLWithFetchSetting(urlStr string, enableSSRFProtection, al... FILE: common/str.go function GetStringIfEmpty (line 23) | func GetStringIfEmpty(str string, defaultValue string) string { function GetRandomString (line 30) | func GetRandomString(length int) string { function MapToJsonStr (line 37) | func MapToJsonStr(m map[string]interface{}) string { function StrToMap (line 45) | func StrToMap(str string) (map[string]interface{}, error) { function StrToJsonArray (line 54) | func StrToJsonArray(str string) ([]interface{}, error) { function IsJsonArray (line 63) | func IsJsonArray(str string) bool { function IsJsonObject (line 68) | func IsJsonObject(str string) bool { function String2Int (line 73) | func String2Int(str string) int { function StringsContains (line 81) | func StringsContains(strs []string, str string) bool { function StringToByteSlice (line 91) | func StringToByteSlice(s string) []byte { function EncodeBase64 (line 97) | func EncodeBase64(str string) string { function GetJsonString (line 101) | func GetJsonString(data any) string { function NormalizeBillingPreference (line 110) | func NormalizeBillingPreference(pref string) string { function MaskEmail (line 121) | func MaskEmail(email string) string { function maskHostTail (line 139) | func maskHostTail(parts []string) []string { function maskHostForURL (line 154) | func maskHostForURL(host string) string { function maskHostForPlainDomain (line 165) | func maskHostForPlainDomain(domain string) string { function MaskSensitiveInfo (line 188) | func MaskSensitiveInfo(str string) string { FILE: common/sys_log.go function SysLog (line 11) | func SysLog(s string) { function SysError (line 16) | func SysError(s string) { function FatalLog (line 21) | func FatalLog(v ...any) { function LogStartupSuccess (line 27) | func LogStartupSuccess(startTime time.Time, port string) { FILE: common/system_monitor.go type DiskSpaceInfo (line 12) | type DiskSpaceInfo struct type SystemStatus (line 24) | type SystemStatus struct function init (line 32) | func init() { function StartSystemMonitor (line 37) | func StartSystemMonitor() { function updateSystemStatus (line 52) | func updateSystemStatus() { function GetSystemStatus (line 79) | func GetSystemStatus() SystemStatus { FILE: common/system_monitor_unix.go function GetDiskSpaceInfo (line 12) | func GetDiskSpaceInfo() DiskSpaceInfo { FILE: common/system_monitor_windows.go function GetDiskSpaceInfo (line 12) | func GetDiskSpaceInfo() DiskSpaceInfo { FILE: common/topup-ratio.go function TopupGroupRatio2JSONString (line 15) | func TopupGroupRatio2JSONString() string { function UpdateTopupGroupRatioByJSONString (line 25) | func UpdateTopupGroupRatioByJSONString(jsonStr string) error { function GetTopupGroupRatio (line 32) | func GetTopupGroupRatio(name string) float64 { FILE: common/totp.go constant BackupCodeLength (line 16) | BackupCodeLength = 8 constant BackupCodeCount (line 17) | BackupCodeCount = 4 constant MaxFailAttempts (line 20) | MaxFailAttempts = 5 constant LockoutDuration (line 21) | LockoutDuration = 300 function GenerateTOTPSecret (line 25) | func GenerateTOTPSecret(accountName string) (*otp.Key, error) { function ValidateTOTPCode (line 37) | func ValidateTOTPCode(secret, code string) bool { function GenerateBackupCodes (line 49) | func GenerateBackupCodes() ([]string, error) { function generateRandomBackupCode (line 64) | func generateRandomBackupCode() (string, error) { function ValidateBackupCode (line 82) | func ValidateBackupCode(code string) bool { function NormalizeBackupCode (line 100) | func NormalizeBackupCode(code string) string { function HashBackupCode (line 109) | func HashBackupCode(code string) (string, error) { function Get2FAIssuer (line 115) | func Get2FAIssuer() string { function getEnvOrDefault (line 120) | func getEnvOrDefault(key, defaultValue string) string { function ValidateNumericCode (line 128) | func ValidateNumericCode(code string) (string, error) { function GenerateQRCodeData (line 145) | func GenerateQRCodeData(secret, username string) string { FILE: common/url_validator.go function ValidateRedirectURL (line 19) | func ValidateRedirectURL(rawURL string) error { FILE: common/url_validator_test.go function TestValidateRedirectURL (line 9) | func TestValidateRedirectURL(t *testing.T) { function contains (line 122) | func contains(s, substr string) bool { function findSubstring (line 127) | func findSubstring(s, substr string) bool { FILE: common/utils.go function OpenBrowser (line 26) | func OpenBrowser(url string) { function GetIp (line 42) | func GetIp() (ip string) { function GetNetworkIps (line 69) | func GetNetworkIps() []string { function IsRunningInContainer (line 94) | func IsRunningInContainer() bool { function Bytes2Size (line 145) | func Bytes2Size(num int64) string { function Seconds2Time (line 163) | func Seconds2Time(num int) (time string) { function Interface2String (line 188) | func Interface2String(inter interface{}) string { function UnescapeHTML (line 208) | func UnescapeHTML(x string) interface{} { function IntMax (line 212) | func IntMax(a int, b int) int { function GetUUID (line 220) | func GetUUID() string { constant keyChars (line 226) | keyChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" function GenerateRandomCharsKey (line 228) | func GenerateRandomCharsKey(length int) (string, error) { function GenerateRandomKey (line 243) | func GenerateRandomKey(length int) (string, error) { function GenerateKey (line 251) | func GenerateKey() (string, error) { function GetRandomInt (line 256) | func GetRandomInt(max int) int { function GetTimestamp (line 261) | func GetTimestamp() int64 { function GetTimeString (line 265) | func GetTimeString() string { function Max (line 270) | func Max(a int, b int) int { function MessageWithRequestId (line 278) | func MessageWithRequestId(message string, id string) string { function RandomSleep (line 282) | func RandomSleep() { function GetPointer (line 287) | func GetPointer[T any](v T) *T { function Any2Type (line 291) | func Any2Type[T any](data any) (T, error) { function SaveTmpFile (line 306) | func SaveTmpFile(filename string, data io.Reader) (string, error) { function BuildURL (line 322) | func BuildURL(base string, endpoint string) string { FILE: common/validate.go function init (line 7) | func init() { FILE: common/verification.go type verificationValue (line 11) | type verificationValue struct constant EmailVerificationPurpose (line 17) | EmailVerificationPurpose = "v" constant PasswordResetPurpose (line 18) | PasswordResetPurpose = "r" function GenerateVerificationCode (line 26) | func GenerateVerificationCode(length int) string { function RegisterVerificationCodeWithKey (line 35) | func RegisterVerificationCodeWithKey(key string, code string, purpose st... function VerifyCodeWithKey (line 47) | func VerifyCodeWithKey(key string, code string, purpose string) bool { function DeleteKey (line 58) | func DeleteKey(key string, purpose string) { function removeExpiredPairs (line 65) | func removeExpiredPairs() { function init (line 74) | func init() { FILE: constant/api_type.go constant APITypeOpenAI (line 4) | APITypeOpenAI = iota constant APITypeAnthropic (line 5) | APITypeAnthropic constant APITypePaLM (line 6) | APITypePaLM constant APITypeBaidu (line 7) | APITypeBaidu constant APITypeZhipu (line 8) | APITypeZhipu constant APITypeAli (line 9) | APITypeAli constant APITypeXunfei (line 10) | APITypeXunfei constant APITypeAIProxyLibrary (line 11) | APITypeAIProxyLibrary constant APITypeTencent (line 12) | APITypeTencent constant APITypeGemini (line 13) | APITypeGemini constant APITypeZhipuV4 (line 14) | APITypeZhipuV4 constant APITypeOllama (line 15) | APITypeOllama constant APITypePerplexity (line 16) | APITypePerplexity constant APITypeAws (line 17) | APITypeAws constant APITypeCohere (line 18) | APITypeCohere constant APITypeDify (line 19) | APITypeDify constant APITypeJina (line 20) | APITypeJina constant APITypeCloudflare (line 21) | APITypeCloudflare constant APITypeSiliconFlow (line 22) | APITypeSiliconFlow constant APITypeVertexAi (line 23) | APITypeVertexAi constant APITypeMistral (line 24) | APITypeMistral constant APITypeDeepSeek (line 25) | APITypeDeepSeek constant APITypeMokaAI (line 26) | APITypeMokaAI constant APITypeVolcEngine (line 27) | APITypeVolcEngine constant APITypeBaiduV2 (line 28) | APITypeBaiduV2 constant APITypeOpenRouter (line 29) | APITypeOpenRouter constant APITypeXinference (line 30) | APITypeXinference constant APITypeXai (line 31) | APITypeXai constant APITypeCoze (line 32) | APITypeCoze constant APITypeJimeng (line 33) | APITypeJimeng constant APITypeMoonshot (line 34) | APITypeMoonshot constant APITypeSubmodel (line 35) | APITypeSubmodel constant APITypeMiniMax (line 36) | APITypeMiniMax constant APITypeReplicate (line 37) | APITypeReplicate constant APITypeCodex (line 38) | APITypeCodex constant APITypeDummy (line 39) | APITypeDummy FILE: constant/cache_key.go constant UserGroupKeyFmt (line 5) | UserGroupKeyFmt = "user_group:%d" constant UserQuotaKeyFmt (line 6) | UserQuotaKeyFmt = "user_quota:%d" constant UserEnabledKeyFmt (line 7) | UserEnabledKeyFmt = "user_enabled:%d" constant UserUsernameKeyFmt (line 8) | UserUsernameKeyFmt = "user_name:%d" constant TokenFiledRemainQuota (line 12) | TokenFiledRemainQuota = "RemainQuota" constant TokenFieldGroup (line 13) | TokenFieldGroup = "Group" FILE: constant/channel.go constant ChannelTypeUnknown (line 4) | ChannelTypeUnknown = 0 constant ChannelTypeOpenAI (line 5) | ChannelTypeOpenAI = 1 constant ChannelTypeMidjourney (line 6) | ChannelTypeMidjourney = 2 constant ChannelTypeAzure (line 7) | ChannelTypeAzure = 3 constant ChannelTypeOllama (line 8) | ChannelTypeOllama = 4 constant ChannelTypeMidjourneyPlus (line 9) | ChannelTypeMidjourneyPlus = 5 constant ChannelTypeOpenAIMax (line 10) | ChannelTypeOpenAIMax = 6 constant ChannelTypeOhMyGPT (line 11) | ChannelTypeOhMyGPT = 7 constant ChannelTypeCustom (line 12) | ChannelTypeCustom = 8 constant ChannelTypeAILS (line 13) | ChannelTypeAILS = 9 constant ChannelTypeAIProxy (line 14) | ChannelTypeAIProxy = 10 constant ChannelTypePaLM (line 15) | ChannelTypePaLM = 11 constant ChannelTypeAPI2GPT (line 16) | ChannelTypeAPI2GPT = 12 constant ChannelTypeAIGC2D (line 17) | ChannelTypeAIGC2D = 13 constant ChannelTypeAnthropic (line 18) | ChannelTypeAnthropic = 14 constant ChannelTypeBaidu (line 19) | ChannelTypeBaidu = 15 constant ChannelTypeZhipu (line 20) | ChannelTypeZhipu = 16 constant ChannelTypeAli (line 21) | ChannelTypeAli = 17 constant ChannelTypeXunfei (line 22) | ChannelTypeXunfei = 18 constant ChannelType360 (line 23) | ChannelType360 = 19 constant ChannelTypeOpenRouter (line 24) | ChannelTypeOpenRouter = 20 constant ChannelTypeAIProxyLibrary (line 25) | ChannelTypeAIProxyLibrary = 21 constant ChannelTypeFastGPT (line 26) | ChannelTypeFastGPT = 22 constant ChannelTypeTencent (line 27) | ChannelTypeTencent = 23 constant ChannelTypeGemini (line 28) | ChannelTypeGemini = 24 constant ChannelTypeMoonshot (line 29) | ChannelTypeMoonshot = 25 constant ChannelTypeZhipu_v4 (line 30) | ChannelTypeZhipu_v4 = 26 constant ChannelTypePerplexity (line 31) | ChannelTypePerplexity = 27 constant ChannelTypeLingYiWanWu (line 32) | ChannelTypeLingYiWanWu = 31 constant ChannelTypeAws (line 33) | ChannelTypeAws = 33 constant ChannelTypeCohere (line 34) | ChannelTypeCohere = 34 constant ChannelTypeMiniMax (line 35) | ChannelTypeMiniMax = 35 constant ChannelTypeSunoAPI (line 36) | ChannelTypeSunoAPI = 36 constant ChannelTypeDify (line 37) | ChannelTypeDify = 37 constant ChannelTypeJina (line 38) | ChannelTypeJina = 38 constant ChannelCloudflare (line 39) | ChannelCloudflare = 39 constant ChannelTypeSiliconFlow (line 40) | ChannelTypeSiliconFlow = 40 constant ChannelTypeVertexAi (line 41) | ChannelTypeVertexAi = 41 constant ChannelTypeMistral (line 42) | ChannelTypeMistral = 42 constant ChannelTypeDeepSeek (line 43) | ChannelTypeDeepSeek = 43 constant ChannelTypeMokaAI (line 44) | ChannelTypeMokaAI = 44 constant ChannelTypeVolcEngine (line 45) | ChannelTypeVolcEngine = 45 constant ChannelTypeBaiduV2 (line 46) | ChannelTypeBaiduV2 = 46 constant ChannelTypeXinference (line 47) | ChannelTypeXinference = 47 constant ChannelTypeXai (line 48) | ChannelTypeXai = 48 constant ChannelTypeCoze (line 49) | ChannelTypeCoze = 49 constant ChannelTypeKling (line 50) | ChannelTypeKling = 50 constant ChannelTypeJimeng (line 51) | ChannelTypeJimeng = 51 constant ChannelTypeVidu (line 52) | ChannelTypeVidu = 52 constant ChannelTypeSubmodel (line 53) | ChannelTypeSubmodel = 53 constant ChannelTypeDoubaoVideo (line 54) | ChannelTypeDoubaoVideo = 54 constant ChannelTypeSora (line 55) | ChannelTypeSora = 55 constant ChannelTypeReplicate (line 56) | ChannelTypeReplicate = 56 constant ChannelTypeCodex (line 57) | ChannelTypeCodex = 57 constant ChannelTypeDummy (line 58) | ChannelTypeDummy function GetChannelTypeName (line 180) | func GetChannelTypeName(channelType int) string { type ChannelSpecialBase (line 187) | type ChannelSpecialBase struct FILE: constant/context_key.go type ContextKey (line 3) | type ContextKey constant ContextKeyTokenCountMeta (line 6) | ContextKeyTokenCountMeta ContextKey = "token_count_meta" constant ContextKeyPromptTokens (line 7) | ContextKeyPromptTokens ContextKey = "prompt_tokens" constant ContextKeyEstimatedTokens (line 8) | ContextKeyEstimatedTokens ContextKey = "estimated_tokens" constant ContextKeyOriginalModel (line 10) | ContextKeyOriginalModel ContextKey = "original_model" constant ContextKeyRequestStartTime (line 11) | ContextKeyRequestStartTime ContextKey = "request_start_time" constant ContextKeyTokenUnlimited (line 14) | ContextKeyTokenUnlimited ContextKey = "token_unlimited_quota" constant ContextKeyTokenKey (line 15) | ContextKeyTokenKey ContextKey = "token_key" constant ContextKeyTokenId (line 16) | ContextKeyTokenId ContextKey = "token_id" constant ContextKeyTokenGroup (line 17) | ContextKeyTokenGroup ContextKey = "token_group" constant ContextKeyTokenSpecificChannelId (line 18) | ContextKeyTokenSpecificChannelId ContextKey = "specific_channel_id" constant ContextKeyTokenModelLimitEnabled (line 19) | ContextKeyTokenModelLimitEnabled ContextKey = "token_model_limit_enabled" constant ContextKeyTokenModelLimit (line 20) | ContextKeyTokenModelLimit ContextKey = "token_model_limit" constant ContextKeyTokenCrossGroupRetry (line 21) | ContextKeyTokenCrossGroupRetry ContextKey = "token_cross_group_retry" constant ContextKeyChannelId (line 24) | ContextKeyChannelId ContextKey = "channel_id" constant ContextKeyChannelName (line 25) | ContextKeyChannelName ContextKey = "channel_name" constant ContextKeyChannelCreateTime (line 26) | ContextKeyChannelCreateTime ContextKey = "channel_create_time" constant ContextKeyChannelBaseUrl (line 27) | ContextKeyChannelBaseUrl ContextKey = "base_url" constant ContextKeyChannelType (line 28) | ContextKeyChannelType ContextKey = "channel_type" constant ContextKeyChannelSetting (line 29) | ContextKeyChannelSetting ContextKey = "channel_setting" constant ContextKeyChannelOtherSetting (line 30) | ContextKeyChannelOtherSetting ContextKey = "channel_other_setting" constant ContextKeyChannelParamOverride (line 31) | ContextKeyChannelParamOverride ContextKey = "param_override" constant ContextKeyChannelHeaderOverride (line 32) | ContextKeyChannelHeaderOverride ContextKey = "header_override" constant ContextKeyChannelOrganization (line 33) | ContextKeyChannelOrganization ContextKey = "channel_organization" constant ContextKeyChannelAutoBan (line 34) | ContextKeyChannelAutoBan ContextKey = "auto_ban" constant ContextKeyChannelModelMapping (line 35) | ContextKeyChannelModelMapping ContextKey = "model_mapping" constant ContextKeyChannelStatusCodeMapping (line 36) | ContextKeyChannelStatusCodeMapping ContextKey = "status_code_mapping" constant ContextKeyChannelIsMultiKey (line 37) | ContextKeyChannelIsMultiKey ContextKey = "channel_is_multi_key" constant ContextKeyChannelMultiKeyIndex (line 38) | ContextKeyChannelMultiKeyIndex ContextKey = "channel_multi_key_index" constant ContextKeyChannelKey (line 39) | ContextKeyChannelKey ContextKey = "channel_key" constant ContextKeyAutoGroup (line 41) | ContextKeyAutoGroup ContextKey = "auto_group" constant ContextKeyAutoGroupIndex (line 42) | ContextKeyAutoGroupIndex ContextKey = "auto_group_index" constant ContextKeyAutoGroupRetryIndex (line 43) | ContextKeyAutoGroupRetryIndex ContextKey = "auto_group_retry_index" constant ContextKeyUserId (line 46) | ContextKeyUserId ContextKey = "id" constant ContextKeyUserSetting (line 47) | ContextKeyUserSetting ContextKey = "user_setting" constant ContextKeyUserQuota (line 48) | ContextKeyUserQuota ContextKey = "user_quota" constant ContextKeyUserStatus (line 49) | ContextKeyUserStatus ContextKey = "user_status" constant ContextKeyUserEmail (line 50) | ContextKeyUserEmail ContextKey = "user_email" constant ContextKeyUserGroup (line 51) | ContextKeyUserGroup ContextKey = "user_group" constant ContextKeyUsingGroup (line 52) | ContextKeyUsingGroup ContextKey = "group" constant ContextKeyUserName (line 53) | ContextKeyUserName ContextKey = "username" constant ContextKeyLocalCountTokens (line 55) | ContextKeyLocalCountTokens ContextKey = "local_count_tokens" constant ContextKeySystemPromptOverride (line 57) | ContextKeySystemPromptOverride ContextKey = "system_prompt_override" constant ContextKeyFileSourcesToCleanup (line 60) | ContextKeyFileSourcesToCleanup ContextKey = "file_sources_to_cleanup" constant ContextKeyAdminRejectReason (line 64) | ContextKeyAdminRejectReason ContextKey = "admin_reject_reason" constant ContextKeyLanguage (line 67) | ContextKeyLanguage ContextKey = "language" FILE: constant/endpoint_type.go type EndpointType (line 3) | type EndpointType constant EndpointTypeOpenAI (line 6) | EndpointTypeOpenAI EndpointType = "openai" constant EndpointTypeOpenAIResponse (line 7) | EndpointTypeOpenAIResponse EndpointType = "openai-response" constant EndpointTypeOpenAIResponseCompact (line 8) | EndpointTypeOpenAIResponseCompact EndpointType = "openai-response-compact" constant EndpointTypeAnthropic (line 9) | EndpointTypeAnthropic EndpointType = "anthropic" constant EndpointTypeGemini (line 10) | EndpointTypeGemini EndpointType = "gemini" constant EndpointTypeJinaRerank (line 11) | EndpointTypeJinaRerank EndpointType = "jina-rerank" constant EndpointTypeImageGeneration (line 12) | EndpointTypeImageGeneration EndpointType = "image-generation" constant EndpointTypeEmbeddings (line 13) | EndpointTypeEmbeddings EndpointType = "embeddings" constant EndpointTypeOpenAIVideo (line 14) | EndpointTypeOpenAIVideo EndpointType = "openai-video" FILE: constant/midjourney.go constant MjErrorUnknown (line 4) | MjErrorUnknown = 5 constant MjRequestError (line 5) | MjRequestError = 4 constant MjActionImagine (line 9) | MjActionImagine = "IMAGINE" constant MjActionDescribe (line 10) | MjActionDescribe = "DESCRIBE" constant MjActionBlend (line 11) | MjActionBlend = "BLEND" constant MjActionUpscale (line 12) | MjActionUpscale = "UPSCALE" constant MjActionVariation (line 13) | MjActionVariation = "VARIATION" constant MjActionReRoll (line 14) | MjActionReRoll = "REROLL" constant MjActionInPaint (line 15) | MjActionInPaint = "INPAINT" constant MjActionModal (line 16) | MjActionModal = "MODAL" constant MjActionZoom (line 17) | MjActionZoom = "ZOOM" constant MjActionCustomZoom (line 18) | MjActionCustomZoom = "CUSTOM_ZOOM" constant MjActionShorten (line 19) | MjActionShorten = "SHORTEN" constant MjActionHighVariation (line 20) | MjActionHighVariation = "HIGH_VARIATION" constant MjActionLowVariation (line 21) | MjActionLowVariation = "LOW_VARIATION" constant MjActionPan (line 22) | MjActionPan = "PAN" constant MjActionSwapFace (line 23) | MjActionSwapFace = "SWAP_FACE" constant MjActionUpload (line 24) | MjActionUpload = "UPLOAD" constant MjActionVideo (line 25) | MjActionVideo = "VIDEO" constant MjActionEdits (line 26) | MjActionEdits = "EDITS" FILE: constant/multi_key_mode.go type MultiKeyMode (line 3) | type MultiKeyMode constant MultiKeyModeRandom (line 6) | MultiKeyModeRandom MultiKeyMode = "random" constant MultiKeyModePolling (line 7) | MultiKeyModePolling MultiKeyMode = "polling" FILE: constant/task.go type TaskPlatform (line 3) | type TaskPlatform constant TaskPlatformSuno (line 6) | TaskPlatformSuno TaskPlatform = "suno" constant TaskPlatformMidjourney (line 7) | TaskPlatformMidjourney = "mj" constant SunoActionMusic (line 11) | SunoActionMusic = "MUSIC" constant SunoActionLyrics (line 12) | SunoActionLyrics = "LYRICS" constant TaskActionGenerate (line 14) | TaskActionGenerate = "generate" constant TaskActionTextGenerate (line 15) | TaskActionTextGenerate = "textGenerate" constant TaskActionFirstTailGenerate (line 16) | TaskActionFirstTailGenerate = "firstTailGenerate" constant TaskActionReferenceGenerate (line 17) | TaskActionReferenceGenerate = "referenceGenerate" constant TaskActionRemix (line 18) | TaskActionRemix = "remixGenerate" FILE: constant/waffo_pay_method.go type WaffoPayMethod (line 4) | type WaffoPayMethod struct FILE: controller/billing.go function GetSubscription (line 11) | func GetSubscription(c *gin.Context) { function GetUsage (line 71) | func GetUsage(c *gin.Context) { FILE: controller/channel-billing.go type OpenAISubscriptionResponse (line 26) | type OpenAISubscriptionResponse struct type OpenAIUsageDailyCost (line 35) | type OpenAIUsageDailyCost struct type OpenAICreditGrants (line 43) | type OpenAICreditGrants struct type OpenAIUsageResponse (line 50) | type OpenAIUsageResponse struct type OpenAISBUsageResponse (line 56) | type OpenAISBUsageResponse struct type AIProxyUserOverviewResponse (line 63) | type AIProxyUserOverviewResponse struct type API2GPTUsageResponse (line 72) | type API2GPTUsageResponse struct type APGC2DGPTUsageResponse (line 79) | type APGC2DGPTUsageResponse struct type SiliconFlowUsageResponse (line 87) | type SiliconFlowUsageResponse struct type DeepSeekUsageResponse (line 107) | type DeepSeekUsageResponse struct type OpenRouterCreditResponse (line 117) | type OpenRouterCreditResponse struct function GetAuthHeader (line 125) | func GetAuthHeader(token string) http.Header { function GetClaudeAuthHeader (line 132) | func GetClaudeAuthHeader(token string) http.Header { function GetResponseBody (line 139) | func GetResponseBody(method, url string, channel *model.Channel, headers... function updateChannelCloseAIBalance (line 169) | func updateChannelCloseAIBalance(channel *model.Channel) (float64, error) { function updateChannelOpenAISBBalance (line 185) | func updateChannelOpenAISBBalance(channel *model.Channel) (float64, erro... function updateChannelAIProxyBalance (line 207) | func updateChannelAIProxyBalance(channel *model.Channel) (float64, error) { function updateChannelAPI2GPTBalance (line 227) | func updateChannelAPI2GPTBalance(channel *model.Channel) (float64, error) { function updateChannelSiliconFlowBalance (line 243) | func updateChannelSiliconFlowBalance(channel *model.Channel) (float64, e... function updateChannelDeepSeekBalance (line 265) | func updateChannelDeepSeekBalance(channel *model.Channel) (float64, erro... function updateChannelAIGC2DBalance (line 294) | func updateChannelAIGC2DBalance(channel *model.Channel) (float64, error) { function updateChannelOpenRouterBalance (line 309) | func updateChannelOpenRouterBalance(channel *model.Channel) (float64, er... function updateChannelMoonshotBalance (line 325) | func updateChannelMoonshotBalance(channel *model.Channel) (float64, erro... function updateChannelBalance (line 359) | func updateChannelBalance(channel *model.Channel) (float64, error) { function UpdateChannelBalance (line 424) | func UpdateChannelBalance(c *gin.Context) { function updateAllChannelsBalance (line 454) | func updateAllChannelsBalance() error { function UpdateAllChannelsBalance (line 484) | func UpdateAllChannelsBalance(c *gin.Context) { function AutomaticallyUpdateChannels (line 498) | func AutomaticallyUpdateChannels(frequency int) { FILE: controller/channel-test.go type testResult (line 39) | type testResult struct function normalizeChannelTestEndpoint (line 45) | func normalizeChannelTestEndpoint(channel *model.Channel, modelName, end... function testChannel (line 59) | func testChannel(channel *model.Channel, testModel string, endpointType ... function coerceTestUsage (line 507) | func coerceTestUsage(usageAny any, isStream bool, estimatePromptTokens i... function readTestResponseBody (line 534) | func readTestResponseBody(body io.ReadCloser, isStream bool) ([]byte, er... function detectErrorFromTestResponseBody (line 543) | func detectErrorFromTestResponseBody(respBody []byte) error { function detectErrorMessageFromJSONBytes (line 572) | func detectErrorMessageFromJSONBytes(jsonBytes []byte) string { function buildTestRequest (line 601) | func buildTestRequest(model string, endpointType string, channel *model.... function TestChannel (line 734) | func TestChannel(c *gin.Context) { function testAllChannels (line 788) | func testAllChannels(notify bool) error { function TestAllChannels (line 860) | func TestAllChannels(c *gin.Context) { function AutomaticallyTestChannels (line 874) | func AutomaticallyTestChannels() { FILE: controller/channel.go type OpenAIModel (line 24) | type OpenAIModel struct type OpenAIModelsResponse (line 48) | type OpenAIModelsResponse struct function parseStatusFilter (line 53) | func parseStatusFilter(statusParam string) int { function clearChannelInfo (line 64) | func clearChannelInfo(channel *model.Channel) { function GetAllChannels (line 71) | func GetAllChannels(c *gin.Context) { function buildFetchModelsHeaders (line 176) | func buildFetchModelsHeaders(channel *model.Channel, key string) (http.H... function FetchUpstreamModels (line 203) | func FetchUpstreamModels(c *gin.Context) { function FixChannelsAbilities (line 232) | func FixChannelsAbilities(c *gin.Context) { function SearchChannels (line 248) | func SearchChannels(c *gin.Context) { function GetChannel (line 361) | func GetChannel(c *gin.Context) { function GetChannelKey (line 385) | func GetChannelKey(c *gin.Context) { function validateTwoFactorAuth (line 419) | func validateTwoFactorAuth(twoFA *model.TwoFA, code string) bool { function validateChannel (line 436) | func validateChannel(channel *model.Channel, isAdd bool) error { function RefreshCodexChannelCredential (line 495) | func RefreshCodexChannelCredential(c *gin.Context) { type AddChannelRequest (line 527) | type AddChannelRequest struct function getVertexArrayKeys (line 534) | func getVertexArrayKeys(keys string) ([]string, error) { function AddChannel (line 566) | func AddChannel(c *gin.Context) { function DeleteChannel (line 666) | func DeleteChannel(c *gin.Context) { function DeleteDisabledChannel (line 682) | func DeleteDisabledChannel(c *gin.Context) { type ChannelTag (line 697) | type ChannelTag struct function DisableTagChannels (line 709) | func DisableTagChannels(c *gin.Context) { function EnableTagChannels (line 732) | func EnableTagChannels(c *gin.Context) { function EditTagChannels (line 755) | func EditTagChannels(c *gin.Context) { type ChannelBatch (line 807) | type ChannelBatch struct function DeleteChannelBatch (line 812) | func DeleteChannelBatch(c *gin.Context) { type PatchChannel (line 836) | type PatchChannel struct function UpdateChannel (line 842) | func UpdateChannel(c *gin.Context) { function FetchModels (line 973) | func FetchModels(c *gin.Context) { function BatchSetChannelTag (line 1093) | func BatchSetChannelTag(c *gin.Context) { function GetTagModels (line 1117) | func GetTagModels(c *gin.Context) { function CopyChannel (line 1164) | func CopyChannel(c *gin.Context) { type MultiKeyManageRequest (line 1211) | type MultiKeyManageRequest struct type MultiKeyStatusResponse (line 1221) | type MultiKeyStatusResponse struct type KeyStatus (line 1233) | type KeyStatus struct function ManageMultiKeys (line 1242) | func ManageMultiKeys(c *gin.Context) { function OllamaPullModel (line 1701) | func OllamaPullModel(c *gin.Context) { function OllamaPullModelStream (line 1764) | func OllamaPullModelStream(c *gin.Context) { function OllamaDeleteModel (line 1846) | func OllamaDeleteModel(c *gin.Context) { function OllamaVersion (line 1909) | func OllamaVersion(c *gin.Context) { FILE: controller/channel_affinity_cache.go function GetChannelAffinityCacheStats (line 11) | func GetChannelAffinityCacheStats(c *gin.Context) { function ClearChannelAffinityCache (line 20) | func ClearChannelAffinityCache(c *gin.Context) { function GetChannelAffinityUsageCacheStats (line 62) | func GetChannelAffinityUsageCacheStats(c *gin.Context) { FILE: controller/channel_upstream_update.go constant channelUpstreamModelUpdateTaskDefaultIntervalMinutes (line 25) | channelUpstreamModelUpdateTaskDefaultIntervalMinutes = 30 constant channelUpstreamModelUpdateTaskBatchSize (line 26) | channelUpstreamModelUpdateTaskBatchSize = 100 constant channelUpstreamModelUpdateMinCheckIntervalSeconds (line 27) | channelUpstreamModelUpdateMinCheckIntervalSeconds = 300 constant channelUpstreamModelUpdateNotifySuppressWindowSeconds (line 28) | channelUpstreamModelUpdateNotifySuppressWindowSeconds = 86400 constant channelUpstreamModelUpdateNotifyMaxChannelDetails (line 29) | channelUpstreamModelUpdateNotifyMaxChannelDetails = 8 constant channelUpstreamModelUpdateNotifyMaxModelDetails (line 30) | channelUpstreamModelUpdateNotifyMaxModelDetails = 12 constant channelUpstreamModelUpdateNotifyMaxFailedChannelIDs (line 31) | channelUpstreamModelUpdateNotifyMaxFailedChannelIDs = 10 type applyChannelUpstreamModelUpdatesRequest (line 45) | type applyChannelUpstreamModelUpdatesRequest struct type applyAllChannelUpstreamModelUpdatesResult (line 52) | type applyAllChannelUpstreamModelUpdatesResult struct type detectChannelUpstreamModelUpdatesResult (line 61) | type detectChannelUpstreamModelUpdatesResult struct type upstreamModelUpdateChannelSummary (line 70) | type upstreamModelUpdateChannelSummary struct function normalizeModelNames (line 76) | func normalizeModelNames(models []string) []string { function mergeModelNames (line 83) | func mergeModelNames(base []string, appended []string) []string { function subtractModelNames (line 99) | func subtractModelNames(base []string, removed []string) []string { function intersectModelNames (line 110) | func intersectModelNames(base []string, allowed []string) []string { function applySelectedModelChanges (line 121) | func applySelectedModelChanges(originModels []string, addModels []string... function normalizeChannelModelMapping (line 128) | func normalizeChannelModelMapping(channel *model.Channel) map[string]str... function collectPendingUpstreamModelChangesFromModels (line 155) | func collectPendingUpstreamModelChangesFromModels( function collectPendingUpstreamModelChanges (line 213) | func collectPendingUpstreamModelChanges(channel *model.Channel, settings... function getUpstreamModelUpdateMinCheckIntervalSeconds (line 227) | func getUpstreamModelUpdateMinCheckIntervalSeconds() int64 { function fetchChannelUpstreamModelIDs (line 238) | func fetchChannelUpstreamModelIDs(channel *model.Channel) ([]string, err... function updateChannelUpstreamModelSettings (line 325) | func updateChannelUpstreamModelSettings(channel *model.Channel, settings... function checkAndPersistChannelUpstreamModelUpdates (line 336) | func checkAndPersistChannelUpstreamModelUpdates( function refreshChannelRuntimeCache (line 385) | func refreshChannelRuntimeCache() { function shouldSendUpstreamModelUpdateNotification (line 399) | func shouldSendUpstreamModelUpdateNotification(now int64, changedChannel... function buildUpstreamModelUpdateTaskNotificationContent (line 420) | func buildUpstreamModelUpdateTaskNotificationContent( function runChannelUpstreamModelUpdateTaskOnce (line 498) | func runChannelUpstreamModelUpdateTaskOnce() { function StartChannelUpstreamModelUpdateTask (line 628) | func StartChannelUpstreamModelUpdateTask() { function ApplyChannelUpstreamModelUpdates (line 659) | func ApplyChannelUpstreamModelUpdates(c *gin.Context) { function DetectChannelUpstreamModelUpdates (line 712) | func DetectChannelUpstreamModelUpdates(c *gin.Context) { function applyChannelUpstreamModelUpdates (line 756) | func applyChannelUpstreamModelUpdates( function collectPendingApplyUpstreamModelChanges (line 806) | func collectPendingApplyUpstreamModelChanges(settings dto.ChannelOtherSe... function findEnabledChannelsAfterID (line 810) | func findEnabledChannelsAfterID(lastID int, batchSize int) ([]*model.Cha... function ApplyAllChannelUpstreamModelUpdates (line 823) | func ApplyAllChannelUpstreamModelUpdates(c *gin.Context) { function DetectAllChannelUpstreamModelUpdates (line 904) | func DetectAllChannelUpstreamModelUpdates(c *gin.Context) { FILE: controller/channel_upstream_update_test.go function TestNormalizeModelNames (line 11) | func TestNormalizeModelNames(t *testing.T) { function TestMergeModelNames (line 23) | func TestMergeModelNames(t *testing.T) { function TestSubtractModelNames (line 32) | func TestSubtractModelNames(t *testing.T) { function TestIntersectModelNames (line 41) | func TestIntersectModelNames(t *testing.T) { function TestApplySelectedModelChanges (line 50) | func TestApplySelectedModelChanges(t *testing.T) { function TestCollectPendingApplyUpstreamModelChanges (line 72) | func TestCollectPendingApplyUpstreamModelChanges(t *testing.T) { function TestNormalizeChannelModelMapping (line 84) | func TestNormalizeChannelModelMapping(t *testing.T) { function TestCollectPendingUpstreamModelChangesFromModels_WithModelMapping (line 100) | func TestCollectPendingUpstreamModelChangesFromModels_WithModelMapping(t... function TestBuildUpstreamModelUpdateTaskNotificationContent_OmitOverflowDetails (line 114) | func TestBuildUpstreamModelUpdateTaskNotificationContent_OmitOverflowDet... function TestShouldSendUpstreamModelUpdateNotification (line 149) | func TestShouldSendUpstreamModelUpdateNotification(t *testing.T) { FILE: controller/checkin.go function GetCheckinStatus (line 16) | func GetCheckinStatus(c *gin.Context) { function DoCheckin (line 47) | func DoCheckin(c *gin.Context) { FILE: controller/codex_oauth.go type codexOAuthCompleteRequest (line 23) | type codexOAuthCompleteRequest struct function codexOAuthSessionKey (line 27) | func codexOAuthSessionKey(channelID int, field string) string { function parseCodexAuthorizationInput (line 31) | func parseCodexAuthorizationInput(input string) (code string, state stri... function StartCodexOAuth (line 62) | func StartCodexOAuth(c *gin.Context) { function StartCodexOAuthForChannel (line 66) | func StartCodexOAuthForChannel(c *gin.Context) { function startCodexOAuthWithChannelID (line 75) | func startCodexOAuthWithChannelID(c *gin.Context, channelID int) { function CompleteCodexOAuth (line 113) | func CompleteCodexOAuth(c *gin.Context) { function CompleteCodexOAuthForChannel (line 117) | func CompleteCodexOAuthForChannel(c *gin.Context) { function completeCodexOAuthWithChannelID (line 126) | func completeCodexOAuthWithChannelID(c *gin.Context, channelID int) { FILE: controller/codex_usage.go function GetCodexChannelUsage (line 20) | func GetCodexChannelUsage(c *gin.Context) { FILE: controller/console_migrate.go function MigrateConsoleSetting (line 16) | func MigrateConsoleSetting(c *gin.Context) { FILE: controller/custom_oauth.go type CustomOAuthProviderResponse (line 20) | type CustomOAuthProviderResponse struct type UserOAuthBindingResponse (line 41) | type UserOAuthBindingResponse struct function toCustomOAuthProviderResponse (line 49) | func toCustomOAuthProviderResponse(p *model.CustomOAuthProvider) *Custom... function GetCustomOAuthProviders (line 73) | func GetCustomOAuthProviders(c *gin.Context) { function GetCustomOAuthProvider (line 93) | func GetCustomOAuthProvider(c *gin.Context) { type CreateCustomOAuthProviderRequest (line 115) | type CreateCustomOAuthProviderRequest struct type FetchCustomOAuthDiscoveryRequest (line 136) | type FetchCustomOAuthDiscoveryRequest struct function FetchCustomOAuthDiscovery (line 142) | func FetchCustomOAuthDiscovery(c *gin.Context) { function CreateCustomOAuthProvider (line 214) | func CreateCustomOAuthProvider(c *gin.Context) { type UpdateCustomOAuthProviderRequest (line 270) | type UpdateCustomOAuthProviderRequest struct function UpdateCustomOAuthProvider (line 292) | func UpdateCustomOAuthProvider(c *gin.Context) { function DeleteCustomOAuthProvider (line 403) | func DeleteCustomOAuthProvider(c *gin.Context) { function buildUserOAuthBindingsResponse (line 444) | func buildUserOAuthBindingsResponse(userId int) ([]UserOAuthBindingRespo... function GetUserOAuthBindings (line 469) | func GetUserOAuthBindings(c *gin.Context) { function GetUserOAuthBindingsByAdmin (line 489) | func GetUserOAuthBindingsByAdmin(c *gin.Context) { function UnbindCustomOAuth (line 523) | func UnbindCustomOAuth(c *gin.Context) { function UnbindCustomOAuthByAdmin (line 548) | func UnbindCustomOAuthByAdmin(c *gin.Context) { FILE: controller/deployment.go function getIoAPIKey (line 16) | func getIoAPIKey(c *gin.Context) (string, bool) { function GetModelDeploymentSettings (line 28) | func GetModelDeploymentSettings(c *gin.Context) { function getIoClient (line 42) | func getIoClient(c *gin.Context) (*ionet.Client, bool) { function getIoEnterpriseClient (line 50) | func getIoEnterpriseClient(c *gin.Context) (*ionet.Client, bool) { function TestIoNetConnection (line 58) | func TestIoNetConnection(c *gin.Context) { function requireDeploymentID (line 120) | func requireDeploymentID(c *gin.Context) (string, bool) { function requireContainerID (line 129) | func requireContainerID(c *gin.Context) (string, bool) { function mapIoNetDeployment (line 138) | func mapIoNetDeployment(d ionet.Deployment) map[string]interface{} { function computeStatusCounts (line 189) | func computeStatusCounts(total int, deployments []ionet.Deployment) map[... function GetAllDeployments (line 206) | func GetAllDeployments(c *gin.Context) { function SearchDeployments (line 243) | func SearchDeployments(c *gin.Context) { function GetDeployment (line 296) | func GetDeployment(c *gin.Context) { function UpdateDeploymentName (line 345) | func UpdateDeploymentName(c *gin.Context) { function UpdateDeployment (line 400) | func UpdateDeployment(c *gin.Context) { function ExtendDeployment (line 430) | func ExtendDeployment(c *gin.Context) { function DeleteDeployment (line 469) | func DeleteDeployment(c *gin.Context) { function CreateDeployment (line 494) | func CreateDeployment(c *gin.Context) { function GetHardwareTypes (line 520) | func GetHardwareTypes(c *gin.Context) { function GetLocations (line 540) | func GetLocations(c *gin.Context) { function GetAvailableReplicas (line 564) | func GetAvailableReplicas(c *gin.Context) { function GetPriceEstimation (line 600) | func GetPriceEstimation(c *gin.Context) { function CheckClusterNameAvailability (line 621) | func CheckClusterNameAvailability(c *gin.Context) { function GetDeploymentLogs (line 646) | func GetDeploymentLogs(c *gin.Context) { function ListDeploymentContainers (line 706) | func ListDeploymentContainers(c *gin.Context) { function GetContainerDetails (line 761) | func GetContainerDetails(c *gin.Context) { FILE: controller/group.go function GetGroups (line 14) | func GetGroups(c *gin.Context) { function GetUserGroups (line 26) | func GetUserGroups(c *gin.Context) { FILE: controller/image.go function GetImage (line 7) | func GetImage(c *gin.Context) { FILE: controller/log.go function GetAllLogs (line 13) | func GetAllLogs(c *gin.Context) { function GetUserLogs (line 35) | func GetUserLogs(c *gin.Context) { function SearchAllLogs (line 57) | func SearchAllLogs(c *gin.Context) { function SearchUserLogs (line 65) | func SearchUserLogs(c *gin.Context) { function GetLogByKey (line 72) | func GetLogByKey(c *gin.Context) { function GetLogsStat (line 96) | func GetLogsStat(c *gin.Context) { function GetLogsSelfStat (line 123) | func GetLogsSelfStat(c *gin.Context) { function DeleteHistoryLogs (line 151) | func DeleteHistoryLogs(c *gin.Context) { FILE: controller/midjourney.go function UpdateMidjourneyTaskBulk (line 23) | func UpdateMidjourneyTaskBulk() { function checkMjTaskNeedUpdate (line 202) | func checkMjTaskNeedUpdate(oldTask *model.Midjourney, newTask dto.Midjou... function GetAllMidjourney (line 257) | func GetAllMidjourney(c *gin.Context) { function GetUserMidjourney (line 282) | func GetUserMidjourney(c *gin.Context) { FILE: controller/misc.go function TestStatus (line 22) | func TestStatus(c *gin.Context) { function GetStatus (line 41) | func GetStatus(c *gin.Context) { function GetNotice (line 169) | func GetNotice(c *gin.Context) { function GetAbout (line 180) | func GetAbout(c *gin.Context) { function GetUserAgreement (line 191) | func GetUserAgreement(c *gin.Context) { function GetPrivacyPolicy (line 200) | func GetPrivacyPolicy(c *gin.Context) { function GetMidjourney (line 209) | func GetMidjourney(c *gin.Context) { function GetHomePageContent (line 220) | func GetHomePageContent(c *gin.Context) { function SendEmailVerification (line 231) | func SendEmailVerification(c *gin.Context) { function SendPasswordResetEmail (line 302) | func SendPasswordResetEmail(c *gin.Context) { type PasswordResetRequest (line 338) | type PasswordResetRequest struct function ResetPassword (line 343) | func ResetPassword(c *gin.Context) { FILE: controller/missing_models.go function GetMissingModels (line 14) | func GetMissingModels(c *gin.Context) { FILE: controller/model.go function init (line 32) | func init() { function ListModels (line 112) | func ListModels(c *gin.Context, modelType int) { function ChannelListModels (line 243) | func ChannelListModels(c *gin.Context) { function DashboardListModels (line 250) | func DashboardListModels(c *gin.Context) { function EnabledListModels (line 257) | func EnabledListModels(c *gin.Context) { function RetrieveModel (line 264) | func RetrieveModel(c *gin.Context, modelType int) { FILE: controller/model_meta.go function GetAllModelsMeta (line 17) | func GetAllModelsMeta(c *gin.Context) { function SearchModelsMeta (line 45) | func SearchModelsMeta(c *gin.Context) { function GetModelMeta (line 64) | func GetModelMeta(c *gin.Context) { function CreateModelMeta (line 81) | func CreateModelMeta(c *gin.Context) { function UpdateModelMeta (line 109) | func UpdateModelMeta(c *gin.Context) { function DeleteModelMeta (line 148) | func DeleteModelMeta(c *gin.Context) { function enrichModels (line 164) | func enrichModels(models []*model.Model) { FILE: controller/model_sync.go constant upstreamModelsURL (line 25) | upstreamModelsURL = "https://basellm.github.io/llm-metadata/api/newapi/... constant upstreamVendorsURL (line 26) | upstreamVendorsURL = "https://basellm.github.io/llm-metadata/api/newapi/... function normalizeLocale (line 29) | func normalizeLocale(locale string) (string, bool) { function getUpstreamBase (line 39) | func getUpstreamBase() string { function getUpstreamURLs (line 43) | func getUpstreamURLs(locale string) (modelsURL, vendorsURL string) { type upstreamEnvelope (line 52) | type upstreamEnvelope struct type upstreamModel (line 58) | type upstreamModel struct type upstreamVendor (line 69) | type upstreamVendor struct type overwriteField (line 82) | type overwriteField struct type syncRequest (line 87) | type syncRequest struct function newHTTPClient (line 92) | func newHTTPClient() *http.Client { function getHTTPClient (line 126) | func getHTTPClient() *http.Client { function fetchJSON (line 133) | func fetchJSON[T any](ctx context.Context, url string, out *upstreamEnve... function ensureVendorID (line 237) | func ensureVendorID(vendorName string, vendorByName map[string]upstreamV... function SyncUpstreamModels (line 268) | func SyncUpstreamModels(c *gin.Context) { function containsField (line 471) | func containsField(fields []string, key string) bool { function coalesce (line 481) | func coalesce(a, b string) string { function chooseStatus (line 488) | func chooseStatus(primary, fallback int) int { function SyncUpstreamPreview (line 499) | func SyncUpstreamPreview(c *gin.Context) { FILE: controller/oauth.go function providerParams (line 18) | func providerParams(name string) map[string]any { function GenerateOAuthCode (line 23) | func GenerateOAuthCode(c *gin.Context) { function HandleOAuth (line 44) | func HandleOAuth(c *gin.Context) { function handleOAuthBind (line 131) | func handleOAuthBind(c *gin.Context, provider oauth.Provider) { function findOrCreateOAuthUser (line 197) | func findOrCreateOAuthUser(c *gin.Context, provider oauth.Provider, oaut... type OAuthUserDeletedError (line 332) | type OAuthUserDeletedError struct method Error (line 334) | func (e *OAuthUserDeletedError) Error() string { type OAuthRegistrationDisabledError (line 338) | type OAuthRegistrationDisabledError struct method Error (line 340) | func (e *OAuthRegistrationDisabledError) Error() string { function handleOAuthError (line 345) | func handleOAuthError(c *gin.Context, err error) { FILE: controller/option.go function collectModelNamesFromOptionValue (line 30) | func collectModelNamesFromOptionValue(raw string, modelNames map[string]... function buildCompletionRatioMetaValue (line 45) | func buildCompletionRatioMetaValue(optionValues map[string]string) string { function GetOptions (line 63) | func GetOptions(c *gin.Context) { type OptionUpdateRequest (line 100) | type OptionUpdateRequest struct function UpdateOption (line 105) | func UpdateOption(c *gin.Context) { FILE: controller/passkey.go function PasskeyRegisterBegin (line 21) | func PasskeyRegisterBegin(c *gin.Context) { function PasskeyRegisterFinish (line 81) | func PasskeyRegisterFinish(c *gin.Context) { function PasskeyDelete (line 144) | func PasskeyDelete(c *gin.Context) { function PasskeyStatus (line 165) | func PasskeyStatus(c *gin.Context) { function PasskeyLoginBegin (line 203) | func PasskeyLoginBegin(c *gin.Context) { function PasskeyLoginFinish (line 238) | func PasskeyLoginFinish(c *gin.Context) { function AdminResetPasskey (line 329) | func AdminResetPasskey(c *gin.Context) { function PasskeyVerifyBegin (line 365) | func PasskeyVerifyBegin(c *gin.Context) { function PasskeyVerifyFinish (line 419) | func PasskeyVerifyFinish(c *gin.Context) { function getSessionUser (line 488) | func getSessionUser(c *gin.Context) (*model.User, error) { FILE: controller/performance.go type PerformanceStats (line 14) | type PerformanceStats struct type MemoryStats (line 28) | type MemoryStats struct type DiskCacheInfo (line 42) | type DiskCacheInfo struct type PerformanceConfig (line 54) | type PerformanceConfig struct function GetPerformanceStats (line 77) | func GetPerformanceStats(c *gin.Context) { function ClearDiskCache (line 137) | func ClearDiskCache(c *gin.Context) { function ResetPerformanceStats (line 153) | func ResetPerformanceStats(c *gin.Context) { function ForceGC (line 163) | func ForceGC(c *gin.Context) { function getDiskCacheInfo (line 173) | func getDiskCacheInfo() DiskCacheInfo { FILE: controller/playground.go function Playground (line 15) | func Playground(c *gin.Context) { FILE: controller/prefill_group.go function GetPrefillGroups (line 13) | func GetPrefillGroups(c *gin.Context) { function CreatePrefillGroup (line 24) | func CreatePrefillGroup(c *gin.Context) { function UpdatePrefillGroup (line 51) | func UpdatePrefillGroup(c *gin.Context) { function DeletePrefillGroup (line 78) | func DeletePrefillGroup(c *gin.Context) { FILE: controller/pricing.go function GetPricing (line 11) | func GetPricing(c *gin.Context) { function ResetModelRatio (line 53) | func ResetModelRatio(c *gin.Context) { FILE: controller/ratio_config.go function GetRatioConfig (line 11) | func GetRatioConfig(c *gin.Context) { FILE: controller/ratio_sync.go constant defaultTimeoutSeconds (line 30) | defaultTimeoutSeconds = 10 constant defaultEndpoint (line 31) | defaultEndpoint = "/api/ratio_config" constant maxConcurrentFetches (line 32) | maxConcurrentFetches = 8 constant maxRatioConfigBytes (line 33) | maxRatioConfigBytes = 10 << 20 constant floatEpsilon (line 34) | floatEpsilon = 1e-9 constant officialRatioPresetID (line 35) | officialRatioPresetID = -100 constant officialRatioPresetName (line 36) | officialRatioPresetName = "官方倍率预设" constant officialRatioPresetBaseURL (line 37) | officialRatioPresetBaseURL = "https://basellm.github.io" constant modelsDevPresetID (line 38) | modelsDevPresetID = -101 constant modelsDevPresetName (line 39) | modelsDevPresetName = "models.dev 价格预设" constant modelsDevPresetBaseURL (line 40) | modelsDevPresetBaseURL = "https://models.dev" constant modelsDevHost (line 41) | modelsDevHost = "models.dev" constant modelsDevPath (line 42) | modelsDevPath = "/api.json" constant modelsDevInputCostRatioBase (line 43) | modelsDevInputCostRatioBase = 1000.0 function nearlyEqual (line 46) | func nearlyEqual(a, b float64) bool { function valuesEqual (line 53) | func valuesEqual(a, b interface{}) bool { type upstreamResult (line 64) | type upstreamResult struct function FetchUpstreamRatios (line 70) | func FetchUpstreamRatios(c *gin.Context) { function buildDifferences (line 407) | func buildDifferences(localData map[string]any, successfulChannels []str... function roundRatioValue (line 583) | func roundRatioValue(value float64) float64 { function isModelsDevAPIEndpoint (line 587) | func isModelsDevAPIEndpoint(rawURL string) bool { function convertOpenRouterToRatioData (line 609) | func convertOpenRouterToRatioData(reader io.Reader) (map[string]any, err... type modelsDevProvider (line 694) | type modelsDevProvider struct type modelsDevModel (line 698) | type modelsDevModel struct type modelsDevCost (line 702) | type modelsDevCost struct type modelsDevCandidate (line 708) | type modelsDevCandidate struct function cloneFloatPtr (line 715) | func cloneFloatPtr(v *float64) *float64 { function isValidNonNegativeCost (line 723) | func isValidNonNegativeCost(v float64) bool { function buildModelsDevCandidate (line 730) | func buildModelsDevCandidate(provider string, cost modelsDevCost) (model... function shouldReplaceModelsDevCandidate (line 766) | func shouldReplaceModelsDevCandidate(current, next modelsDevCandidate) b... function convertModelsDevToRatioData (line 791) | func convertModelsDevToRatioData(reader io.Reader) (map[string]any, erro... function GetSyncableChannels (line 872) | func GetSyncableChannels(c *gin.Context) { FILE: controller/redemption.go function GetAllRedemptions (line 15) | func GetAllRedemptions(c *gin.Context) { function SearchRedemptions (line 28) | func SearchRedemptions(c *gin.Context) { function GetRedemption (line 42) | func GetRedemption(c *gin.Context) { function AddRedemption (line 61) | func AddRedemption(c *gin.Context) { function DeleteRedemption (line 115) | func DeleteRedemption(c *gin.Context) { function UpdateRedemption (line 129) | func UpdateRedemption(c *gin.Context) { function DeleteInvalidRedemption (line 168) | func DeleteInvalidRedemption(c *gin.Context) { function validateExpiredTime (line 182) | func validateExpiredTime(c *gin.Context, expired int64) (bool, string) { FILE: controller/relay.go function relayHandler (line 34) | func relayHandler(c *gin.Context, info *relaycommon.RelayInfo) *types.Ne... function geminiRelayHandler (line 57) | func geminiRelayHandler(c *gin.Context, info *relaycommon.RelayInfo) *ty... function Relay (line 67) | func Relay(c *gin.Context, relayFormat types.RelayFormat) { function addUsedChannel (line 251) | func addUsedChannel(c *gin.Context, channelId int) { function fastTokenCountMetaForPricing (line 257) | func fastTokenCountMetaForPricing(request dto.Request) *types.TokenCount... function getChannel (line 286) | func getChannel(c *gin.Context, info *relaycommon.RelayInfo, retryParam ... function shouldRetry (line 318) | func shouldRetry(c *gin.Context, openaiErr *types.NewAPIError, retryTime... function processChannelError (line 350) | func processChannelError(c *gin.Context, channelError types.ChannelError... function RelayMidjourney (line 397) | func RelayMidjourney(c *gin.Context) { function RelayNotImplemented (line 440) | func RelayNotImplemented(c *gin.Context) { function RelayNotFound (line 452) | func RelayNotFound(c *gin.Context) { function RelayTaskFetch (line 464) | func RelayTaskFetch(c *gin.Context) { function RelayTask (line 479) | func RelayTask(c *gin.Context) { function respondTaskError (line 600) | func respondTaskError(c *gin.Context, taskErr *dto.TaskError) { function shouldRetryTaskRelay (line 607) | func shouldRetryTaskRelay(c *gin.Context, channelId int, taskErr *dto.Ta... FILE: controller/secure_verification.go constant SecureVerificationSessionKey (line 16) | SecureVerificationSessionKey = "secure_verified_at" constant PasskeyReadySessionKey (line 18) | PasskeyReadySessionKey = "secure_passkey_ready_at" constant SecureVerificationTimeout (line 20) | SecureVerificationTimeout = 300 constant PasskeyReadyTimeout (line 22) | PasskeyReadyTimeout = 60 type UniversalVerifyRequest (line 25) | type UniversalVerifyRequest struct type VerificationStatusResponse (line 30) | type VerificationStatusResponse struct function UniversalVerify (line 37) | func UniversalVerify(c *gin.Context) { function setSecureVerificationSession (line 142) | func setSecureVerificationSession(c *gin.Context) (int64, error) { function consumePasskeyReady (line 153) | func consumePasskeyReady(c *gin.Context) (bool, error) { FILE: controller/setup.go type Setup (line 13) | type Setup struct type SetupRequest (line 19) | type SetupRequest struct function GetSetup (line 27) | func GetSetup(c *gin.Context) { function PostSetup (line 54) | func PostSetup(c *gin.Context) { function boolToString (line 177) | func boolToString(b bool) string { FILE: controller/subscription.go type SubscriptionPlanDTO (line 16) | type SubscriptionPlanDTO struct type BillingPreferenceRequest (line 20) | type BillingPreferenceRequest struct function GetSubscriptionPlans (line 26) | func GetSubscriptionPlans(c *gin.Context) { function GetSubscriptionSelf (line 41) | func GetSubscriptionSelf(c *gin.Context) { function UpdateSubscriptionPreference (line 65) | func UpdateSubscriptionPreference(c *gin.Context) { function AdminListSubscriptionPlans (line 91) | func AdminListSubscriptionPlans(c *gin.Context) { type AdminUpsertSubscriptionPlanRequest (line 106) | type AdminUpsertSubscriptionPlanRequest struct function AdminCreateSubscriptionPlan (line 110) | func AdminCreateSubscriptionPlan(c *gin.Context) { function AdminUpdateSubscriptionPlan (line 168) | func AdminUpdateSubscriptionPlan(c *gin.Context) { type AdminUpdateSubscriptionPlanStatusRequest (line 257) | type AdminUpdateSubscriptionPlanStatusRequest struct function AdminUpdateSubscriptionPlanStatus (line 261) | func AdminUpdateSubscriptionPlanStatus(c *gin.Context) { type AdminBindSubscriptionRequest (line 280) | type AdminBindSubscriptionRequest struct function AdminBindSubscription (line 285) | func AdminBindSubscription(c *gin.Context) { function AdminListUserSubscriptions (line 305) | func AdminListUserSubscriptions(c *gin.Context) { type AdminCreateUserSubscriptionRequest (line 319) | type AdminCreateUserSubscriptionRequest struct function AdminCreateUserSubscription (line 324) | func AdminCreateUserSubscription(c *gin.Context) { function AdminInvalidateUserSubscription (line 348) | func AdminInvalidateUserSubscription(c *gin.Context) { function AdminDeleteUserSubscription (line 367) | func AdminDeleteUserSubscription(c *gin.Context) { FILE: controller/subscription_payment_creem.go type SubscriptionCreemPayRequest (line 17) | type SubscriptionCreemPayRequest struct function SubscriptionRequestCreemPay (line 21) | func SubscriptionRequestCreemPay(c *gin.Context) { FILE: controller/subscription_payment_epay.go type SubscriptionEpayPayRequest (line 20) | type SubscriptionEpayPayRequest struct function SubscriptionRequestEpay (line 25) | func SubscriptionRequestEpay(c *gin.Context) { function SubscriptionEpayNotify (line 114) | func SubscriptionEpayNotify(c *gin.Context) { function SubscriptionEpayReturn (line 169) | func SubscriptionEpayReturn(c *gin.Context) { FILE: controller/subscription_payment_stripe.go type SubscriptionStripePayRequest (line 20) | type SubscriptionStripePayRequest struct function SubscriptionRequestStripePay (line 24) | func SubscriptionRequestStripePay(c *gin.Context) { function genStripeSubscriptionLink (line 108) | func genStripeSubscriptionLink(referenceId string, customerId string, em... FILE: controller/swag_video.go function VideoGenerations (line 23) | func VideoGenerations(c *gin.Context) { function VideoGenerationsTaskId (line 40) | func VideoGenerationsTaskId(c *gin.Context) { function KlingText2VideoGenerations (line 57) | func KlingText2VideoGenerations(c *gin.Context) { type KlingText2VideoRequest (line 60) | type KlingText2VideoRequest struct type KlingCameraControl (line 73) | type KlingCameraControl struct type KlingCameraConfig (line 78) | type KlingCameraConfig struct function KlingImage2VideoGenerations (line 101) | func KlingImage2VideoGenerations(c *gin.Context) { type KlingImage2VideoRequest (line 104) | type KlingImage2VideoRequest struct function KlingImage2videoTaskId (line 126) | func KlingImage2videoTaskId(c *gin.Context) {} function KlingText2videoTaskId (line 136) | func KlingText2videoTaskId(c *gin.Context) {} FILE: controller/task.go function UpdateTaskBulk (line 18) | func UpdateTaskBulk() { function GetAllTask (line 22) | func GetAllTask(c *gin.Context) { function GetUserTask (line 45) | func GetUserTask(c *gin.Context) { function tasksToDto (line 69) | func tasksToDto(tasks []*model.Task, fillUser bool) []*dto.TaskDto { FILE: controller/telegram.go function TelegramBind (line 18) | func TelegramBind(c *gin.Context) { function TelegramLogin (line 72) | func TelegramLogin(c *gin.Context) { function checkTelegramAuthorization (line 101) | func checkTelegramAuthorization(params map[string][]string, token string... FILE: controller/token.go function buildMaskedTokenResponse (line 17) | func buildMaskedTokenResponse(token *model.Token) *model.Token { function buildMaskedTokenResponses (line 26) | func buildMaskedTokenResponses(tokens []*model.Token) []*model.Token { function GetAllTokens (line 34) | func GetAllTokens(c *gin.Context) { function SearchTokens (line 48) | func SearchTokens(c *gin.Context) { function GetToken (line 65) | func GetToken(c *gin.Context) { function GetTokenKey (line 80) | func GetTokenKey(c *gin.Context) { function GetTokenStatus (line 97) | func GetTokenStatus(c *gin.Context) { function GetTokenUsage (line 118) | func GetTokenUsage(c *gin.Context) { function AddToken (line 167) | func AddToken(c *gin.Context) { function DeleteToken (line 236) | func DeleteToken(c *gin.Context) { function UpdateToken (line 250) | func UpdateToken(c *gin.Context) { type TokenBatch (line 315) | type TokenBatch struct function DeleteTokenBatch (line 319) | func DeleteTokenBatch(c *gin.Context) { FILE: controller/token_test.go type tokenAPIResponse (line 20) | type tokenAPIResponse struct type tokenPageResponse (line 26) | type tokenPageResponse struct type tokenResponseItem (line 30) | type tokenResponseItem struct type tokenKeyResponse (line 37) | type tokenKeyResponse struct function setupTokenControllerTestDB (line 41) | func setupTokenControllerTestDB(t *testing.T) *gorm.DB { function seedToken (line 72) | func seedToken(t *testing.T, db *gorm.DB, userID int, name string, rawKe... function newAuthenticatedContext (line 93) | func newAuthenticatedContext(t *testing.T, method string, target string,... function decodeAPIResponse (line 117) | func decodeAPIResponse(t *testing.T, recorder *httptest.ResponseRecorder... function TestGetAllTokensMasksKeyInResponse (line 127) | func TestGetAllTokensMasksKeyInResponse(t *testing.T) { function TestSearchTokensMasksKeyInResponse (line 155) | func TestSearchTokensMasksKeyInResponse(t *testing.T) { function TestGetTokenMasksKeyInResponse (line 182) | func TestGetTokenMasksKeyInResponse(t *testing.T) { function TestUpdateTokenMasksKeyInResponse (line 207) | func TestUpdateTokenMasksKeyInResponse(t *testing.T) { function TestGetTokenKeyRequiresOwnershipAndReturnsFullKey (line 243) | func TestGetTokenKeyRequiresOwnershipAndReturnsFullKey(t *testing.T) { FILE: controller/topup.go function GetTopUpInfo (line 25) | func GetTopUpInfo(c *gin.Context) { type EpayRequest (line 103) | type EpayRequest struct type AmountRequest (line 108) | type AmountRequest struct function GetEpayClient (line 112) | func GetEpayClient() *epay.Client { function getPayMoney (line 126) | func getPayMoney(amount int64, group string) float64 { function getMinTopup (line 156) | func getMinTopup() int64 { function RequestEpay (line 166) | func RequestEpay(c *gin.Context) { type refCountedMutex (line 246) | type refCountedMutex struct function LockOrder (line 252) | func LockOrder(tradeNo string) { function UnlockOrder (line 267) | func UnlockOrder(tradeNo string) { function EpayNotify (line 283) | func EpayNotify(c *gin.Context) { function RequestAmount (line 368) | func RequestAmount(c *gin.Context) { function GetUserTopUps (line 394) | func GetUserTopUps(c *gin.Context) { function GetAllTopUps (line 420) | func GetAllTopUps(c *gin.Context) { type AdminCompleteTopupRequest (line 444) | type AdminCompleteTopupRequest struct function AdminCompleteTopUp (line 449) | func AdminCompleteTopUp(c *gin.Context) { FILE: controller/topup_creem.go constant PaymentMethodCreem (line 24) | PaymentMethodCreem = "creem" constant CreemSignatureHeader (line 25) | CreemSignatureHeader = "creem-signature" function generateCreemSignature (line 31) | func generateCreemSignature(payload string, secret string) string { function verifyCreemSignature (line 38) | func verifyCreemSignature(payload string, signature string, secret strin... type CreemPayRequest (line 52) | type CreemPayRequest struct type CreemProduct (line 57) | type CreemProduct struct type CreemAdaptor (line 65) | type CreemAdaptor struct method RequestPay (line 68) | func (*CreemAdaptor) RequestPay(c *gin.Context, req *CreemPayRequest) { function RequestCreemPay (line 145) | func RequestCreemPay(c *gin.Context) { type CreemWebhookEvent (line 171) | type CreemWebhookEvent struct function CreemWebhook (line 231) | func CreemWebhook(c *gin.Context) { function handleCheckoutCompleted (line 286) | func handleCheckoutCompleted(c *gin.Context, event *CreemWebhookEvent) { type CreemCheckoutRequest (line 367) | type CreemCheckoutRequest struct type CreemCheckoutResponse (line 376) | type CreemCheckoutResponse struct function genCreemLink (line 381) | func genCreemLink(referenceId string, product *CreemProduct, email strin... FILE: controller/topup_stripe.go constant PaymentMethodStripe (line 27) | PaymentMethodStripe = "stripe" type StripePayRequest (line 33) | type StripePayRequest struct type StripeAdaptor (line 46) | type StripeAdaptor struct method RequestAmount (line 49) | func (*StripeAdaptor) RequestAmount(c *gin.Context, req *StripePayRequ... method RequestPay (line 68) | func (*StripeAdaptor) RequestPay(c *gin.Context, req *StripePayRequest) { function RequestStripeAmount (line 128) | func RequestStripeAmount(c *gin.Context) { function RequestStripePay (line 138) | func RequestStripePay(c *gin.Context) { function StripeWebhook (line 148) | func StripeWebhook(c *gin.Context) { function sessionCompleted (line 180) | func sessionCompleted(event stripe.Event) { function sessionExpired (line 216) | func sessionExpired(event stripe.Event) { function genStripeLink (line 271) | func genStripeLink(referenceId string, customerId string, email string, ... function GetChargedAmount (line 318) | func GetChargedAmount(count float64, user model.User) float64 { function getStripePayMoney (line 327) | func getStripePayMoney(amount float64, group string) float64 { function getStripeMinTopup (line 348) | func getStripeMinTopup() int64 { FILE: controller/topup_waffo.go function getWaffoSDK (line 25) | func getWaffoSDK() (*waffo.Waffo, error) { function getWaffoUserEmail (line 51) | func getWaffoUserEmail(user *model.User) string { function getWaffoCurrency (line 55) | func getWaffoCurrency() string { function formatWaffoAmount (line 67) | func formatWaffoAmount(amount float64, currency string) string { function getWaffoPayMoney (line 77) | func getWaffoPayMoney(amount float64, group string) float64 { type WaffoPayRequest (line 95) | type WaffoPayRequest struct function RequestWaffoPay (line 103) | func RequestWaffoPay(c *gin.Context) { type webhookPayloadWithSubInfo (line 273) | type webhookPayloadWithSubInfo struct type webhookSubscriptionInfo (line 281) | type webhookSubscriptionInfo struct function WaffoWebhook (line 289) | func WaffoWebhook(c *gin.Context) { function handleWaffoPayment (line 340) | func handleWaffoPayment(c *gin.Context, wh *core.WebhookHandler, result ... function sendWaffoWebhookResponse (line 371) | func sendWaffoWebhookResponse(c *gin.Context, wh *core.WebhookHandler, s... FILE: controller/twofa.go type Setup2FARequest (line 17) | type Setup2FARequest struct type Verify2FARequest (line 22) | type Verify2FARequest struct type Setup2FAResponse (line 27) | type Setup2FAResponse struct function Setup2FA (line 34) | func Setup2FA(c *gin.Context) { function Enable2FA (line 138) | func Enable2FA(c *gin.Context) { function Disable2FA (line 205) | func Disable2FA(c *gin.Context) { function Get2FAStatus (line 277) | func Get2FAStatus(c *gin.Context) { function RegenerateBackupCodes (line 313) | func RegenerateBackupCodes(c *gin.Context) { function Verify2FALogin (line 399) | func Verify2FALogin(c *gin.Context) { function Admin2FAStats (line 490) | func Admin2FAStats(c *gin.Context) { function AdminDisable2FA (line 505) | func AdminDisable2FA(c *gin.Context) { FILE: controller/uptime_kuma.go constant requestTimeout (line 19) | requestTimeout = 30 * time.Second constant httpTimeout (line 20) | httpTimeout = 10 * time.Second constant uptimeKeySuffix (line 21) | uptimeKeySuffix = "_24" constant apiStatusPath (line 22) | apiStatusPath = "/api/status-page/" constant apiHeartbeatPath (line 23) | apiHeartbeatPath = "/api/status-page/heartbeat/" type Monitor (line 26) | type Monitor struct type UptimeGroupResult (line 33) | type UptimeGroupResult struct function getAndDecode (line 38) | func getAndDecode(ctx context.Context, client *http.Client, url string, ... function fetchGroupData (line 57) | func fetchGroupData(ctx context.Context, client *http.Client, groupConfi... function GetUptimeKumaStatus (line 131) | func GetUptimeKumaStatus(c *gin.Context) { FILE: controller/usedata.go function GetAllQuotaDates (line 13) | func GetAllQuotaDates(c *gin.Context) { function GetUserQuotaDates (line 30) | func GetUserQuotaDates(c *gin.Context) { FILE: controller/user.go type LoginRequest (line 27) | type LoginRequest struct function Login (line 32) | func Login(c *gin.Context) { function setupLogin (line 88) | func setupLogin(user *model.User, c *gin.Context) { function Logout (line 114) | func Logout(c *gin.Context) { function Register (line 131) | func Register(c *gin.Context) { function GetAllUsers (line 229) | func GetAllUsers(c *gin.Context) { function SearchUsers (line 244) | func SearchUsers(c *gin.Context) { function GetUser (line 260) | func GetUser(c *gin.Context) { function GenerateAccessToken (line 284) | func GenerateAccessToken(c *gin.Context) { type TransferAffQuotaRequest (line 319) | type TransferAffQuotaRequest struct function TransferAffQuota (line 323) | func TransferAffQuota(c *gin.Context) { function GetAffCode (line 343) | func GetAffCode(c *gin.Context) { function GetSelf (line 368) | func GetSelf(c *gin.Context) { function calculateUserPermissions (line 423) | func calculateUserPermissions(userRole int) map[string]interface{} { function generateDefaultSidebarConfig (line 451) | func generateDefaultSidebarConfig(userRole int) string { function GetUserModels (line 512) | func GetUserModels(c *gin.Context) { function UpdateUser (line 539) | func UpdateUser(c *gin.Context) { function AdminClearUserBinding (line 585) | func AdminClearUserBinding(c *gin.Context) { function UpdateSelf (line 623) | func UpdateSelf(c *gin.Context) { function checkUpdatePassword (line 735) | func checkUpdatePassword(originalPassword string, newPassword string, us... function DeleteUser (line 755) | func DeleteUser(c *gin.Context) { function DeleteSelf (line 781) | func DeleteSelf(c *gin.Context) { function CreateUser (line 802) | func CreateUser(c *gin.Context) { type ManageRequest (line 841) | type ManageRequest struct function ManageUser (line 847) | func ManageUser(c *gin.Context) { function EmailBind (line 928) | func EmailBind(c *gin.Context) { type topUpRequest (line 959) | type topUpRequest struct type topUpTryLock (line 966) | type topUpTryLock struct method TryLock (line 974) | func (l *topUpTryLock) TryLock() bool { method Unlock (line 983) | func (l *topUpTryLock) Unlock() { function newTopUpTryLock (line 970) | func newTopUpTryLock() *topUpTryLock { function getTopUpLock (line 990) | func getTopUpLock(userID int) *topUpTryLock { function TopUp (line 1004) | func TopUp(c *gin.Context) { type UpdateUserSettingRequest (line 1034) | type UpdateUserSettingRequest struct function UpdateUserSetting (line 1049) | func UpdateUserSetting(c *gin.Context) { FILE: controller/vendor_meta.go function GetAllVendors (line 13) | func GetAllVendors(c *gin.Context) { function SearchVendors (line 28) | func SearchVendors(c *gin.Context) { function GetVendorMeta (line 42) | func GetVendorMeta(c *gin.Context) { function CreateVendorMeta (line 58) | func CreateVendorMeta(c *gin.Context) { function UpdateVendorMeta (line 85) | func UpdateVendorMeta(c *gin.Context) { function DeleteVendorMeta (line 112) | func DeleteVendorMeta(c *gin.Context) { FILE: controller/video_proxy.go function videoProxyError (line 22) | func videoProxyError(c *gin.Context, status int, errType, message string) { function VideoProxy (line 31) | func VideoProxy(c *gin.Context) { function writeVideoDataURL (line 165) | func writeVideoDataURL(c *gin.Context, dataURL string) error { FILE: controller/video_proxy_gemini.go function getGeminiVideoURL (line 15) | func getGeminiVideoURL(channel *model.Channel, task *model.Task, apiKey ... function extractGeminiVideoURLFromTaskData (line 69) | func extractGeminiVideoURLFromTaskData(task *model.Task) string { function extractGeminiVideoURLFromPayload (line 80) | func extractGeminiVideoURLFromPayload(body []byte) string { function extractGeminiVideoURLFromMap (line 88) | func extractGeminiVideoURLFromMap(payload map[string]any) string { function extractGeminiVideoURLFromResponse (line 103) | func extractGeminiVideoURLFromResponse(resp map[string]any) string { function extractGeminiVideoURLFromGeneratedSamples (line 130) | func extractGeminiVideoURLFromGeneratedSamples(gvr map[string]any) string { function getVertexVideoURL (line 148) | func getVertexVideoURL(channel *model.Channel, task *model.Task) (string... function isTaskProxyContentURL (line 201) | func isTaskProxyContentURL(url string, taskID string) bool { function getVertexTaskKey (line 208) | func getVertexTaskKey(channel *model.Channel, task *model.Task) string { function extractVertexVideoURLFromTaskData (line 227) | func extractVertexVideoURLFromTaskData(task *model.Task) string { function extractVertexVideoURLFromPayload (line 234) | func extractVertexVideoURLFromPayload(body []byte) string { function buildVideoDataURL (line 267) | func buildVideoDataURL(mimeType string, encoding string, base64Data stri... function ensureAPIKey (line 283) | func ensureAPIKey(uri, key string) string { FILE: controller/wechat.go type wechatLoginResponse (line 18) | type wechatLoginResponse struct function getWeChatIdByCode (line 24) | func getWeChatIdByCode(code string) (string, error) { function WeChatAuth (line 55) | func WeChatAuth(c *gin.Context) { function WeChatBind (line 124) | func WeChatBind(c *gin.Context) { FILE: dto/audio.go type AudioRequest (line 12) | type AudioRequest struct method GetTokenCountMeta (line 23) | func (r *AudioRequest) GetTokenCountMeta() *types.TokenCountMeta { method IsStream (line 34) | func (r *AudioRequest) IsStream(c *gin.Context) bool { method SetModelName (line 38) | func (r *AudioRequest) SetModelName(modelName string) { type AudioResponse (line 44) | type AudioResponse struct type WhisperVerboseJSONResponse (line 48) | type WhisperVerboseJSONResponse struct type Segment (line 56) | type Segment struct FILE: dto/channel_settings.go type ChannelSettings (line 3) | type ChannelSettings struct type VertexKeyType (line 12) | type VertexKeyType constant VertexKeyTypeJSON (line 15) | VertexKeyTypeJSON VertexKeyType = "json" constant VertexKeyTypeAPIKey (line 16) | VertexKeyTypeAPIKey VertexKeyType = "api_key" type AwsKeyType (line 19) | type AwsKeyType constant AwsKeyTypeAKSK (line 22) | AwsKeyTypeAKSK AwsKeyType = "ak_sk" constant AwsKeyTypeApiKey (line 23) | AwsKeyTypeApiKey AwsKeyType = "api_key" type ChannelOtherSettings (line 26) | type ChannelOtherSettings struct method IsOpenRouterEnterprise (line 45) | func (s *ChannelOtherSettings) IsOpenRouterEnterprise() bool { FILE: dto/claude.go type ClaudeMetadata (line 14) | type ClaudeMetadata struct type ClaudeMediaMessage (line 18) | type ClaudeMediaMessage struct method SetText (line 39) | func (c *ClaudeMediaMessage) SetText(s string) { method GetText (line 43) | func (c *ClaudeMediaMessage) GetText() string { method IsStringContent (line 50) | func (c *ClaudeMediaMessage) IsStringContent() bool { method GetStringContent (line 61) | func (c *ClaudeMediaMessage) GetStringContent() string { method GetJsonRowString (line 87) | func (c *ClaudeMediaMessage) GetJsonRowString() string { method SetContent (line 92) | func (c *ClaudeMediaMessage) SetContent(content any) { method ParseMediaContent (line 96) | func (c *ClaudeMediaMessage) ParseMediaContent() []ClaudeMediaMessage { type ClaudeMessageSource (line 101) | type ClaudeMessageSource struct type ClaudeMessage (line 108) | type ClaudeMessage struct method IsStringContent (line 113) | func (c *ClaudeMessage) IsStringContent() bool { method GetStringContent (line 121) | func (c *ClaudeMessage) GetStringContent() string { method SetStringContent (line 147) | func (c *ClaudeMessage) SetStringContent(content string) { method SetContent (line 151) | func (c *ClaudeMessage) SetContent(content any) { method ParseContent (line 155) | func (c *ClaudeMessage) ParseContent() ([]ClaudeMediaMessage, error) { type Tool (line 159) | type Tool struct type InputSchema (line 165) | type InputSchema struct type ClaudeWebSearchTool (line 171) | type ClaudeWebSearchTool struct type ClaudeWebSearchUserLocation (line 178) | type ClaudeWebSearchUserLocation struct type ClaudeToolChoice (line 186) | type ClaudeToolChoice struct type ClaudeRequest (line 192) | type ClaudeRequest struct method GetTokenCountMeta (line 234) | func (c *ClaudeRequest) GetTokenCountMeta() *types.TokenCountMeta { method IsStream (line 363) | func (c *ClaudeRequest) IsStream(ctx *gin.Context) bool { method SetModelName (line 370) | func (c *ClaudeRequest) SetModelName(modelName string) { method SearchToolNameByToolCallId (line 376) | func (c *ClaudeRequest) SearchToolNameByToolCallId(toolCallId string) ... method AddTool (line 389) | func (c *ClaudeRequest) AddTool(tool any) { method GetTools (line 404) | func (c *ClaudeRequest) GetTools() []any { method GetEfforts (line 417) | func (c *ClaudeRequest) GetEfforts() string { method IsStringSystem (line 462) | func (c *ClaudeRequest) IsStringSystem() bool { method GetStringSystem (line 467) | func (c *ClaudeRequest) GetStringSystem() string { method SetStringSystem (line 474) | func (c *ClaudeRequest) SetStringSystem(system string) { method ParseSystem (line 478) | func (c *ClaudeRequest) ParseSystem() []ClaudeMediaMessage { type OutputConfigForEffort (line 222) | type OutputConfigForEffort struct function createClaudeFileSource (line 227) | func createClaudeFileSource(data string) *types.FileSource { function ProcessTools (line 427) | func ProcessTools(tools []any) ([]*Tool, []*ClaudeWebSearchTool) { type Thinking (line 450) | type Thinking struct method GetBudgetTokens (line 455) | func (c *Thinking) GetBudgetTokens() int { type ClaudeErrorWithStatusCode (line 483) | type ClaudeErrorWithStatusCode struct type ClaudeResponse (line 489) | type ClaudeResponse struct method SetIndex (line 506) | func (c *ClaudeResponse) SetIndex(i int) { method GetIndex (line 511) | func (c *ClaudeResponse) GetIndex() int { method GetClaudeError (line 519) | func (c *ClaudeResponse) GetClaudeError() *types.ClaudeError { type ClaudeUsage (line 554) | type ClaudeUsage struct method GetCacheCreation5mTokens (line 571) | func (u *ClaudeUsage) GetCacheCreation5mTokens() int { method GetCacheCreation1hTokens (line 578) | func (u *ClaudeUsage) GetCacheCreation1hTokens() int { method GetCacheCreationTotalTokens (line 585) | func (u *ClaudeUsage) GetCacheCreationTotalTokens() int { type ClaudeCacheCreationUsage (line 566) | type ClaudeCacheCreationUsage struct type ClaudeServerToolUse (line 595) | type ClaudeServerToolUse struct FILE: dto/embedding.go type EmbeddingOptions (line 11) | type EmbeddingOptions struct type EmbeddingRequest (line 22) | type EmbeddingRequest struct method GetTokenCountMeta (line 35) | func (r *EmbeddingRequest) GetTokenCountMeta() *types.TokenCountMeta { method IsStream (line 48) | func (r *EmbeddingRequest) IsStream(c *gin.Context) bool { method SetModelName (line 52) | func (r *EmbeddingRequest) SetModelName(modelName string) { method ParseInput (line 58) | func (r *EmbeddingRequest) ParseInput() []string { type EmbeddingResponseItem (line 77) | type EmbeddingResponseItem struct type EmbeddingResponse (line 83) | type EmbeddingResponse struct FILE: dto/error.go type OpenAIErrorWithStatusCode (line 17) | type OpenAIErrorWithStatusCode struct type GeneralErrorResponse (line 23) | type GeneralErrorResponse struct method TryToOpenAIError (line 41) | func (e GeneralErrorResponse) TryToOpenAIError() *types.OpenAIError { method ToMessage (line 52) | func (e GeneralErrorResponse) ToMessage() string { FILE: dto/gemini.go type GeminiChatRequest (line 14) | type GeminiChatRequest struct method UnmarshalJSON (line 26) | func (r *GeminiChatRequest) UnmarshalJSON(data []byte) error { method GetTokenCountMeta (line 75) | func (r *GeminiChatRequest) GetTokenCountMeta() *types.TokenCountMeta { method IsStream (line 120) | func (r *GeminiChatRequest) IsStream(c *gin.Context) bool { method SetModelName (line 127) | func (r *GeminiChatRequest) SetModelName(modelName string) { method GetTools (line 131) | func (r *GeminiChatRequest) GetTools() []GeminiChatTool { method SetTools (line 151) | func (r *GeminiChatRequest) SetTools(tools []GeminiChatTool) { type ToolConfig (line 46) | type ToolConfig struct type FunctionCallingConfig (line 51) | type FunctionCallingConfig struct type FunctionCallingConfigMode (line 55) | type FunctionCallingConfigMode type RetrievalConfig (line 57) | type RetrievalConfig struct type LatLng (line 62) | type LatLng struct function createGeminiFileSource (line 68) | func createGeminiFileSource(data string, mimeType string) *types.FileSou... type GeminiThinkingConfig (line 166) | type GeminiThinkingConfig struct method UnmarshalJSON (line 174) | func (c *GeminiThinkingConfig) UnmarshalJSON(data []byte) error { method SetThinkingBudget (line 204) | func (c *GeminiThinkingConfig) SetThinkingBudget(budget int) { type GeminiInlineData (line 208) | type GeminiInlineData struct method UnmarshalJSON (line 214) | func (g *GeminiInlineData) UnmarshalJSON(data []byte) error { type FunctionCall (line 237) | type FunctionCall struct type GeminiFunctionResponse (line 242) | type GeminiFunctionResponse struct type GeminiPartExecutableCode (line 251) | type GeminiPartExecutableCode struct type GeminiPartCodeExecutionResult (line 256) | type GeminiPartCodeExecutionResult struct type GeminiFileData (line 261) | type GeminiFileData struct type GeminiPart (line 266) | type GeminiPart struct method UnmarshalJSON (line 282) | func (p *GeminiPart) UnmarshalJSON(data []byte) error { type GeminiChatContent (line 308) | type GeminiChatContent struct type GeminiChatSafetySettings (line 313) | type GeminiChatSafetySettings struct type GeminiChatTool (line 318) | type GeminiChatTool struct type GeminiChatGenerationConfig (line 326) | type GeminiChatGenerationConfig struct method UnmarshalJSON (line 350) | func (c *GeminiChatGenerationConfig) UnmarshalJSON(data []byte) error { type MediaResolution (line 435) | type MediaResolution type GeminiChatCandidate (line 437) | type GeminiChatCandidate struct type GeminiChatSafetyRating (line 444) | type GeminiChatSafetyRating struct type GeminiChatPromptFeedback (line 449) | type GeminiChatPromptFeedback struct type GeminiChatResponse (line 454) | type GeminiChatResponse struct type GeminiUsageMetadata (line 460) | type GeminiUsageMetadata struct type GeminiPromptTokensDetails (line 471) | type GeminiPromptTokensDetails struct type GeminiImageRequest (line 477) | type GeminiImageRequest struct type GeminiImageInstance (line 482) | type GeminiImageInstance struct type GeminiImageParameters (line 486) | type GeminiImageParameters struct type GeminiImageResponse (line 493) | type GeminiImageResponse struct type GeminiImagePrediction (line 497) | type GeminiImagePrediction struct type GeminiEmbeddingRequest (line 505) | type GeminiEmbeddingRequest struct method IsStream (line 513) | func (r *GeminiEmbeddingRequest) IsStream(c *gin.Context) bool { method GetTokenCountMeta (line 518) | func (r *GeminiEmbeddingRequest) GetTokenCountMeta() *types.TokenCount... method SetModelName (line 531) | func (r *GeminiEmbeddingRequest) SetModelName(modelName string) { type GeminiBatchEmbeddingRequest (line 537) | type GeminiBatchEmbeddingRequest struct method IsStream (line 541) | func (r *GeminiBatchEmbeddingRequest) IsStream(c *gin.Context) bool { method GetTokenCountMeta (line 546) | func (r *GeminiBatchEmbeddingRequest) GetTokenCountMeta() *types.Token... method SetModelName (line 560) | func (r *GeminiBatchEmbeddingRequest) SetModelName(modelName string) { type GeminiEmbeddingResponse (line 568) | type GeminiEmbeddingResponse struct type GeminiBatchEmbeddingResponse (line 572) | type GeminiBatchEmbeddingResponse struct type ContentEmbedding (line 576) | type ContentEmbedding struct FILE: dto/gemini_generation_config_test.go function TestGeminiChatGenerationConfigPreservesExplicitZeroValuesCamelCase (line 11) | func TestGeminiChatGenerationConfigPreservesExplicitZeroValuesCamelCase(... function TestGeminiChatGenerationConfigPreservesExplicitZeroValuesSnakeCase (line 51) | func TestGeminiChatGenerationConfigPreservesExplicitZeroValuesSnakeCase(... FILE: dto/midjourney.go type SwapFaceRequest (line 10) | type SwapFaceRequest struct type MidjourneyRequest (line 15) | type MidjourneyRequest struct type MidjourneyResponse (line 29) | type MidjourneyResponse struct type MidjourneyUploadResponse (line 36) | type MidjourneyUploadResponse struct type MidjourneyResponseWithStatusCode (line 42) | type MidjourneyResponseWithStatusCode struct type MidjourneyDto (line 47) | type MidjourneyDto struct type ImgUrls (line 70) | type ImgUrls struct type MidjourneyStatus (line 74) | type MidjourneyStatus struct type MidjourneyWithoutStatus (line 77) | type MidjourneyWithoutStatus struct type ActionButton (line 96) | type ActionButton struct type Properties (line 104) | type Properties struct FILE: dto/notify.go type Notify (line 3) | type Notify struct constant ContentValueParam (line 10) | ContentValueParam = "{{value}}" constant NotifyTypeQuotaExceed (line 13) | NotifyTypeQuotaExceed = "quota_exceed" constant NotifyTypeChannelUpdate (line 14) | NotifyTypeChannelUpdate = "channel_update" constant NotifyTypeChannelTest (line 15) | NotifyTypeChannelTest = "channel_test" function NewNotify (line 18) | func NewNotify(t string, title string, content string, values []interfac... FILE: dto/openai_compaction.go type OpenAIResponsesCompactionResponse (line 9) | type OpenAIResponsesCompactionResponse struct method GetOpenAIError (line 18) | func (o *OpenAIResponsesCompactionResponse) GetOpenAIError() *types.Op... FILE: dto/openai_image.go type ImageRequest (line 14) | type ImageRequest struct method UnmarshalJSON (line 39) | func (i *ImageRequest) UnmarshalJSON(data []byte) error { method MarshalJSON (line 68) | func (r ImageRequest) MarshalJSON() ([]byte, error) { method GetTokenCountMeta (line 127) | func (i *ImageRequest) GetTokenCountMeta() *types.TokenCountMeta { method IsStream (line 163) | func (i *ImageRequest) IsStream(c *gin.Context) bool { method SetModelName (line 167) | func (i *ImageRequest) SetModelName(modelName string) { function GetJSONFieldNames (line 93) | func GetJSONFieldNames(t reflect.Type) map[string]struct{} { function indexComma (line 118) | func indexComma(s string) int { type ImageResponse (line 173) | type ImageResponse struct type ImageData (line 178) | type ImageData struct FILE: dto/openai_request.go type ResponseFormat (line 15) | type ResponseFormat struct type FormatJsonSchema (line 20) | type FormatJsonSchema struct type GeneralOpenAIRequest (line 29) | type GeneralOpenAIRequest struct method GetTokenCountMeta (line 119) | func (r *GeneralOpenAIRequest) GetTokenCountMeta() *types.TokenCountMe... method IsStream (line 227) | func (r *GeneralOpenAIRequest) IsStream(c *gin.Context) bool { method SetModelName (line 231) | func (r *GeneralOpenAIRequest) SetModelName(modelName string) { method ToMap (line 237) | func (r *GeneralOpenAIRequest) ToMap() map[string]any { method GetSystemRoleName (line 244) | func (r *GeneralOpenAIRequest) GetSystemRoleName() string { method GetMaxTokens (line 278) | func (r *GeneralOpenAIRequest) GetMaxTokens() uint { method ParseInput (line 286) | func (r *GeneralOpenAIRequest) ParseInput() []string { function createFileSource (line 112) | func createFileSource(data string) *types.FileSource { constant CustomType (line 255) | CustomType = "custom" type ToolCallRequest (line 257) | type ToolCallRequest struct type FunctionRequest (line 264) | type FunctionRequest struct type StreamOptions (line 271) | type StreamOptions struct type Message (line 305) | type Message struct method GetPrefix (line 428) | func (m *Message) GetPrefix() bool { method SetPrefix (line 435) | func (m *Message) SetPrefix(prefix bool) { method ParseToolCalls (line 439) | func (m *Message) ParseToolCalls() []ToolCallRequest { method SetToolCalls (line 450) | func (m *Message) SetToolCalls(toolCalls any) { method StringContent (line 455) | func (m *Message) StringContent() string { method SetNullContent (line 478) | func (m *Message) SetNullContent() { method SetStringContent (line 483) | func (m *Message) SetStringContent(content string) { method SetMediaContent (line 488) | func (m *Message) SetMediaContent(content []MediaContent) { method IsStringContent (line 493) | func (m *Message) IsStringContent() bool { method ParseContent (line 501) | func (m *Message) ParseContent() []MediaContent { type MediaContent (line 318) | type MediaContent struct method GetImageMedia (line 329) | func (m *MediaContent) GetImageMedia() *MessageImageUrl { method GetInputAudio (line 346) | func (m *MediaContent) GetInputAudio() *MessageInputAudio { method GetFile (line 362) | func (m *MediaContent) GetFile() *MessageFile { method GetVideoUrl (line 379) | func (m *MediaContent) GetVideoUrl() *MessageVideoUrl { type MessageImageUrl (line 394) | type MessageImageUrl struct method IsRemoteImage (line 400) | func (m *MessageImageUrl) IsRemoteImage() bool { type MessageInputAudio (line 404) | type MessageInputAudio struct type MessageFile (line 409) | type MessageFile struct type MessageVideoUrl (line 415) | type MessageVideoUrl struct constant ContentTypeText (line 420) | ContentTypeText = "text" constant ContentTypeImageURL (line 421) | ContentTypeImageURL = "image_url" constant ContentTypeInputAudio (line 422) | ContentTypeInputAudio = "input_audio" constant ContentTypeFile (line 423) | ContentTypeFile = "file" constant ContentTypeVideoUrl (line 424) | ContentTypeVideoUrl = "video_url" type WebSearchOptions (line 808) | type WebSearchOptions struct type OpenAIResponsesRequest (line 814) | type OpenAIResponsesRequest struct method GetTokenCountMeta (line 857) | func (r *OpenAIResponsesRequest) GetTokenCountMeta() *types.TokenCount... method IsStream (line 916) | func (r *OpenAIResponsesRequest) IsStream(c *gin.Context) bool { method SetModelName (line 920) | func (r *OpenAIResponsesRequest) SetModelName(modelName string) { method GetToolsMap (line 926) | func (r *OpenAIResponsesRequest) GetToolsMap() []map[string]any { method ParseInput (line 958) | func (r *OpenAIResponsesRequest) ParseInput() []MediaInput { type Reasoning (line 934) | type Reasoning struct type Input (line 939) | type Input struct type MediaInput (line 945) | type MediaInput struct FILE: dto/openai_request_zero_value_test.go function TestGeneralOpenAIRequestPreserveExplicitZeroValues (line 11) | func TestGeneralOpenAIRequestPreserveExplicitZeroValues(t *testing.T) { function TestOpenAIResponsesRequestPreserveExplicitZeroValues (line 53) | func TestOpenAIResponsesRequestPreserveExplicitZeroValues(t *testing.T) { FILE: dto/openai_response.go constant ResponsesOutputTypeImageGenerationCall (line 11) | ResponsesOutputTypeImageGenerationCall = "image_generation_call" type SimpleResponse (line 14) | type SimpleResponse struct method GetOpenAIError (line 20) | func (s *SimpleResponse) GetOpenAIError() *types.OpenAIError { type TextResponse (line 24) | type TextResponse struct type OpenAITextResponseChoice (line 33) | type OpenAITextResponseChoice struct type OpenAITextResponse (line 39) | type OpenAITextResponse struct method GetOpenAIError (line 50) | func (o *OpenAITextResponse) GetOpenAIError() *types.OpenAIError { type OpenAIEmbeddingResponseItem (line 54) | type OpenAIEmbeddingResponseItem struct type OpenAIEmbeddingResponse (line 60) | type OpenAIEmbeddingResponse struct type FlexibleEmbeddingResponseItem (line 67) | type FlexibleEmbeddingResponseItem struct type FlexibleEmbeddingResponse (line 73) | type FlexibleEmbeddingResponse struct type ChatCompletionsStreamResponseChoice (line 80) | type ChatCompletionsStreamResponseChoice struct type ChatCompletionsStreamResponseChoiceDelta (line 87) | type ChatCompletionsStreamResponseChoiceDelta struct method SetContentString (line 95) | func (c *ChatCompletionsStreamResponseChoiceDelta) SetContentString(s ... method GetContentString (line 99) | func (c *ChatCompletionsStreamResponseChoiceDelta) GetContentString() ... method GetReasoningContent (line 106) | func (c *ChatCompletionsStreamResponseChoiceDelta) GetReasoningContent... method SetReasoningContent (line 116) | func (c *ChatCompletionsStreamResponseChoiceDelta) SetReasoningContent... type ToolCallResponse (line 121) | type ToolCallResponse struct method SetIndex (line 129) | func (c *ToolCallResponse) SetIndex(i int) { type FunctionResponse (line 133) | type FunctionResponse struct type ChatCompletionsStreamResponse (line 141) | type ChatCompletionsStreamResponse struct method IsFinished (line 151) | func (c *ChatCompletionsStreamResponse) IsFinished() bool { method IsToolCall (line 158) | func (c *ChatCompletionsStreamResponse) IsToolCall() bool { method GetFirstToolCall (line 165) | func (c *ChatCompletionsStreamResponse) GetFirstToolCall() *ToolCallRe... method ClearToolCalls (line 172) | func (c *ChatCompletionsStreamResponse) ClearToolCalls() { method Copy (line 185) | func (c *ChatCompletionsStreamResponse) Copy() *ChatCompletionsStreamR... method GetSystemFingerprint (line 199) | func (c *ChatCompletionsStreamResponse) GetSystemFingerprint() string { method SetSystemFingerprint (line 206) | func (c *ChatCompletionsStreamResponse) SetSystemFingerprint(s string) { type ChatCompletionsStreamResponseSimple (line 210) | type ChatCompletionsStreamResponseSimple struct type CompletionsStreamResponse (line 215) | type CompletionsStreamResponse struct type Usage (line 222) | type Usage struct type OpenAIVideoResponse (line 242) | type OpenAIVideoResponse struct type InputTokenDetails (line 252) | type InputTokenDetails struct type OutputTokenDetails (line 260) | type OutputTokenDetails struct type OpenAIResponsesResponse (line 266) | type OpenAIResponsesResponse struct method GetOpenAIError (line 292) | func (o *OpenAIResponsesResponse) GetOpenAIError() *types.OpenAIError { method HasImageGenerationCall (line 296) | func (o *OpenAIResponsesResponse) HasImageGenerationCall() bool { method GetQuality (line 308) | func (o *OpenAIResponsesResponse) GetQuality() string { method GetSize (line 320) | func (o *OpenAIResponsesResponse) GetSize() string { type IncompleteDetails (line 332) | type IncompleteDetails struct type ResponsesOutput (line 336) | type ResponsesOutput struct type ResponsesOutputContent (line 349) | type ResponsesOutputContent struct type ResponsesReasoningSummaryPart (line 355) | type ResponsesReasoningSummaryPart struct constant BuildInToolWebSearchPreview (line 361) | BuildInToolWebSearchPreview = "web_search_preview" constant BuildInToolFileSearch (line 362) | BuildInToolFileSearch = "file_search" constant BuildInCallWebSearchCall (line 366) | BuildInCallWebSearchCall = "web_search_call" constant ResponsesOutputTypeItemAdded (line 370) | ResponsesOutputTypeItemAdded = "response.output_item.added" constant ResponsesOutputTypeItemDone (line 371) | ResponsesOutputTypeItemDone = "response.output_item.done" type ResponsesStreamResponse (line 375) | type ResponsesStreamResponse struct function GetOpenAIError (line 390) | func GetOpenAIError(errorField any) *types.OpenAIError { FILE: dto/openai_responses_compaction_request.go type OpenAIResponsesCompactionRequest (line 12) | type OpenAIResponsesCompactionRequest struct method GetTokenCountMeta (line 19) | func (r *OpenAIResponsesCompactionRequest) GetTokenCountMeta() *types.... method IsStream (line 32) | func (r *OpenAIResponsesCompactionRequest) IsStream(c *gin.Context) bo... method SetModelName (line 36) | func (r *OpenAIResponsesCompactionRequest) SetModelName(modelName stri... FILE: dto/openai_video.go constant VideoStatusUnknown (line 9) | VideoStatusUnknown = "unknown" constant VideoStatusQueued (line 10) | VideoStatusQueued = "queued" constant VideoStatusInProgress (line 11) | VideoStatusInProgress = "in_progress" constant VideoStatusCompleted (line 12) | VideoStatusCompleted = "completed" constant VideoStatusFailed (line 13) | VideoStatusFailed = "failed" type OpenAIVideo (line 16) | type OpenAIVideo struct method SetProgressStr (line 33) | func (m *OpenAIVideo) SetProgressStr(progress string) { method SetMetadata (line 37) | func (m *OpenAIVideo) SetMetadata(k string, v any) { function NewOpenAIVideo (line 43) | func NewOpenAIVideo() *OpenAIVideo { type OpenAIVideoError (line 50) | type OpenAIVideoError struct FILE: dto/playground.go type PlayGroundRequest (line 3) | type PlayGroundRequest struct FILE: dto/pricing.go type OpenAIModels (line 6) | type OpenAIModels struct type AnthropicModel (line 14) | type AnthropicModel struct type GeminiModel (line 21) | type GeminiModel struct FILE: dto/ratio_sync.go type UpstreamDTO (line 3) | type UpstreamDTO struct type UpstreamRequest (line 10) | type UpstreamRequest struct type TestResult (line 17) | type TestResult struct type DifferenceItem (line 27) | type DifferenceItem struct type SyncableChannel (line 33) | type SyncableChannel struct FILE: dto/realtime.go constant RealtimeEventTypeError (line 6) | RealtimeEventTypeError = "error" constant RealtimeEventTypeSessionUpdate (line 7) | RealtimeEventTypeSessionUpdate = "session.update" constant RealtimeEventTypeConversationCreate (line 8) | RealtimeEventTypeConversationCreate = "conversation.item.create" constant RealtimeEventTypeResponseCreate (line 9) | RealtimeEventTypeResponseCreate = "response.create" constant RealtimeEventInputAudioBufferAppend (line 10) | RealtimeEventInputAudioBufferAppend = "input_audio_buffer.append" constant RealtimeEventTypeResponseDone (line 14) | RealtimeEventTypeResponseDone = "response.done" constant RealtimeEventTypeSessionUpdated (line 15) | RealtimeEventTypeSessionUpdated = "session.updated" constant RealtimeEventTypeSessionCreated (line 16) | RealtimeEventTypeSessionCreated = "session.created" constant RealtimeEventResponseAudioDelta (line 17) | RealtimeEventResponseAudioDelta = "response.audio.delta" constant RealtimeEventResponseAudioTranscriptionDelta (line 18) | RealtimeEventResponseAudioTranscriptionDelta = "response.audio_transc... constant RealtimeEventResponseFunctionCallArgumentsDelta (line 19) | RealtimeEventResponseFunctionCallArgumentsDelta = "response.function_cal... constant RealtimeEventResponseFunctionCallArgumentsDone (line 20) | RealtimeEventResponseFunctionCallArgumentsDone = "response.function_cal... constant RealtimeEventConversationItemCreated (line 21) | RealtimeEventConversationItemCreated = "conversation.item.cre... type RealtimeEvent (line 24) | type RealtimeEvent struct type RealtimeResponse (line 36) | type RealtimeResponse struct type RealtimeUsage (line 40) | type RealtimeUsage struct type RealtimeSession (line 48) | type RealtimeSession struct type InputAudioTranscription (line 62) | type InputAudioTranscription struct type RealTimeTool (line 66) | type RealTimeTool struct type RealtimeItem (line 73) | type RealtimeItem struct type RealtimeContent (line 83) | type RealtimeContent struct FILE: dto/request_common.go type Request (line 8) | type Request interface type BaseRequest (line 14) | type BaseRequest struct method GetTokenCountMeta (line 17) | func (b *BaseRequest) GetTokenCountMeta() *types.TokenCountMeta { method IsStream (line 22) | func (b *BaseRequest) IsStream(c *gin.Context) bool { method SetModelName (line 25) | func (b *BaseRequest) SetModelName(modelName string) {} FILE: dto/rerank.go type RerankRequest (line 11) | type RerankRequest struct method IsStream (line 21) | func (r *RerankRequest) IsStream(c *gin.Context) bool { method GetTokenCountMeta (line 25) | func (r *RerankRequest) GetTokenCountMeta() *types.TokenCountMeta { method SetModelName (line 41) | func (r *RerankRequest) SetModelName(modelName string) { method GetReturnDocuments (line 47) | func (r *RerankRequest) GetReturnDocuments() bool { type RerankResponseResult (line 54) | type RerankResponseResult struct type RerankDocument (line 60) | type RerankDocument struct type RerankResponse (line 64) | type RerankResponse struct FILE: dto/sensitive.go type SensitiveResponse (line 3) | type SensitiveResponse struct FILE: dto/suno.go type SunoSubmitReq (line 7) | type SunoSubmitReq struct type SunoDataResponse (line 19) | type SunoDataResponse struct type SunoSong (line 30) | type SunoSong struct type SunoMetadata (line 44) | type SunoMetadata struct type SunoLyrics (line 54) | type SunoLyrics struct type SunoGoAPISubmitReq (line 61) | type SunoGoAPISubmitReq struct type SunoGoAPISubmitReqInput (line 69) | type SunoGoAPISubmitReqInput struct type GoAPITaskResponse (line 81) | type GoAPITaskResponse struct type GoAPITaskResponseData (line 88) | type GoAPITaskResponseData struct type GoAPIFetchResponseData (line 92) | type GoAPIFetchResponseData struct FILE: dto/task.go type TaskError (line 7) | type TaskError struct type TaskData (line 16) | type TaskData interface constant TaskSuccessCode (line 20) | TaskSuccessCode = "success" type TaskResponse (line 22) | type TaskResponse struct method IsSuccess (line 28) | func (t *TaskResponse[T]) IsSuccess() bool { type TaskDto (line 32) | type TaskDto struct type FetchReq (line 55) | type FetchReq struct FILE: dto/user_settings.go type UserSetting (line 3) | type UserSetting struct FILE: dto/values.go type IntValue (line 8) | type IntValue method UnmarshalJSON (line 10) | func (i *IntValue) UnmarshalJSON(b []byte) error { method MarshalJSON (line 28) | func (i IntValue) MarshalJSON() ([]byte, error) { type BoolValue (line 32) | type BoolValue method UnmarshalJSON (line 34) | func (b *BoolValue) UnmarshalJSON(data []byte) error { method MarshalJSON (line 53) | func (b BoolValue) MarshalJSON() ([]byte, error) { FILE: dto/video.go type VideoRequest (line 3) | type VideoRequest struct type VideoResponse (line 19) | type VideoResponse struct type VideoTaskResponse (line 25) | type VideoTaskResponse struct type VideoTaskMetadata (line 35) | type VideoTaskMetadata struct type VideoTaskError (line 44) | type VideoTaskError struct FILE: electron/create-tray-icon.js function createTrayIcon (line 7) | function createTrayIcon() { FILE: electron/main.js constant PORT (line 11) | const PORT = 3000; constant DEV_FRONTEND_PORT (line 12) | const DEV_FRONTEND_PORT = 5173; function saveAndOpenErrorLog (line 15) | function saveAndOpenErrorLog() { function analyzeError (line 64) | function analyzeError(errorLogs) { function getBinaryPath (line 150) | function getBinaryPath() { function checkServerAvailability (line 178) | function checkServerAvailability(port, maxRetries = 30, retryDelay = 100... function startServer (line 222) | function startServer() { function createWindow (line 388) | function createWindow() { function createTray (line 428) | function createTray() { FILE: electron/preload.js function getDataDirPath (line 5) | function getDataDirPath() { FILE: i18n/i18n.go constant LangZhCN (line 19) | LangZhCN = "zh-CN" constant LangZhTW (line 20) | LangZhTW = "zh-TW" constant LangEn (line 21) | LangEn = "en" constant DefaultLang (line 22) | DefaultLang = LangEn function Init (line 36) | func Init() error { function GetLocalizer (line 64) | func GetLocalizer(lang string) *i18n.Localizer { function T (line 90) | func T(c *gin.Context, key string, args ...map[string]any) string { function Translate (line 96) | func Translate(lang, key string, args ...map[string]any) string { function SetUserLangLoader (line 120) | func SetUserLangLoader(loader func(userId int) string) { function GetLangFromContext (line 130) | func GetLangFromContext(c *gin.Context) string { function ParseAcceptLanguage (line 180) | func ParseAcceptLanguage(header string) string { function normalizeLang (line 201) | func normalizeLang(lang string) string { function SupportedLanguages (line 218) | func SupportedLanguages() []string { function IsSupported (line 223) | func IsSupported(lang string) bool { FILE: i18n/keys.go constant MsgInvalidParams (line 8) | MsgInvalidParams = "common.invalid_params" constant MsgDatabaseError (line 9) | MsgDatabaseError = "common.database_error" constant MsgRetryLater (line 10) | MsgRetryLater = "common.retry_later" constant MsgGenerateFailed (line 11) | MsgGenerateFailed = "common.generate_failed" constant MsgNotFound (line 12) | MsgNotFound = "common.not_found" constant MsgUnauthorized (line 13) | MsgUnauthorized = "common.unauthorized" constant MsgForbidden (line 14) | MsgForbidden = "common.forbidden" constant MsgInvalidId (line 15) | MsgInvalidId = "common.invalid_id" constant MsgIdEmpty (line 16) | MsgIdEmpty = "common.id_empty" constant MsgFeatureDisabled (line 17) | MsgFeatureDisabled = "common.feature_disabled" constant MsgOperationSuccess (line 18) | MsgOperationSuccess = "common.operation_success" constant MsgOperationFailed (line 19) | MsgOperationFailed = "common.operation_failed" constant MsgUpdateSuccess (line 20) | MsgUpdateSuccess = "common.update_success" constant MsgUpdateFailed (line 21) | MsgUpdateFailed = "common.update_failed" constant MsgCreateSuccess (line 22) | MsgCreateSuccess = "common.create_success" constant MsgCreateFailed (line 23) | MsgCreateFailed = "common.create_failed" constant MsgDeleteSuccess (line 24) | MsgDeleteSuccess = "common.delete_success" constant MsgDeleteFailed (line 25) | MsgDeleteFailed = "common.delete_failed" constant MsgAlreadyExists (line 26) | MsgAlreadyExists = "common.already_exists" constant MsgNameCannotBeEmpty (line 27) | MsgNameCannotBeEmpty = "common.name_cannot_be_empty" constant MsgTokenNameTooLong (line 32) | MsgTokenNameTooLong = "token.name_too_long" constant MsgTokenQuotaNegative (line 33) | MsgTokenQuotaNegative = "token.quota_negative" constant MsgTokenQuotaExceedMax (line 34) | MsgTokenQuotaExceedMax = "token.quota_exceed_max" constant MsgTokenGenerateFailed (line 35) | MsgTokenGenerateFailed = "token.generate_failed" constant MsgTokenGetInfoFailed (line 36) | MsgTokenGetInfoFailed = "token.get_info_failed" constant MsgTokenExpiredCannotEnable (line 37) | MsgTokenExpiredCannotEnable = "token.expired_cannot_enable" constant MsgTokenExhaustedCannotEable (line 38) | MsgTokenExhaustedCannotEable = "token.exhausted_cannot_enable" constant MsgTokenInvalid (line 39) | MsgTokenInvalid = "token.invalid" constant MsgTokenNotProvided (line 40) | MsgTokenNotProvided = "token.not_provided" constant MsgTokenExpired (line 41) | MsgTokenExpired = "token.expired" constant MsgTokenExhausted (line 42) | MsgTokenExhausted = "token.exhausted" constant MsgTokenStatusUnavailable (line 43) | MsgTokenStatusUnavailable = "token.status_unavailable" constant MsgTokenDbError (line 44) | MsgTokenDbError = "token.db_error" constant MsgRedemptionNameLength (line 49) | MsgRedemptionNameLength = "redemption.name_length" constant MsgRedemptionCountPositive (line 50) | MsgRedemptionCountPositive = "redemption.count_positive" constant MsgRedemptionCountMax (line 51) | MsgRedemptionCountMax = "redemption.count_max" constant MsgRedemptionCreateFailed (line 52) | MsgRedemptionCreateFailed = "redemption.create_failed" constant MsgRedemptionInvalid (line 53) | MsgRedemptionInvalid = "redemption.invalid" constant MsgRedemptionUsed (line 54) | MsgRedemptionUsed = "redemption.used" constant MsgRedemptionExpired (line 55) | MsgRedemptionExpired = "redemption.expired" constant MsgRedemptionFailed (line 56) | MsgRedemptionFailed = "redemption.failed" constant MsgRedemptionNotProvided (line 57) | MsgRedemptionNotProvided = "redemption.not_provided" constant MsgRedemptionExpireTimeInvalid (line 58) | MsgRedemptionExpireTimeInvalid = "redemption.expire_time_invalid" constant MsgUserPasswordLoginDisabled (line 63) | MsgUserPasswordLoginDisabled = "user.password_login_disabled" constant MsgUserRegisterDisabled (line 64) | MsgUserRegisterDisabled = "user.register_disabled" constant MsgUserPasswordRegisterDisabled (line 65) | MsgUserPasswordRegisterDisabled = "user.password_register_disabled" constant MsgUserUsernameOrPasswordEmpty (line 66) | MsgUserUsernameOrPasswordEmpty = "user.username_or_password_empty" constant MsgUserUsernameOrPasswordError (line 67) | MsgUserUsernameOrPasswordError = "user.username_or_password_error" constant MsgUserEmailOrPasswordEmpty (line 68) | MsgUserEmailOrPasswordEmpty = "user.email_or_password_empty" constant MsgUserExists (line 69) | MsgUserExists = "user.exists" constant MsgUserNotExists (line 70) | MsgUserNotExists = "user.not_exists" constant MsgUserDisabled (line 71) | MsgUserDisabled = "user.disabled" constant MsgUserSessionSaveFailed (line 72) | MsgUserSessionSaveFailed = "user.session_save_failed" constant MsgUserRequire2FA (line 73) | MsgUserRequire2FA = "user.require_2fa" constant MsgUserEmailVerificationRequired (line 74) | MsgUserEmailVerificationRequired = "user.email_verification_required" constant MsgUserVerificationCodeError (line 75) | MsgUserVerificationCodeError = "user.verification_code_error" constant MsgUserInputInvalid (line 76) | MsgUserInputInvalid = "user.input_invalid" constant MsgUserNoPermissionSameLevel (line 77) | MsgUserNoPermissionSameLevel = "user.no_permission_same_level" constant MsgUserNoPermissionHigherLevel (line 78) | MsgUserNoPermissionHigherLevel = "user.no_permission_higher_level" constant MsgUserCannotCreateHigherLevel (line 79) | MsgUserCannotCreateHigherLevel = "user.cannot_create_higher_level" constant MsgUserCannotDeleteRootUser (line 80) | MsgUserCannotDeleteRootUser = "user.cannot_delete_root_user" constant MsgUserCannotDisableRootUser (line 81) | MsgUserCannotDisableRootUser = "user.cannot_disable_root_user" constant MsgUserCannotDemoteRootUser (line 82) | MsgUserCannotDemoteRootUser = "user.cannot_demote_root_user" constant MsgUserAlreadyAdmin (line 83) | MsgUserAlreadyAdmin = "user.already_admin" constant MsgUserAlreadyCommon (line 84) | MsgUserAlreadyCommon = "user.already_common" constant MsgUserAdminCannotPromote (line 85) | MsgUserAdminCannotPromote = "user.admin_cannot_promote" constant MsgUserOriginalPasswordError (line 86) | MsgUserOriginalPasswordError = "user.original_password_error" constant MsgUserInviteQuotaInsufficient (line 87) | MsgUserInviteQuotaInsufficient = "user.invite_quota_insufficient" constant MsgUserTransferQuotaMinimum (line 88) | MsgUserTransferQuotaMinimum = "user.transfer_quota_minimum" constant MsgUserTransferSuccess (line 89) | MsgUserTransferSuccess = "user.transfer_success" constant MsgUserTransferFailed (line 90) | MsgUserTransferFailed = "user.transfer_failed" constant MsgUserTopUpProcessing (line 91) | MsgUserTopUpProcessing = "user.topup_processing" constant MsgUserRegisterFailed (line 92) | MsgUserRegisterFailed = "user.register_failed" constant MsgUserDefaultTokenFailed (line 93) | MsgUserDefaultTokenFailed = "user.default_token_failed" constant MsgUserAffCodeEmpty (line 94) | MsgUserAffCodeEmpty = "user.aff_code_empty" constant MsgUserEmailEmpty (line 95) | MsgUserEmailEmpty = "user.email_empty" constant MsgUserGitHubIdEmpty (line 96) | MsgUserGitHubIdEmpty = "user.github_id_empty" constant MsgUserDiscordIdEmpty (line 97) | MsgUserDiscordIdEmpty = "user.discord_id_empty" constant MsgUserOidcIdEmpty (line 98) | MsgUserOidcIdEmpty = "user.oidc_id_empty" constant MsgUserWeChatIdEmpty (line 99) | MsgUserWeChatIdEmpty = "user.wechat_id_empty" constant MsgUserTelegramIdEmpty (line 100) | MsgUserTelegramIdEmpty = "user.telegram_id_empty" constant MsgUserTelegramNotBound (line 101) | MsgUserTelegramNotBound = "user.telegram_not_bound" constant MsgUserLinuxDOIdEmpty (line 102) | MsgUserLinuxDOIdEmpty = "user.linux_do_id_empty" constant MsgQuotaNegative (line 107) | MsgQuotaNegative = "quota.negative" constant MsgQuotaExceedMax (line 108) | MsgQuotaExceedMax = "quota.exceed_max" constant MsgQuotaInsufficient (line 109) | MsgQuotaInsufficient = "quota.insufficient" constant MsgQuotaWarningInvalid (line 110) | MsgQuotaWarningInvalid = "quota.warning_invalid" constant MsgQuotaThresholdGtZero (line 111) | MsgQuotaThresholdGtZero = "quota.threshold_gt_zero" constant MsgSubscriptionNotEnabled (line 116) | MsgSubscriptionNotEnabled = "subscription.not_enabled" constant MsgSubscriptionTitleEmpty (line 117) | MsgSubscriptionTitleEmpty = "subscription.title_empty" constant MsgSubscriptionPriceNegative (line 118) | MsgSubscriptionPriceNegative = "subscription.price_negative" constant MsgSubscriptionPriceMax (line 119) | MsgSubscriptionPriceMax = "subscription.price_max" constant MsgSubscriptionPurchaseLimitNeg (line 120) | MsgSubscriptionPurchaseLimitNeg = "subscription.purchase_limit_negative" constant MsgSubscriptionQuotaNegative (line 121) | MsgSubscriptionQuotaNegative = "subscription.quota_negative" constant MsgSubscriptionGroupNotExists (line 122) | MsgSubscriptionGroupNotExists = "subscription.group_not_exists" constant MsgSubscriptionResetCycleGtZero (line 123) | MsgSubscriptionResetCycleGtZero = "subscription.reset_cycle_gt_zero" constant MsgSubscriptionPurchaseMax (line 124) | MsgSubscriptionPurchaseMax = "subscription.purchase_max" constant MsgSubscriptionInvalidId (line 125) | MsgSubscriptionInvalidId = "subscription.invalid_id" constant MsgSubscriptionInvalidUserId (line 126) | MsgSubscriptionInvalidUserId = "subscription.invalid_user_id" constant MsgPaymentNotConfigured (line 131) | MsgPaymentNotConfigured = "payment.not_configured" constant MsgPaymentMethodNotExists (line 132) | MsgPaymentMethodNotExists = "payment.method_not_exists" constant MsgPaymentCallbackError (line 133) | MsgPaymentCallbackError = "payment.callback_error" constant MsgPaymentCreateFailed (line 134) | MsgPaymentCreateFailed = "payment.create_failed" constant MsgPaymentStartFailed (line 135) | MsgPaymentStartFailed = "payment.start_failed" constant MsgPaymentAmountTooLow (line 136) | MsgPaymentAmountTooLow = "payment.amount_too_low" constant MsgPaymentStripeNotConfig (line 137) | MsgPaymentStripeNotConfig = "payment.stripe_not_configured" constant MsgPaymentWebhookNotConfig (line 138) | MsgPaymentWebhookNotConfig = "payment.webhook_not_configured" constant MsgPaymentPriceIdNotConfig (line 139) | MsgPaymentPriceIdNotConfig = "payment.price_id_not_configured" constant MsgPaymentCreemNotConfig (line 140) | MsgPaymentCreemNotConfig = "payment.creem_not_configured" constant MsgTopupNotProvided (line 145) | MsgTopupNotProvided = "topup.not_provided" constant MsgTopupOrderNotExists (line 146) | MsgTopupOrderNotExists = "topup.order_not_exists" constant MsgTopupOrderStatus (line 147) | MsgTopupOrderStatus = "topup.order_status" constant MsgTopupFailed (line 148) | MsgTopupFailed = "topup.failed" constant MsgTopupInvalidQuota (line 149) | MsgTopupInvalidQuota = "topup.invalid_quota" constant MsgChannelNotExists (line 154) | MsgChannelNotExists = "channel.not_exists" constant MsgChannelIdFormatError (line 155) | MsgChannelIdFormatError = "channel.id_format_error" constant MsgChannelNoAvailableKey (line 156) | MsgChannelNoAvailableKey = "channel.no_available_key" constant MsgChannelGetListFailed (line 157) | MsgChannelGetListFailed = "channel.get_list_failed" constant MsgChannelGetTagsFailed (line 158) | MsgChannelGetTagsFailed = "channel.get_tags_failed" constant MsgChannelGetKeyFailed (line 159) | MsgChannelGetKeyFailed = "channel.get_key_failed" constant MsgChannelGetOllamaFailed (line 160) | MsgChannelGetOllamaFailed = "channel.get_ollama_failed" constant MsgChannelQueryFailed (line 161) | MsgChannelQueryFailed = "channel.query_failed" constant MsgChannelNoValidUpstream (line 162) | MsgChannelNoValidUpstream = "channel.no_valid_upstream" constant MsgChannelUpstreamSaturated (line 163) | MsgChannelUpstreamSaturated = "channel.upstream_saturated" constant MsgChannelGetAvailableFailed (line 164) | MsgChannelGetAvailableFailed = "channel.get_available_failed" constant MsgModelNameEmpty (line 169) | MsgModelNameEmpty = "model.name_empty" constant MsgModelNameExists (line 170) | MsgModelNameExists = "model.name_exists" constant MsgModelIdMissing (line 171) | MsgModelIdMissing = "model.id_missing" constant MsgModelGetListFailed (line 172) | MsgModelGetListFailed = "model.get_list_failed" constant MsgModelGetFailed (line 173) | MsgModelGetFailed = "model.get_failed" constant MsgModelResetSuccess (line 174) | MsgModelResetSuccess = "model.reset_success" constant MsgVendorNameEmpty (line 179) | MsgVendorNameEmpty = "vendor.name_empty" constant MsgVendorNameExists (line 180) | MsgVendorNameExists = "vendor.name_exists" constant MsgVendorIdMissing (line 181) | MsgVendorIdMissing = "vendor.id_missing" constant MsgGroupNameTypeEmpty (line 186) | MsgGroupNameTypeEmpty = "group.name_type_empty" constant MsgGroupNameExists (line 187) | MsgGroupNameExists = "group.name_exists" constant MsgGroupIdMissing (line 188) | MsgGroupIdMissing = "group.id_missing" constant MsgCheckinDisabled (line 193) | MsgCheckinDisabled = "checkin.disabled" constant MsgCheckinAlreadyToday (line 194) | MsgCheckinAlreadyToday = "checkin.already_today" constant MsgCheckinFailed (line 195) | MsgCheckinFailed = "checkin.failed" constant MsgCheckinQuotaFailed (line 196) | MsgCheckinQuotaFailed = "checkin.quota_failed" constant MsgPasskeyCreateFailed (line 201) | MsgPasskeyCreateFailed = "passkey.create_failed" constant MsgPasskeyLoginAbnormal (line 202) | MsgPasskeyLoginAbnormal = "passkey.login_abnormal" constant MsgPasskeyUpdateFailed (line 203) | MsgPasskeyUpdateFailed = "passkey.update_failed" constant MsgPasskeyInvalidUserId (line 204) | MsgPasskeyInvalidUserId = "passkey.invalid_user_id" constant MsgPasskeyVerifyFailed (line 205) | MsgPasskeyVerifyFailed = "passkey.verify_failed" constant MsgTwoFANotEnabled (line 210) | MsgTwoFANotEnabled = "twofa.not_enabled" constant MsgTwoFAUserIdEmpty (line 211) | MsgTwoFAUserIdEmpty = "twofa.user_id_empty" constant MsgTwoFAAlreadyExists (line 212) | MsgTwoFAAlreadyExists = "twofa.already_exists" constant MsgTwoFARecordIdEmpty (line 213) | MsgTwoFARecordIdEmpty = "twofa.record_id_empty" constant MsgTwoFACodeInvalid (line 214) | MsgTwoFACodeInvalid = "twofa.code_invalid" constant MsgRateLimitReached (line 219) | MsgRateLimitReached = "rate_limit.reached" constant MsgRateLimitTotalReached (line 220) | MsgRateLimitTotalReached = "rate_limit.total_reached" constant MsgSettingInvalidType (line 225) | MsgSettingInvalidType = "setting.invalid_type" constant MsgSettingWebhookEmpty (line 226) | MsgSettingWebhookEmpty = "setting.webhook_empty" constant MsgSettingWebhookInvalid (line 227) | MsgSettingWebhookInvalid = "setting.webhook_invalid" constant MsgSettingEmailInvalid (line 228) | MsgSettingEmailInvalid = "setting.email_invalid" constant MsgSettingBarkUrlEmpty (line 229) | MsgSettingBarkUrlEmpty = "setting.bark_url_empty" constant MsgSettingBarkUrlInvalid (line 230) | MsgSettingBarkUrlInvalid = "setting.bark_url_invalid" constant MsgSettingGotifyUrlEmpty (line 231) | MsgSettingGotifyUrlEmpty = "setting.gotify_url_empty" constant MsgSettingGotifyTokenEmpty (line 232) | MsgSettingGotifyTokenEmpty = "setting.gotify_token_empty" constant MsgSettingGotifyUrlInvalid (line 233) | MsgSettingGotifyUrlInvalid = "setting.gotify_url_invalid" constant MsgSettingUrlMustHttp (line 234) | MsgSettingUrlMustHttp = "setting.url_must_http" constant MsgSettingSaved (line 235) | MsgSettingSaved = "setting.saved" constant MsgDeploymentNotEnabled (line 240) | MsgDeploymentNotEnabled = "deployment.not_enabled" constant MsgDeploymentIdRequired (line 241) | MsgDeploymentIdRequired = "deployment.id_required" constant MsgDeploymentContainerIdReq (line 242) | MsgDeploymentContainerIdReq = "deployment.container_id_required" constant MsgDeploymentNameEmpty (line 243) | MsgDeploymentNameEmpty = "deployment.name_empty" constant MsgDeploymentNameTaken (line 244) | MsgDeploymentNameTaken = "deployment.name_taken" constant MsgDeploymentHardwareIdReq (line 245) | MsgDeploymentHardwareIdReq = "deployment.hardware_id_required" constant MsgDeploymentHardwareInvId (line 246) | MsgDeploymentHardwareInvId = "deployment.hardware_invalid_id" constant MsgDeploymentApiKeyRequired (line 247) | MsgDeploymentApiKeyRequired = "deployment.api_key_required" constant MsgDeploymentInvalidPayload (line 248) | MsgDeploymentInvalidPayload = "deployment.invalid_payload" constant MsgDeploymentNotFound (line 249) | MsgDeploymentNotFound = "deployment.not_found" constant MsgPerfDiskCacheCleared (line 254) | MsgPerfDiskCacheCleared = "performance.disk_cache_cleared" constant MsgPerfStatsReset (line 255) | MsgPerfStatsReset = "performance.stats_reset" constant MsgPerfGcExecuted (line 256) | MsgPerfGcExecuted = "performance.gc_executed" constant MsgAbilityDbCorrupted (line 261) | MsgAbilityDbCorrupted = "ability.db_corrupted" constant MsgAbilityRepairRunning (line 262) | MsgAbilityRepairRunning = "ability.repair_running" constant MsgOAuthInvalidCode (line 267) | MsgOAuthInvalidCode = "oauth.invalid_code" constant MsgOAuthGetUserErr (line 268) | MsgOAuthGetUserErr = "oauth.get_user_error" constant MsgOAuthAccountUsed (line 269) | MsgOAuthAccountUsed = "oauth.account_used" constant MsgOAuthUnknownProvider (line 270) | MsgOAuthUnknownProvider = "oauth.unknown_provider" constant MsgOAuthStateInvalid (line 271) | MsgOAuthStateInvalid = "oauth.state_invalid" constant MsgOAuthNotEnabled (line 272) | MsgOAuthNotEnabled = "oauth.not_enabled" constant MsgOAuthUserDeleted (line 273) | MsgOAuthUserDeleted = "oauth.user_deleted" constant MsgOAuthUserBanned (line 274) | MsgOAuthUserBanned = "oauth.user_banned" constant MsgOAuthBindSuccess (line 275) | MsgOAuthBindSuccess = "oauth.bind_success" constant MsgOAuthAlreadyBound (line 276) | MsgOAuthAlreadyBound = "oauth.already_bound" constant MsgOAuthConnectFailed (line 277) | MsgOAuthConnectFailed = "oauth.connect_failed" constant MsgOAuthTokenFailed (line 278) | MsgOAuthTokenFailed = "oauth.token_failed" constant MsgOAuthUserInfoEmpty (line 279) | MsgOAuthUserInfoEmpty = "oauth.user_info_empty" constant MsgOAuthTrustLevelLow (line 280) | MsgOAuthTrustLevelLow = "oauth.trust_level_low" constant MsgRedeemFailed (line 285) | MsgRedeemFailed = "redeem.failed" constant MsgCreateDefaultTokenErr (line 286) | MsgCreateDefaultTokenErr = "user.create_default_token_error" constant MsgUuidDuplicate (line 287) | MsgUuidDuplicate = "common.uuid_duplicate" constant MsgInvalidInput (line 288) | MsgInvalidInput = "common.invalid_input" constant MsgDistributorInvalidRequest (line 293) | MsgDistributorInvalidRequest = "distributor.invalid_request" constant MsgDistributorInvalidChannelId (line 294) | MsgDistributorInvalidChannelId = "distributor.invalid_channel_id" constant MsgDistributorChannelDisabled (line 295) | MsgDistributorChannelDisabled = "distributor.channel_disabled" constant MsgDistributorTokenNoModelAccess (line 296) | MsgDistributorTokenNoModelAccess = "distributor.token_no_model_access" constant MsgDistributorTokenModelForbidden (line 297) | MsgDistributorTokenModelForbidden = "distributor.token_model_forbidden" constant MsgDistributorModelNameRequired (line 298) | MsgDistributorModelNameRequired = "distributor.model_name_required" constant MsgDistributorInvalidPlayground (line 299) | MsgDistributorInvalidPlayground = "distributor.invalid_playground_requ... constant MsgDistributorGroupAccessDenied (line 300) | MsgDistributorGroupAccessDenied = "distributor.group_access_denied" constant MsgDistributorGetChannelFailed (line 301) | MsgDistributorGetChannelFailed = "distributor.get_channel_failed" constant MsgDistributorNoAvailableChannel (line 302) | MsgDistributorNoAvailableChannel = "distributor.no_available_channel" constant MsgDistributorInvalidMidjourney (line 303) | MsgDistributorInvalidMidjourney = "distributor.invalid_midjourney_requ... constant MsgDistributorInvalidParseModel (line 304) | MsgDistributorInvalidParseModel = "distributor.invalid_request_parse_m... constant MsgCustomOAuthNotFound (line 309) | MsgCustomOAuthNotFound = "custom_oauth.not_found" constant MsgCustomOAuthSlugEmpty (line 310) | MsgCustomOAuthSlugEmpty = "custom_oauth.slug_empty" constant MsgCustomOAuthSlugExists (line 311) | MsgCustomOAuthSlugExists = "custom_oauth.slug_exists" constant MsgCustomOAuthNameEmpty (line 312) | MsgCustomOAuthNameEmpty = "custom_oauth.name_empty" constant MsgCustomOAuthHasBindings (line 313) | MsgCustomOAuthHasBindings = "custom_oauth.has_bindings" constant MsgCustomOAuthBindingNotFound (line 314) | MsgCustomOAuthBindingNotFound = "custom_oauth.binding_not_found" constant MsgCustomOAuthProviderIdInvalid (line 315) | MsgCustomOAuthProviderIdInvalid = "custom_oauth.provider_id_field_invalid" FILE: logger/logger.go constant loggerINFO (line 21) | loggerINFO = "INFO" constant loggerWarn (line 22) | loggerWarn = "WARN" constant loggerError (line 23) | loggerError = "ERR" constant loggerDebug (line 24) | loggerDebug = "DEBUG" constant maxLogCount (line 27) | maxLogCount = 1000000 function SetupLogger (line 33) | func SetupLogger() { function LogInfo (line 56) | func LogInfo(ctx context.Context, msg string) { function LogWarn (line 60) | func LogWarn(ctx context.Context, msg string) { function LogError (line 64) | func LogError(ctx context.Context, msg string) { function LogDebug (line 68) | func LogDebug(ctx context.Context, msg string, args ...any) { function logHelper (line 77) | func logHelper(ctx context.Context, level string, msg string) { function LogQuota (line 98) | func LogQuota(quota int) string { function FormatQuota (line 125) | func FormatQuota(quota int) string { function LogJson (line 152) | func LogJson(ctx context.Context, msg string, obj any) { FILE: main.go function main (line 43) | func main() { function InjectUmamiAnalytics (line 201) | func InjectUmamiAnalytics() { function InjectGoogleAnalytics (line 220) | func InjectGoogleAnalytics() { function InitResources (line 242) | func InitResources() error { FILE: middleware/auth.go function validUserInfo (line 22) | func validUserInfo(username string, role int) bool { function authHelper (line 33) | func authHelper(c *gin.Context, minRole int) { function TryUserAuth (line 140) | func TryUserAuth() func(c *gin.Context) { function UserAuth (line 151) | func UserAuth() func(c *gin.Context) { function AdminAuth (line 157) | func AdminAuth() func(c *gin.Context) { function RootAuth (line 163) | func RootAuth() func(c *gin.Context) { function WssAuth (line 169) | func WssAuth(c *gin.Context) { function TokenOrUserAuth (line 175) | func TokenOrUserAuth() func(c *gin.Context) { function TokenAuthReadOnly (line 195) | func TokenAuthReadOnly() func(c *gin.Context) { function TokenAuth (line 248) | func TokenAuth() func(c *gin.Context) { function SetupContextForToken (line 372) | func SetupContextForToken(c *gin.Context, token *model.Token, parts ...s... FILE: middleware/body_cleanup.go function BodyStorageCleanup (line 11) | func BodyStorageCleanup() gin.HandlerFunc { FILE: middleware/cache.go function Cache (line 7) | func Cache() func(c *gin.Context) { FILE: middleware/cors.go function CORS (line 9) | func CORS() gin.HandlerFunc { function PoweredBy (line 18) | func PoweredBy() gin.HandlerFunc { FILE: middleware/disable-cache.go function DisableCache (line 5) | func DisableCache() gin.HandlerFunc { FILE: middleware/distributor.go type ModelRequest (line 25) | type ModelRequest struct function Distribute (line 30) | func Distribute() func(c *gin.Context) { function getModelFromRequest (line 167) | func getModelFromRequest(c *gin.Context) (*ModelRequest, error) { function getModelRequest (line 176) | func getModelRequest(c *gin.Context) (*ModelRequest, bool, error) { function SetupContextForSelectedChannel (line 340) | func SetupContextForSelectedChannel(c *gin.Context, channel *model.Chann... function extractModelNameFromGeminiPath (line 407) | func extractModelNameFromGeminiPath(path string) string { FILE: middleware/email-verification-rate-limit.go constant EmailVerificationRateLimitMark (line 15) | EmailVerificationRateLimitMark = "EV" constant EmailVerificationMaxRequests (line 16) | EmailVerificationMaxRequests = 2 constant EmailVerificationDuration (line 17) | EmailVerificationDuration = 30 function redisEmailVerificationRateLimiter (line 20) | func redisEmailVerificationRateLimiter(c *gin.Context) { function memoryEmailVerificationRateLimiter (line 57) | func memoryEmailVerificationRateLimiter(c *gin.Context) { function EmailVerificationRateLimit (line 72) | func EmailVerificationRateLimit() gin.HandlerFunc { FILE: middleware/gzip.go type readCloser (line 13) | type readCloser struct method Close (line 18) | func (rc *readCloser) Close() error { function DecompressRequestMiddleware (line 25) | func DecompressRequestMiddleware() gin.HandlerFunc { FILE: middleware/i18n.go function I18n (line 13) | func I18n() gin.HandlerFunc { function detectLanguage (line 23) | func detectLanguage(c *gin.Context) string { function GetLanguage (line 45) | func GetLanguage(c *gin.Context) string { FILE: middleware/jimeng_adapter.go function JimengRequestConvert (line 15) | func JimengRequestConvert() func(c *gin.Context) { FILE: middleware/kling_adapter.go function KlingRequestConvert (line 14) | func KlingRequestConvert() func(c *gin.Context) { FILE: middleware/logger.go constant RouteTagKey (line 10) | RouteTagKey = "route_tag" function RouteTag (line 12) | func RouteTag(tag string) gin.HandlerFunc { function SetUpLogger (line 19) | func SetUpLogger(server *gin.Engine) { FILE: middleware/model-rate-limit.go constant ModelRequestRateLimitCountMark (line 20) | ModelRequestRateLimitCountMark = "MRRL" constant ModelRequestRateLimitSuccessCountMark (line 21) | ModelRequestRateLimitSuccessCountMark = "MRRLS" function checkRedisRateLimit (line 25) | func checkRedisRateLimit(ctx context.Context, rdb *redis.Client, key str... function recordRedisRequest (line 65) | func recordRedisRequest(ctx context.Context, rdb *redis.Client, key stri... function redisRateLimitHandler (line 78) | func redisRateLimitHandler(duration int64, totalMaxCount, successMaxCoun... function memoryRateLimitHandler (line 132) | func memoryRateLimitHandler(duration int64, totalMaxCount, successMaxCou... function ModelRequestRateLimit (line 167) | func ModelRequestRateLimit() func(c *gin.Context) { FILE: middleware/performance.go function SystemPerformanceCheck (line 14) | func SystemPerformanceCheck() gin.HandlerFunc { function checkSystemPerformance (line 41) | func checkSystemPerformance() *types.NewAPIError { FILE: middleware/rate-limit.go function redisRateLimiter (line 21) | func redisRateLimiter(c *gin.Context, maxRequestNum int, duration int64,... function memoryRateLimiter (line 67) | func memoryRateLimiter(c *gin.Context, maxRequestNum int, duration int64... function rateLimitFactory (line 76) | func rateLimitFactory(maxRequestNum int, duration int64, mark string) fu... function GlobalWebRateLimit (line 90) | func GlobalWebRateLimit() func(c *gin.Context) { function GlobalAPIRateLimit (line 97) | func GlobalAPIRateLimit() func(c *gin.Context) { function CriticalRateLimit (line 104) | func CriticalRateLimit() func(c *gin.Context) { function DownloadRateLimit (line 111) | func DownloadRateLimit() func(c *gin.Context) { function UploadRateLimit (line 115) | func UploadRateLimit() func(c *gin.Context) { function userRateLimitFactory (line 122) | func userRateLimitFactory(maxRequestNum int, duration int64, mark string... function userRedisRateLimiter (line 155) | func userRedisRateLimiter(c *gin.Context, maxRequestNum int, duration in... function SearchRateLimit (line 200) | func SearchRateLimit() func(c *gin.Context) { FILE: middleware/recover.go function RelayPanicRecover (line 12) | func RelayPanicRecover() gin.HandlerFunc { FILE: middleware/request-id.go function RequestId (line 10) | func RequestId() func(c *gin.Context) { FILE: middleware/secure_verification.go constant SecureVerificationSessionKey (line 13) | SecureVerificationSessionKey = "secure_verified_at" constant SecureVerificationTimeout (line 15) | SecureVerificationTimeout = 300 function SecureVerificationRequired (line 21) | func SecureVerificationRequired() gin.HandlerFunc { function OptionalSecureVerification (line 85) | func OptionalSecureVerification() gin.HandlerFunc { function ClearSecureVerification (line 127) | func ClearSecureVerification(c *gin.Context) { FILE: middleware/stats.go type HTTPStats (line 10) | type HTTPStats struct function StatsMiddleware (line 17) | func StatsMiddleware() gin.HandlerFunc { type StatsInfo (line 32) | type StatsInfo struct function GetStats (line 37) | func GetStats() StatsInfo { FILE: middleware/turnstile-check.go type turnstileCheckResponse (line 13) | type turnstileCheckResponse struct function TurnstileCheck (line 17) | func TurnstileCheck() gin.HandlerFunc { FILE: middleware/utils.go function abortWithOpenAiMessage (line 12) | func abortWithOpenAiMessage(c *gin.Context, statusCode int, message stri... function abortWithMidjourneyMessage (line 29) | func abortWithMidjourneyMessage(c *gin.Context, statusCode int, code int... FILE: model/ability.go type Ability (line 16) | type Ability struct type AbilityWithChannel (line 26) | type AbilityWithChannel struct function GetAllEnableAbilityWithChannels (line 31) | func GetAllEnableAbilityWithChannels() ([]AbilityWithChannel, error) { function GetGroupEnabledModels (line 41) | func GetGroupEnabledModels(group string) []string { function GetEnabledModels (line 48) | func GetEnabledModels() []string { function GetAllEnableAbilities (line 55) | func GetAllEnableAbilities() []Ability { function getPriority (line 61) | func getPriority(group string, model string, retry int) (int, error) { function getChannelQuery (line 91) | func getChannelQuery(group string, model string, retry int) (*gorm.DB, e... function GetChannel (line 106) | func GetChannel(group string, model string, retry int) (*Channel, error) { method AddAbilities (line 146) | func (channel *Channel) AddAbilities(tx *gorm.DB) error { method DeleteAbilities (line 187) | func (channel *Channel) DeleteAbilities() error { method UpdateAbilities (line 193) | func (channel *Channel) UpdateAbilities(tx *gorm.DB) error { function UpdateAbilityStatus (line 263) | func UpdateAbilityStatus(channelId int, status bool) error { function UpdateAbilityStatusByTag (line 267) | func UpdateAbilityStatusByTag(tag string, status bool) error { function UpdateAbilityByTag (line 271) | func UpdateAbilityByTag(tag string, newTag *string, priority *int64, wei... function FixAbility (line 287) | func FixAbility() (int, int, error) { FILE: model/channel.go type Channel (line 21) | type Channel struct method GetKeys (line 81) | func (channel *Channel) GetKeys() []string { method GetNextEnabledKey (line 105) | func (channel *Channel) GetNextEnabledKey() (string, int, *types.NewAP... method SaveChannelInfo (line 192) | func (channel *Channel) SaveChannelInfo() error { method GetModels (line 196) | func (channel *Channel) GetModels() []string { method GetGroups (line 203) | func (channel *Channel) GetGroups() []string { method GetOtherInfo (line 214) | func (channel *Channel) GetOtherInfo() map[string]interface{} { method SetOtherInfo (line 225) | func (channel *Channel) SetOtherInfo(otherInfo map[string]interface{}) { method GetTag (line 234) | func (channel *Channel) GetTag() string { method SetTag (line 241) | func (channel *Channel) SetTag(tag string) { method GetAutoBan (line 245) | func (channel *Channel) GetAutoBan() bool { method Save (line 252) | func (channel *Channel) Save() error { method SaveWithoutKey (line 256) | func (channel *Channel) SaveWithoutKey() error { method GetPriority (line 409) | func (channel *Channel) GetPriority() int64 { method GetWeight (line 416) | func (channel *Channel) GetWeight() int { method GetBaseURL (line 423) | func (channel *Channel) GetBaseURL() string { method GetModelMapping (line 434) | func (channel *Channel) GetModelMapping() string { method GetStatusCodeMapping (line 441) | func (channel *Channel) GetStatusCodeMapping() string { method Insert (line 448) | func (channel *Channel) Insert() error { method Update (line 458) | func (channel *Channel) Update() error { method UpdateResponseTime (line 507) | func (channel *Channel) UpdateResponseTime(responseTime int64) { method UpdateBalance (line 517) | func (channel *Channel) UpdateBalance(balance float64) { method Delete (line 527) | func (channel *Channel) Delete() error { method ValidateSettings (line 844) | func (channel *Channel) ValidateSettings() error { method GetSetting (line 855) | func (channel *Channel) GetSetting() dto.ChannelSettings { method SetSetting (line 868) | func (channel *Channel) SetSetting(setting dto.ChannelSettings) { method GetOtherSettings (line 877) | func (channel *Channel) GetOtherSettings() dto.ChannelOtherSettings { method SetOtherSettings (line 890) | func (channel *Channel) SetOtherSettings(setting dto.ChannelOtherSetti... method GetParamOverride (line 899) | func (channel *Channel) GetParamOverride() map[string]interface{} { method GetHeaderOverride (line 910) | func (channel *Channel) GetHeaderOverride() map[string]interface{} { type ChannelInfo (line 60) | type ChannelInfo struct method Value (line 71) | func (c ChannelInfo) Value() (driver.Value, error) { method Scan (line 76) | func (c *ChannelInfo) Scan(value interface{}) error { function GetAllChannels (line 263) | func GetAllChannels(startIdx int, num int, selectAll bool, idSort bool) ... function GetChannelsByTag (line 278) | func GetChannelsByTag(tag string, idSort bool, selectAll bool) ([]*Chann... function SearchChannels (line 292) | func SearchChannels(keyword string, group string, model string, idSort b... function GetChannelById (line 341) | func GetChannelById(id int, selectAll bool) (*Channel, error) { function BatchInsertChannels (line 358) | func BatchInsertChannels(channels []Channel) error { function BatchDeleteChannels (line 387) | func BatchDeleteChannels(ids []int) error { function GetChannelPollingLock (line 543) | func GetChannelPollingLock(channelId int) *sync.Mutex { function CleanupChannelPollingLocks (line 555) | func CleanupChannelPollingLocks() { function handlerMultiKeyUpdate (line 573) | func handlerMultiKeyUpdate(channel *Channel, usingKey string, status int... function UpdateChannelStatus (line 611) | func UpdateChannelStatus(channelId int, usingKey string, status int, rea... function EnableChannelByTag (line 682) | func EnableChannelByTag(tag string) error { function DisableChannelByTag (line 691) | func DisableChannelByTag(tag string) error { function EditChannelByTag (line 700) | func EditChannelByTag(tag string, newTag *string, modelMapping *string, ... function UpdateChannelUsedQuota (line 756) | func UpdateChannelUsedQuota(id int, quota int) { function updateChannelUsedQuota (line 764) | func updateChannelUsedQuota(id int, quota int) { function DeleteChannelByStatus (line 771) | func DeleteChannelByStatus(status int64) (int64, error) { function DeleteDisabledChannel (line 776) | func DeleteDisabledChannel() (int64, error) { function GetPaginatedTags (line 781) | func GetPaginatedTags(offset int, limit int) ([]*string, error) { function SearchTags (line 787) | func SearchTags(keyword string, group string, model string, idSort bool)... function GetChannelsByIds (line 921) | func GetChannelsByIds(ids []int) ([]*Channel, error) { function BatchSetChannelTag (line 927) | func BatchSetChannelTag(ids []int, tag *string) error { function CountAllChannels (line 961) | func CountAllChannels() (int64, error) { function CountAllTags (line 968) | func CountAllTags() (int64, error) { function GetChannelsByType (line 975) | func GetChannelsByType(startIdx int, num int, idSort bool, channelType i... function CountChannelsByType (line 986) | func CountChannelsByType(channelType int) (int64, error) { function CountChannelsGroupByType (line 993) | func CountChannelsGroupByType() (map[int64]int64, error) { FILE: model/channel_cache.go function InitChannelCache (line 21) | func InitChannelCache() { function SyncChannelCache (line 88) | func SyncChannelCache(frequency int) { function GetRandomSatisfiedChannel (line 96) | func GetRandomSatisfiedChannel(group string, model string, retry int) (*... function CacheGetChannel (line 193) | func CacheGetChannel(id int) (*Channel, error) { function CacheGetChannelInfo (line 207) | func CacheGetChannelInfo(id int) (*ChannelInfo, error) { function CacheUpdateChannelStatus (line 225) | func CacheUpdateChannelStatus(id int, status int) { function CacheUpdateChannel (line 250) | func CacheUpdateChannel(channel *Channel) { FILE: model/channel_satisfy.go function IsChannelEnabledForGroupModel (line 8) | func IsChannelEnabledForGroupModel(group string, modelName string, chann... function IsChannelEnabledForAnyGroupModel (line 33) | func IsChannelEnabledForAnyGroupModel(groups []string, modelName string,... function isChannelEnabledForGroupModelDB (line 45) | func isChannelEnabledForGroupModelDB(group string, modelName string, cha... function isChannelIDInList (line 64) | func isChannelIDInList(list []int, channelID int) bool { FILE: model/checkin.go type Checkin (line 14) | type Checkin struct method TableName (line 28) | func (Checkin) TableName() string { type CheckinRecord (line 23) | type CheckinRecord struct function GetUserCheckinRecords (line 33) | func GetUserCheckinRecords(userId int, startDate, endDate string) ([]Che... function HasCheckedInToday (line 43) | func HasCheckedInToday(userId int) (bool, error) { function UserCheckin (line 55) | func UserCheckin(userId int) (*Checkin, error) { function userCheckinWithTransaction (line 95) | func userCheckinWithTransaction(checkin *Checkin, userId int, quotaAward... function userCheckinWithoutTransaction (line 125) | func userCheckinWithoutTransaction(checkin *Checkin, userId int, quotaAw... function GetUserCheckinStats (line 144) | func GetUserCheckinStats(userId int, month string) (map[string]interface... FILE: model/custom_oauth_provider.go type accessPolicyPayload (line 12) | type accessPolicyPayload struct type accessConditionItem (line 18) | type accessConditionItem struct type CustomOAuthProvider (line 40) | type CustomOAuthProvider struct method TableName (line 69) | func (CustomOAuthProvider) TableName() string { function GetAllCustomOAuthProviders (line 74) | func GetAllCustomOAuthProviders() ([]*CustomOAuthProvider, error) { function GetEnabledCustomOAuthProviders (line 81) | func GetEnabledCustomOAuthProviders() ([]*CustomOAuthProvider, error) { function GetCustomOAuthProviderById (line 88) | func GetCustomOAuthProviderById(id int) (*CustomOAuthProvider, error) { function GetCustomOAuthProviderBySlug (line 98) | func GetCustomOAuthProviderBySlug(slug string) (*CustomOAuthProvider, er... function CreateCustomOAuthProvider (line 108) | func CreateCustomOAuthProvider(provider *CustomOAuthProvider) error { function UpdateCustomOAuthProvider (line 116) | func UpdateCustomOAuthProvider(provider *CustomOAuthProvider) error { function DeleteCustomOAuthProvider (line 124) | func DeleteCustomOAuthProvider(id int) error { function IsSlugTaken (line 134) | func IsSlugTaken(slug string, excludeId int) bool { function validateCustomOAuthProvider (line 149) | func validateCustomOAuthProvider(provider *CustomOAuthProvider) error { function validateAccessPolicyPayload (line 207) | func validateAccessPolicyPayload(policy *accessPolicyPayload) error { FILE: model/db_time.go function GetDBTimestamp (line 7) | func GetDBTimestamp() int64 { FILE: model/log.go type Log (line 19) | type Log struct constant LogTypeUnknown (line 44) | LogTypeUnknown = 0 constant LogTypeTopup (line 45) | LogTypeTopup = 1 constant LogTypeConsume (line 46) | LogTypeConsume = 2 constant LogTypeManage (line 47) | LogTypeManage = 3 constant LogTypeSystem (line 48) | LogTypeSystem = 4 constant LogTypeError (line 49) | LogTypeError = 5 constant LogTypeRefund (line 50) | LogTypeRefund = 6 function formatUserLogs (line 53) | func formatUserLogs(logs []*Log, startIdx int) { function GetLogByTokenId (line 68) | func GetLogByTokenId(tokenId int) (logs []*Log, err error) { function RecordLog (line 74) | func RecordLog(userId int, logType int, content string) { function RecordErrorLog (line 92) | func RecordErrorLog(c *gin.Context, userId int, channelId int, modelName... type RecordConsumeLogParams (line 136) | type RecordConsumeLogParams struct function RecordConsumeLog (line 151) | func RecordConsumeLog(c *gin.Context, userId int, params RecordConsumeLo... type RecordTaskBillingLogParams (line 202) | type RecordTaskBillingLogParams struct function RecordTaskBillingLog (line 214) | func RecordTaskBillingLog(params RecordTaskBillingLogParams) { function GetAllLogs (line 245) | func GetAllLogs(logType int, startTimestamp int64, endTimestamp int64, m... constant logSearchCountLimit (line 329) | logSearchCountLimit = 10000 function GetUserLogs (line 331) | func GetUserLogs(userId int, logType int, startTimestamp int64, endTimes... type Stat (line 376) | type Stat struct function SumUsedQuota (line 382) | func SumUsedQuota(logType int, startTimestamp int64, endTimestamp int64,... function SumUsedToken (line 438) | func SumUsedToken(logType int, startTimestamp int64, endTimestamp int64,... function DeleteOldLog (line 459) | func DeleteOldLog(ctx context.Context, targetTimestamp int64, limit int)... FILE: model/main.go function initCol (line 28) | func initCol() { function createRootAccountIfNeed (line 68) | func createRootAccountIfNeed() error { function CheckSetup (line 91) | func CheckSetup() { function chooseDB (line 118) | func chooseDB(envName string, isLog bool) (*gorm.DB, error) { function InitDB (line 177) | func InitDB() (err error) { function InitLogDB (line 213) | func InitLogDB() (err error) { function migrateDB (line 250) | func migrateDB() error { function migrateDBFast (line 299) | func migrateDBFast() error { function migrateLOGDB (line 368) | func migrateLOGDB() error { type sqliteColumnDef (line 376) | type sqliteColumnDef struct function ensureSubscriptionPlanTableSQLite (line 381) | func ensureSubscriptionPlanTableSQLite() error { function migrateTokenModelLimitsToText (line 454) | func migrateTokenModelLimitsToText() error { function migrateSubscriptionPlanPriceAmount (line 507) | func migrateSubscriptionPlanPriceAmount() { function closeDB (line 565) | func closeDB(db *gorm.DB) error { function CloseDB (line 574) | func CloseDB() error { function checkMySQLChineseSupport (line 587) | func checkMySQLChineseSupport(db *gorm.DB) error { function PingDB (line 681) | func PingDB() error { FILE: model/midjourney.go type Midjourney (line 3) | type Midjourney struct method Insert (line 148) | func (midjourney *Midjourney) Insert() error { method Update (line 154) | func (midjourney *Midjourney) Update() error { method UpdateWithStatus (line 165) | func (midjourney *Midjourney) UpdateWithStatus(fromStatus string) (boo... type TaskQueryParams (line 29) | type TaskQueryParams struct function GetAllUserTask (line 36) | func GetAllUserTask(userId int, startIdx int, num int, queryParams TaskQ... function GetAllTasks (line 63) | func GetAllTasks(startIdx int, num int, queryParams TaskQueryParams) []*... function GetAllUnFinishTasks (line 93) | func GetAllUnFinishTasks() []*Midjourney { function GetByOnlyMJId (line 104) | func GetByOnlyMJId(mjId string) *Midjourney { function GetByMJId (line 114) | func GetByMJId(userId int, mjId string) *Midjourney { function GetByMJIds (line 124) | func GetByMJIds(userId int, mjIds []string) []*Midjourney { function GetMjByuId (line 134) | func GetMjByuId(id int) *Midjourney { function UpdateProgress (line 144) | func UpdateProgress(id int, progress string) error { function MjBulkUpdate (line 173) | func MjBulkUpdate(mjIds []string, params map[string]any) error { function MjBulkUpdateByTaskIds (line 179) | func MjBulkUpdateByTaskIds(taskIDs []int, params map[string]any) error { function CountAllTasks (line 186) | func CountAllTasks(queryParams TaskQueryParams) int64 { function CountAllUserTask (line 206) | func CountAllUserTask(userId int, queryParams TaskQueryParams) int64 { FILE: model/missing_models.go function GetMissingModels (line 4) | func GetMissingModels() ([]string, error) { FILE: model/model_extra.go function GetModelEnableGroups (line 3) | func GetModelEnableGroups(modelName string) []string { function GetModelQuotaTypes (line 21) | func GetModelQuotaTypes(modelName string) []int { FILE: model/model_meta.go constant NameRuleExact (line 12) | NameRuleExact = iota constant NameRulePrefix (line 13) | NameRulePrefix constant NameRuleContains (line 14) | NameRuleContains constant NameRuleSuffix (line 15) | NameRuleSuffix type BoundChannel (line 18) | type BoundChannel struct type Model (line 23) | type Model struct method Insert (line 46) | func (mi *Model) Insert() error { method Update (line 76) | func (mi *Model) Update() error { method Delete (line 84) | func (mi *Model) Delete() error { function IsModelNameDuplicated (line 67) | func IsModelNameDuplicated(id int, name string) (bool, error) { function GetVendorModelCounts (line 88) | func GetVendorModelCounts() (map[int64]int64, error) { function GetAllModels (line 106) | func GetAllModels(offset int, limit int) ([]*Model, error) { function GetBoundChannelsByModelsMap (line 112) | func GetBoundChannelsByModelsMap(modelNames []string) (map[string][]Boun... function SearchModels (line 138) | func SearchModels(keyword string, vendor string, offset int, limit int) ... FILE: model/option.go type Option (line 17) | type Option struct function AllOption (line 22) | func AllOption() ([]*Option, error) { function InitOptionMap (line 29) | func InitOptionMap() { function loadOptionsFromDatabase (line 178) | func loadOptionsFromDatabase() { function SyncOptions (line 188) | func SyncOptions(frequency int) { function UpdateOption (line 196) | func UpdateOption(key string, value string) error { function updateOptionMap (line 212) | func updateOptionMap(key string, value string) (err error) { function handleConfigUpdate (line 516) | func handleConfigUpdate(key, value string) bool { FILE: model/passkey.go type PasskeyCredential (line 23) | type PasskeyCredential struct method TransportList (line 44) | func (p *PasskeyCredential) TransportList() []protocol.AuthenticatorTr... method SetTransports (line 59) | func (p *PasskeyCredential) SetTransports(list []protocol.Authenticato... method ToWebAuthnCredential (line 75) | func (p *PasskeyCredential) ToWebAuthnCredential() webauthn.Credential { method ApplyValidatedCredential (line 124) | func (p *PasskeyCredential) ApplyValidatedCredential(credential *webau... function NewPasskeyCredentialFromWebAuthn (line 102) | func NewPasskeyCredentialFromWebAuthn(userID int, credential *webauthn.C... function GetPasskeyByUserID (line 142) | func GetPasskeyByUserID(userID int) (*PasskeyCredential, error) { function GetPasskeyByCredentialID (line 160) | func GetPasskeyByCredentialID(credentialID []byte) (*PasskeyCredential, ... function UpsertPasskeyCredential (line 180) | func UpsertPasskeyCredential(credential *PasskeyCredential) error { function DeletePasskeyByUserID (line 199) | func DeletePasskeyByUserID(userID int) error { FILE: model/prefill_group.go type JSONValue (line 20) | type JSONValue method Value (line 23) | func (j JSONValue) Value() (driver.Value, error) { method Scan (line 31) | func (j *JSONValue) Scan(value interface{}) error { method MarshalJSON (line 57) | func (j JSONValue) MarshalJSON() ([]byte, error) { method UnmarshalJSON (line 65) | func (j *JSONValue) UnmarshalJSON(data []byte) error { type PrefillGroup (line 76) | type PrefillGroup struct method Insert (line 88) | func (g *PrefillGroup) Insert() error { method Update (line 106) | func (g *PrefillGroup) Update() error { function IsPrefillGroupNameDuplicated (line 96) | func IsPrefillGroupNameDuplicated(id int, name string) (bool, error) { function DeletePrefillGroupByID (line 112) | func DeletePrefillGroupByID(id int) error { function GetAllPrefillGroups (line 117) | func GetAllPrefillGroups(groupType string) ([]*PrefillGroup, error) { FILE: model/pricing.go type Pricing (line 17) | type Pricing struct type PricingVendor (line 38) | type PricingVendor struct function GetPricing (line 63) | func GetPricing() []Pricing { function GetVendors (line 78) | func GetVendors() []PricingVendor { function GetModelSupportEndpointTypes (line 86) | func GetModelSupportEndpointTypes(model string) []constant.EndpointType { function updatePricing (line 98) | func updatePricing() { function GetSupportedEndpointMap (line 344) | func GetSupportedEndpointMap() map[string]common.EndpointInfo { FILE: model/pricing_default.go function initDefaultVendorMapping (line 71) | func initDefaultVendorMapping(metaMap map[string]*Model, vendorMap map[i... function getOrCreateVendor (line 99) | func getOrCreateVendor(vendorName string, vendorMap map[int]*Vendor) int { function getDefaultVendorIcon (line 123) | func getDefaultVendorIcon(vendorName string) string { FILE: model/pricing_refresh.go function RefreshPricing (line 6) | func RefreshPricing() { FILE: model/redemption.go type Redemption (line 17) | type Redemption struct method Insert (line 161) | func (redemption *Redemption) Insert() error { method SelectUpdate (line 167) | func (redemption *Redemption) SelectUpdate() error { method Update (line 173) | func (redemption *Redemption) Update() error { method Delete (line 179) | func (redemption *Redemption) Delete() error { function GetAllRedemptions (line 32) | func GetAllRedemptions(startIdx int, num int) (redemptions []*Redemption... function SearchRedemptions (line 66) | func SearchRedemptions(keyword string, startIdx int, num int) (redemptio... function GetRedemptionById (line 108) | func GetRedemptionById(id int) (*Redemption, error) { function Redeem (line 118) | func Redeem(key string, userId int) (quota int, err error) { function DeleteRedemptionById (line 185) | func DeleteRedemptionById(id int) (err error) { function DeleteInvalidRedemptions (line 197) | func DeleteInvalidRedemptions() (int64, error) { FILE: model/setup.go type Setup (line 3) | type Setup struct function GetSetup (line 9) | func GetSetup() *Setup { FILE: model/subscription.go constant SubscriptionDurationYear (line 19) | SubscriptionDurationYear = "year" constant SubscriptionDurationMonth (line 20) | SubscriptionDurationMonth = "month" constant SubscriptionDurationDay (line 21) | SubscriptionDurationDay = "day" constant SubscriptionDurationHour (line 22) | SubscriptionDurationHour = "hour" constant SubscriptionDurationCustom (line 23) | SubscriptionDurationCustom = "custom" constant SubscriptionResetNever (line 28) | SubscriptionResetNever = "never" constant SubscriptionResetDaily (line 29) | SubscriptionResetDaily = "daily" constant SubscriptionResetWeekly (line 30) | SubscriptionResetWeekly = "weekly" constant SubscriptionResetMonthly (line 31) | SubscriptionResetMonthly = "monthly" constant SubscriptionResetCustom (line 32) | SubscriptionResetCustom = "custom" constant subscriptionPlanCacheNamespace (line 41) | subscriptionPlanCacheNamespace = "new-api:subscription_plan:v1" constant subscriptionPlanInfoCacheNamespace (line 42) | subscriptionPlanInfoCacheNamespace = "new-api:subscription_plan_info:v1" function subscriptionPlanCacheTTL (line 53) | func subscriptionPlanCacheTTL() time.Duration { function subscriptionPlanInfoCacheTTL (line 61) | func subscriptionPlanInfoCacheTTL() time.Duration { function subscriptionPlanCacheCapacity (line 69) | func subscriptionPlanCacheCapacity() int { function subscriptionPlanInfoCacheCapacity (line 77) | func subscriptionPlanInfoCacheCapacity() int { function getSubscriptionPlanCache (line 85) | func getSubscriptionPlanCache() *cachex.HybridCache[SubscriptionPlan] { function getSubscriptionPlanInfoCache (line 106) | func getSubscriptionPlanInfoCache() *cachex.HybridCache[SubscriptionPlan... function subscriptionPlanCacheKey (line 127) | func subscriptionPlanCacheKey(id int) string { function InvalidateSubscriptionPlanCache (line 134) | func InvalidateSubscriptionPlanCache(planId int) { type SubscriptionPlan (line 145) | type SubscriptionPlan struct method BeforeCreate (line 182) | func (p *SubscriptionPlan) BeforeCreate(tx *gorm.DB) error { method BeforeUpdate (line 189) | func (p *SubscriptionPlan) BeforeUpdate(tx *gorm.DB) error { type SubscriptionOrder (line 195) | type SubscriptionOrder struct method Insert (line 210) | func (o *SubscriptionOrder) Insert() error { method Update (line 217) | func (o *SubscriptionOrder) Update() error { function GetSubscriptionOrderByTradeNo (line 221) | func GetSubscriptionOrderByTradeNo(tradeNo string) *SubscriptionOrder { type UserSubscription (line 233) | type UserSubscription struct method BeforeCreate (line 257) | func (s *UserSubscription) BeforeCreate(tx *gorm.DB) error { method BeforeUpdate (line 264) | func (s *UserSubscription) BeforeUpdate(tx *gorm.DB) error { type SubscriptionSummary (line 269) | type SubscriptionSummary struct function calcPlanEndTime (line 273) | func calcPlanEndTime(start time.Time, plan *SubscriptionPlan) (int64, er... function NormalizeResetPeriod (line 299) | func NormalizeResetPeriod(period string) string { function calcNextResetTime (line 308) | func calcNextResetTime(base time.Time, plan *SubscriptionPlan, endUnix i... function GetSubscriptionPlanById (line 349) | func GetSubscriptionPlanById(id int) (*SubscriptionPlan, error) { function getSubscriptionPlanByIdTx (line 353) | func getSubscriptionPlanByIdTx(tx *gorm.DB, id int) (*SubscriptionPlan, ... function CountUserSubscriptionsByPlan (line 375) | func CountUserSubscriptionsByPlan(userId int, planId int) (int64, error) { function getUserGroupByIdTx (line 388) | func getUserGroupByIdTx(tx *gorm.DB, userId int) (string, error) { function downgradeUserGroupForSubscriptionTx (line 402) | func downgradeUserGroupForSubscriptionTx(tx *gorm.DB, sub *UserSubscript... function CreateUserSubscriptionFromPlanTx (line 437) | func CreateUserSubscriptionFromPlanTx(tx *gorm.DB, userId int, plan *Sub... function CompleteSubscriptionOrder (line 508) | func CompleteSubscriptionOrder(tradeNo string, providerPayload string) e... function upsertSubscriptionTopUpTx (line 574) | func upsertSubscriptionTopUpTx(tx *gorm.DB, order *SubscriptionOrder) er... function ExpireSubscriptionOrder (line 608) | func ExpireSubscriptionOrder(tradeNo string) error { function AdminBindSubscription (line 631) | func AdminBindSubscription(userId int, planId int, sourceNote string) (s... function GetAllActiveUserSubscriptions (line 654) | func GetAllActiveUserSubscriptions(userId int) ([]SubscriptionSummary, e... function HasActiveUserSubscription (line 671) | func HasActiveUserSubscription(userId int) (bool, error) { function GetAllUserSubscriptions (line 686) | func GetAllUserSubscriptions(userId int) ([]SubscriptionSummary, error) { function buildSubscriptionSummaries (line 700) | func buildSubscriptionSummaries(subs []UserSubscription) []SubscriptionS... function AdminInvalidateUserSubscription (line 715) | func AdminInvalidateUserSubscription(userSubscriptionId int) (string, er... function AdminDeleteUserSubscription (line 760) | func AdminDeleteUserSubscription(userSubscriptionId int) (string, error) { type SubscriptionPreConsumeResult (line 800) | type SubscriptionPreConsumeResult struct function ExpireDueSubscriptions (line 809) | func ExpireDueSubscriptions(limit int) (int, error) { type SubscriptionPreConsumeRecord (line 896) | type SubscriptionPreConsumeRecord struct method BeforeCreate (line 907) | func (r *SubscriptionPreConsumeRecord) BeforeCreate(tx *gorm.DB) error { method BeforeUpdate (line 914) | func (r *SubscriptionPreConsumeRecord) BeforeUpdate(tx *gorm.DB) error { function maybeResetUserSubscriptionWithPlanTx (line 919) | func maybeResetUserSubscriptionWithPlanTx(tx *gorm.DB, sub *UserSubscrip... function PreConsumeUserSubscription (line 956) | func PreConsumeUserSubscription(requestId string, userId int, modelName ... function RefundSubscriptionPreConsume (line 1060) | func RefundSubscriptionPreConsume(requestId string) error { function ResetDueSubscriptions (line 1086) | func ResetDueSubscriptions(limit int) (int, error) { function CleanupSubscriptionPreConsumeRecords (line 1129) | func CleanupSubscriptionPreConsumeRecords(olderThanSeconds int64) (int64... type SubscriptionPlanInfo (line 1138) | type SubscriptionPlanInfo struct function GetSubscriptionPlanInfoByUserSubscriptionId (line 1143) | func GetSubscriptionPlanInfoByUserSubscriptionId(userSubscriptionId int)... function PostConsumeUserSubscriptionDelta (line 1168) | func PostConsumeUserSubscriptionDelta(userSubscriptionId int, delta int6... FILE: model/task.go type TaskStatus (line 15) | type TaskStatus method ToVideoStatus (line 17) | func (t TaskStatus) ToVideoStatus() string { constant TaskStatusNotStart (line 35) | TaskStatusNotStart TaskStatus = "NOT_START" constant TaskStatusSubmitted (line 36) | TaskStatusSubmitted = "SUBMITTED" constant TaskStatusQueued (line 37) | TaskStatusQueued = "QUEUED" constant TaskStatusInProgress (line 38) | TaskStatusInProgress = "IN_PROGRESS" constant TaskStatusFailure (line 39) | TaskStatusFailure = "FAILURE" constant TaskStatusSuccess (line 40) | TaskStatusSuccess = "SUCCESS" constant TaskStatusUnknown (line 41) | TaskStatusUnknown = "UNKNOWN" type Task (line 44) | type Task struct method SetData (line 68) | func (t *Task) SetData(data any) { method GetData (line 73) | func (t *Task) GetData(v any) error { method GetUpstreamTaskID (line 122) | func (t *Task) GetUpstreamTaskID() string { method GetResultURL (line 131) | func (t *Task) GetResultURL() string { method Insert (line 360) | func (Task *Task) Insert() error { method Snapshot (line 386) | func (t *Task) Snapshot() taskSnapshot { method Update (line 398) | func (Task *Task) Update() error { method UpdateWithStatus (line 411) | func (t *Task) UpdateWithStatus(fromStatus TaskStatus) (bool, error) { method ToOpenAIVideo (line 498) | func (t *Task) ToOpenAIVideo() *dto.OpenAIVideo { type Properties (line 77) | type Properties struct method Scan (line 83) | func (m *Properties) Scan(val interface{}) error { method Value (line 92) | func (m Properties) Value() (driver.Value, error) { type TaskPrivateData (line 99) | type TaskPrivateData struct method Scan (line 144) | func (p *TaskPrivateData) Scan(val interface{}) error { method Value (line 152) | func (p TaskPrivateData) Value() (driver.Value, error) { type TaskBillingContext (line 111) | type TaskBillingContext struct function GenerateTaskID (line 139) | func GenerateTaskID() string { type SyncTaskQueryParams (line 160) | type SyncTaskQueryParams struct function InitTask (line 172) | func InitTask(platform constant.TaskPlatform, relayInfo *commonRelay.Rel... function TaskGetAllUserTask (line 211) | func TaskGetAllUserTask(userId int, startIdx int, num int, queryParams S... function TaskGetAllTasks (line 247) | func TaskGetAllTasks(startIdx int, num int, queryParams SyncTaskQueryPar... function GetTimedOutUnfinishedTasks (line 292) | func GetTimedOutUnfinishedTasks(cutoffUnix int64, limit int) []*Task { function GetAllUnFinishSyncTasks (line 306) | func GetAllUnFinishSyncTasks(limit int) []*Task { function GetByOnlyTaskId (line 317) | func GetByOnlyTaskId(taskId string) (*Task, bool, error) { function GetByTaskId (line 331) | func GetByTaskId(userId int, taskId string) (*Task, bool, error) { function GetByTaskIds (line 346) | func GetByTaskIds(userId int, taskIds []any) ([]*Task, error) { type taskSnapshot (line 366) | type taskSnapshot struct method Equal (line 376) | func (s taskSnapshot) Equal(other taskSnapshot) bool { function TaskBulkUpdateByID (line 424) | func TaskBulkUpdateByID(ids []int64, params map[string]any) error { type TaskQuotaUsage (line 433) | type TaskQuotaUsage struct function TaskCountAllTasks (line 439) | func TaskCountAllTasks(queryParams SyncTaskQueryParams) int64 { function TaskCountAllUserTask (line 474) | func TaskCountAllUserTask(userId int, queryParams SyncTaskQueryParams) i... FILE: model/task_cas_test.go function TestMain (line 17) | func TestMain(m *testing.M) { function truncateTables (line 43) | func truncateTables(t *testing.T) { function insertTask (line 54) | func insertTask(t *testing.T, task *Task) { function TestSnapshotEqual_Same (line 65) | func TestSnapshotEqual_Same(t *testing.T) { function TestSnapshotEqual_DifferentStatus (line 78) | func TestSnapshotEqual_DifferentStatus(t *testing.T) { function TestSnapshotEqual_DifferentProgress (line 84) | func TestSnapshotEqual_DifferentProgress(t *testing.T) { function TestSnapshotEqual_DifferentData (line 90) | func TestSnapshotEqual_DifferentData(t *testing.T) { function TestSnapshotEqual_NilVsEmpty (line 96) | func TestSnapshotEqual_NilVsEmpty(t *testing.T) { function TestSnapshot_Roundtrip (line 103) | func TestSnapshot_Roundtrip(t *testing.T) { function TestUpdateWithStatus_Win (line 129) | func TestUpdateWithStatus_Win(t *testing.T) { function TestUpdateWithStatus_Lose (line 152) | func TestUpdateWithStatus_Lose(t *testing.T) { function TestUpdateWithStatus_ConcurrentWinner (line 172) | func TestUpdateWithStatus_ConcurrentWinner(t *testing.T) { FILE: model/token.go type Token (line 14) | type Token struct method Clean (line 34) | func (token *Token) Clean() { method GetFullKey (line 51) | func (token *Token) GetFullKey() string { method GetMaskedKey (line 55) | func (token *Token) GetMaskedKey() string { method GetIpLimits (line 59) | func (token *Token) GetIpLimits() []string { method Insert (line 288) | func (token *Token) Insert() error { method Update (line 295) | func (token *Token) Update() (err error) { method SelectUpdate (line 311) | func (token *Token) SelectUpdate() (err error) { method Delete (line 326) | func (token *Token) Delete() (err error) { method IsModelLimitsEnabled (line 341) | func (token *Token) IsModelLimitsEnabled() bool { method GetModelLimits (line 345) | func (token *Token) GetModelLimits() []string { method GetModelLimitsMap (line 352) | func (token *Token) GetModelLimitsMap() map[string]bool { function MaskTokenKey (line 38) | func MaskTokenKey(key string) string { function GetAllUserTokens (line 81) | func GetAllUserTokens(userId int, startIdx int, num int) ([]*Token, erro... function sanitizeLikePattern (line 95) | func sanitizeLikePattern(input string) (string, error) { constant searchHardLimit (line 125) | searchHardLimit = 100 function SearchUserTokens (line 127) | func SearchUserTokens(userId int, keyword string, token string, offset i... function ValidateUserToken (line 188) | func ValidateUserToken(key string) (token *Token, err error) { function GetTokenByIds (line 237) | func GetTokenByIds(id int, userId int) (*Token, error) { function GetTokenById (line 247) | func GetTokenById(id int) (*Token, error) { function GetTokenByKey (line 264) | func GetTokenByKey(key string, fromDB bool) (token *Token, err error) { function DisableModelLimits (line 361) | func DisableModelLimits(tokenId int) error { function DeleteTokenById (line 371) | func DeleteTokenById(id int, userId int) (err error) { function IncreaseTokenQuota (line 384) | func IncreaseTokenQuota(tokenId int, key string, quota int) (err error) { function increaseTokenQuota (line 403) | func increaseTokenQuota(id int, quota int) (err error) { function DecreaseTokenQuota (line 414) | func DecreaseTokenQuota(id int, key string, quota int) (err error) { function decreaseTokenQuota (line 433) | func decreaseTokenQuota(id int, quota int) (err error) { function CountUserTokens (line 445) | func CountUserTokens(userId int) (int64, error) { function BatchDeleteTokens (line 452) | func BatchDeleteTokens(ids []int, userId int) (int, error) { FILE: model/token_cache.go function cacheSetToken (line 11) | func cacheSetToken(token Token) error { function cacheDeleteToken (line 21) | func cacheDeleteToken(key string) error { function cacheIncrTokenQuota (line 30) | func cacheIncrTokenQuota(key string, increment int64) error { function cacheDecrTokenQuota (line 39) | func cacheDecrTokenQuota(key string, decrement int64) error { function cacheSetTokenField (line 43) | func cacheSetTokenField(key string, field string, value string) error { function cacheGetTokenByKey (line 53) | func cacheGetTokenByKey(key string) (*Token, error) { FILE: model/topup.go type TopUp (line 14) | type TopUp struct method Insert (line 26) | func (topUp *TopUp) Insert() error { method Update (line 32) | func (topUp *TopUp) Update() error { function GetTopUpById (line 38) | func GetTopUpById(id int) *TopUp { function GetTopUpByTradeNo (line 48) | func GetTopUpByTradeNo(tradeNo string) *TopUp { function Recharge (line 58) | func Recharge(referenceId string, customerId string) (err error) { function GetUserTopUps (line 107) | func GetUserTopUps(userId int, pageInfo *common.PageInfo) (topups []*Top... function GetAllTopUps (line 142) | func GetAllTopUps(pageInfo *common.PageInfo) (topups []*TopUp, total int... function SearchUserTopUps (line 171) | func SearchUserTopUps(userId int, keyword string, pageInfo *common.PageI... function SearchAllTopUps (line 205) | func SearchAllTopUps(keyword string, pageInfo *common.PageInfo) (topups ... function ManualCompleteTopUp (line 239) | func ManualCompleteTopUp(tradeNo string) error { function RechargeCreem (line 309) | func RechargeCreem(referenceId string, customerEmail string, customerNam... function RechargeWaffo (line 380) | func RechargeWaffo(tradeNo string) (err error) { FILE: model/twofa.go type TwoFA (line 16) | type TwoFA struct method Create (line 68) | func (t *TwoFA) Create() error { method Update (line 91) | func (t *TwoFA) Update() error { method Delete (line 99) | func (t *TwoFA) Delete() error { method ResetFailedAttempts (line 117) | func (t *TwoFA) ResetFailedAttempts() error { method IncrementFailedAttempts (line 124) | func (t *TwoFA) IncrementFailedAttempts() error { method IsLocked (line 137) | func (t *TwoFA) IsLocked() bool { method Enable (line 229) | func (t *TwoFA) Enable() error { method ValidateTOTPAndUpdateUsage (line 237) | func (t *TwoFA) ValidateTOTPAndUpdateUsage(code string) (bool, error) { method ValidateBackupCodeAndUpdateUsage (line 266) | func (t *TwoFA) ValidateBackupCodeAndUpdateUsage(code string) (bool, e... type TwoFABackupCode (line 30) | type TwoFABackupCode struct function GetTwoFAByUserId (line 41) | func GetTwoFAByUserId(userId int) (*TwoFA, error) { function IsTwoFAEnabled (line 59) | func IsTwoFAEnabled(userId int) bool { function CreateBackupCodes (line 145) | func CreateBackupCodes(userId int, codes []string) error { function ValidateBackupCode (line 175) | func ValidateBackupCode(userId int, code string) (bool, error) { function GetUnusedBackupCodeCount (line 208) | func GetUnusedBackupCodeCount(userId int) (int, error) { function DisableTwoFA (line 215) | func DisableTwoFA(userId int) error { function GetTwoFAStats (line 300) | func GetTwoFAStats() (map[string]interface{}, error) { FILE: model/usedata.go type QuotaData (line 13) | type QuotaData struct function UpdateQuotaData (line 24) | func UpdateQuotaData() { function logQuotaDataCache (line 37) | func logQuotaDataCache(userId int, username string, modelName string, qu... function LogQuotaData (line 58) | func LogQuotaData(userId int, username string, modelName string, quota i... function SaveQuotaDataCache (line 67) | func SaveQuotaDataCache() { function increaseQuotaData (line 92) | func increaseQuotaData(userId int, username string, modelName string, co... function GetQuotaDataByUsername (line 104) | func GetQuotaDataByUsername(username string, startTime int64, endTime in... function GetQuotaDataByUserId (line 111) | func GetQuotaDataByUserId(userId int, startTime int64, endTime int64) (q... function GetAllQuotaDates (line 118) | func GetAllQuotaDates(startTime int64, endTime int64, username string) (... FILE: model/user.go constant UserNameMaxLength (line 19) | UserNameMaxLength = 20 type User (line 23) | type User struct method ToBaseUser (line 55) | func (user *User) ToBaseUser() *UserBase { method GetAccessToken (line 68) | func (user *User) GetAccessToken() string { method SetAccessToken (line 75) | func (user *User) SetAccessToken(token string) { method GetSetting (line 79) | func (user *User) GetSetting() dto.UserSetting { method SetSetting (line 90) | func (user *User) SetSetting(setting dto.UserSetting) { method TransferAffQuotaToQuota (line 342) | func (user *User) TransferAffQuotaToQuota(quota int) error { method Insert (line 379) | func (user *User) Insert(inviterId int) error { method InsertWithTx (line 438) | func (user *User) InsertWithTx(tx *gorm.DB, inviterId int) error { method FinalizeOAuthUserCreation (line 465) | func (user *User) FinalizeOAuthUserCreation(inviterId int) { method Update (line 494) | func (user *User) Update(updatePassword bool) error { method Edit (line 512) | func (user *User) Edit(updatePassword bool) error { method ClearBinding (line 542) | func (user *User) ClearBinding(bindingType string) error { method Delete (line 573) | func (user *User) Delete() error { method HardDelete (line 585) | func (user *User) HardDelete() error { method ValidateAndFill (line 594) | func (user *User) ValidateAndFill() (err error) { method FillUserById (line 612) | func (user *User) FillUserById() error { method FillUserByEmail (line 620) | func (user *User) FillUserByEmail() error { method FillUserByGitHubId (line 628) | func (user *User) FillUserByGitHubId() error { method UpdateGitHubId (line 637) | func (user *User) UpdateGitHubId(newGitHubId string) error { method FillUserByDiscordId (line 644) | func (user *User) FillUserByDiscordId() error { method FillUserByOidcId (line 652) | func (user *User) FillUserByOidcId() error { method FillUserByWeChatId (line 660) | func (user *User) FillUserByWeChatId() error { method FillUserByTelegramId (line 668) | func (user *User) FillUserByTelegramId() error { method FillUserByLinuxDOId (line 1024) | func (user *User) FillUserByLinuxDOId() error { function generateDefaultSidebarConfigForRole (line 100) | func generateDefaultSidebarConfigForRole(userRole int) string { function CheckUserExistOrDeleted (line 162) | func CheckUserExistOrDeleted(username string, email string) (bool, error) { function GetMaxUserId (line 185) | func GetMaxUserId() int { function GetAllUsers (line 191) | func GetAllUsers(pageInfo *common.PageInfo) (users []*User, total int64,... function SearchUsers (line 225) | func SearchUsers(keyword string, group string, startIdx int, num int) ([... function GetUserById (line 292) | func GetUserById(id int, selectAll bool) (*User, error) { function GetUserIdByAffCode (line 306) | func GetUserIdByAffCode(affCode string) (int, error) { function DeleteUserById (line 315) | func DeleteUserById(id int) (err error) { function HardDeleteUserById (line 323) | func HardDeleteUserById(id int) error { function inviteUser (line 331) | func inviteUser(inviterId int) (err error) { function IsEmailAlreadyTaken (line 679) | func IsEmailAlreadyTaken(email string) bool { function IsWeChatIdAlreadyTaken (line 683) | func IsWeChatIdAlreadyTaken(wechatId string) bool { function IsGitHubIdAlreadyTaken (line 687) | func IsGitHubIdAlreadyTaken(githubId string) bool { function IsDiscordIdAlreadyTaken (line 691) | func IsDiscordIdAlreadyTaken(discordId string) bool { function IsOidcIdAlreadyTaken (line 695) | func IsOidcIdAlreadyTaken(oidcId string) bool { function IsTelegramIdAlreadyTaken (line 699) | func IsTelegramIdAlreadyTaken(telegramId string) bool { function ResetUserPasswordByEmail (line 703) | func ResetUserPasswordByEmail(email string, password string) error { function IsAdmin (line 715) | func IsAdmin(userId int) bool { function ValidateAccessToken (line 758) | func ValidateAccessToken(token string) (user *User) { function GetUserQuota (line 771) | func GetUserQuota(id int, fromDB bool) (quota int, err error) { function GetUserUsedQuota (line 798) | func GetUserUsedQuota(id int) (quota int, err error) { function GetUserEmail (line 803) | func GetUserEmail(id int) (email string, err error) { function GetUserGroup (line 809) | func GetUserGroup(id int, fromDB bool) (group string, err error) { function GetUserSetting (line 837) | func GetUserSetting(id int, fromDB bool) (settingMap dto.UserSetting, er... function IncreaseUserQuota (line 874) | func IncreaseUserQuota(id int, quota int, db bool) (err error) { function increaseUserQuota (line 891) | func increaseUserQuota(id int, quota int) (err error) { function DecreaseUserQuota (line 899) | func DecreaseUserQuota(id int, quota int) (err error) { function decreaseUserQuota (line 916) | func decreaseUserQuota(id int, quota int) (err error) { function DeltaUpdateUserQuota (line 924) | func DeltaUpdateUserQuota(id int, delta int) (err error) { function GetRootUser (line 940) | func GetRootUser() (user *User) { function UpdateUserUsedQuotaAndRequestCount (line 945) | func UpdateUserUsedQuotaAndRequestCount(id int, quota int) { function updateUserUsedQuotaAndRequestCount (line 954) | func updateUserUsedQuotaAndRequestCount(id int, quota int, count int) { function updateUserUsedQuota (line 972) | func updateUserUsedQuota(id int, quota int) { function updateUserRequestCount (line 983) | func updateUserRequestCount(id int, count int) { function GetUsernameById (line 991) | func GetUsernameById(id int, fromDB bool) (username string, err error) { function IsLinuxDOIdAlreadyTaken (line 1018) | func IsLinuxDOIdAlreadyTaken(linuxDOId string) bool { function RootUserExists (line 1032) | func RootUserExists() bool { FILE: model/user_cache.go type UserBase (line 17) | type UserBase struct method WriteContext (line 27) | func (user *UserBase) WriteContext(c *gin.Context) { method GetSetting (line 36) | func (user *UserBase) GetSetting() dto.UserSetting { function getUserCacheKey (line 48) | func getUserCacheKey(userId int) string { function invalidateUserCache (line 53) | func invalidateUserCache(userId int) error { function updateUserCache (line 61) | func updateUserCache(user User) error { function GetUserCache (line 74) | func GetUserCache(userId int) (userCache *UserBase, err error) { function cacheGetUserBase (line 115) | func cacheGetUserBase(userId int) (*UserBase, error) { function cacheIncrUserQuota (line 129) | func cacheIncrUserQuota(userId int, delta int64) error { function cacheDecrUserQuota (line 136) | func cacheDecrUserQuota(userId int, delta int64) error { function getUserGroupCache (line 141) | func getUserGroupCache(userId int) (string, error) { function getUserQuotaCache (line 149) | func getUserQuotaCache(userId int) (int, error) { function getUserStatusCache (line 157) | func getUserStatusCache(userId int) (int, error) { function getUserNameCache (line 165) | func getUserNameCache(userId int) (string, error) { function getUserSettingCache (line 173) | func getUserSettingCache(userId int) (dto.UserSetting, error) { function updateUserStatusCache (line 182) | func updateUserStatusCache(userId int, status bool) error { function updateUserQuotaCache (line 193) | func updateUserQuotaCache(userId int, quota int) error { function updateUserGroupCache (line 200) | func updateUserGroupCache(userId int, group string) error { function UpdateUserGroupCache (line 207) | func UpdateUserGroupCache(userId int, group string) error { function updateUserNameCache (line 211) | func updateUserNameCache(userId int, username string) error { function updateUserSettingCache (line 218) | func updateUserSettingCache(userId int, setting string) error { function GetUserLanguage (line 227) | func GetUserLanguage(userId int) string { FILE: model/user_oauth_binding.go type UserOAuthBinding (line 11) | type UserOAuthBinding struct method TableName (line 19) | func (UserOAuthBinding) TableName() string { function GetUserOAuthBindingsByUserId (line 24) | func GetUserOAuthBindingsByUserId(userId int) ([]*UserOAuthBinding, erro... function GetUserOAuthBinding (line 31) | func GetUserOAuthBinding(userId, providerId int) (*UserOAuthBinding, err... function GetUserByOAuthBinding (line 41) | func GetUserByOAuthBinding(providerId int, providerUserId string) (*User... function IsProviderUserIdTaken (line 57) | func IsProviderUserIdTaken(providerId int, providerUserId string) bool { function CreateUserOAuthBinding (line 64) | func CreateUserOAuthBinding(binding *UserOAuthBinding) error { function CreateUserOAuthBindingWithTx (line 85) | func CreateUserOAuthBindingWithTx(tx *gorm.DB, binding *UserOAuthBinding... function UpdateUserOAuthBinding (line 108) | func UpdateUserOAuthBinding(userId, providerId int, newProviderUserId st... function DeleteUserOAuthBinding (line 133) | func DeleteUserOAuthBinding(userId, providerId int) error { function DeleteUserOAuthBindingsByUserId (line 138) | func DeleteUserOAuthBindingsByUserId(userId int) error { function GetBindingCountByProviderId (line 143) | func GetBindingCountByProviderId(providerId int) (int64, error) { FILE: model/utils.go constant BatchUpdateTypeUserQuota (line 15) | BatchUpdateTypeUserQuota = iota constant BatchUpdateTypeTokenQuota (line 16) | BatchUpdateTypeTokenQuota constant BatchUpdateTypeUsedQuota (line 17) | BatchUpdateTypeUsedQuota constant BatchUpdateTypeChannelUsedQuota (line 18) | BatchUpdateTypeChannelUsedQuota constant BatchUpdateTypeRequestCount (line 19) | BatchUpdateTypeRequestCount constant BatchUpdateTypeCount (line 20) | BatchUpdateTypeCount function init (line 26) | func init() { function InitBatchUpdater (line 33) | func InitBatchUpdater() { function addNewRecord (line 42) | func addNewRecord(type_ int, id int, value int) { function batchUpdate (line 52) | func batchUpdate() { function RecordExist (line 100) | func RecordExist(err error) (bool, error) { function shouldUpdateRedis (line 110) | func shouldUpdateRedis(fromDB bool, err error) bool { FILE: model/vendor_meta.go type Vendor (line 15) | type Vendor struct method Insert (line 27) | func (v *Vendor) Insert() error { method Update (line 45) | func (v *Vendor) Update() error { method Delete (line 51) | func (v *Vendor) Delete() error { function IsVendorNameDuplicated (line 35) | func IsVendorNameDuplicated(id int, name string) (bool, error) { function GetVendorByID (line 56) | func GetVendorByID(id int) (*Vendor, error) { function GetAllVendors (line 66) | func GetAllVendors(offset int, limit int) ([]*Vendor, error) { function SearchVendors (line 73) | func SearchVendors(keyword string, offset int, limit int) ([]*Vendor, in... FILE: oauth/discord.go function init (line 19) | func init() { type DiscordProvider (line 24) | type DiscordProvider struct method GetName (line 41) | func (p *DiscordProvider) GetName() string { method IsEnabled (line 45) | func (p *DiscordProvider) IsEnabled() bool { method ExchangeToken (line 49) | func (p *DiscordProvider) ExchangeToken(ctx context.Context, code stri... method GetUserInfo (line 110) | func (p *DiscordProvider) GetUserInfo(ctx context.Context, token *OAut... method IsUserIDTaken (line 157) | func (p *DiscordProvider) IsUserIDTaken(providerUserID string) bool { method FillUserByProviderID (line 161) | func (p *DiscordProvider) FillUserByProviderID(user *model.User, provi... method SetProviderUserID (line 166) | func (p *DiscordProvider) SetProviderUserID(user *model.User, provider... method GetProviderPrefix (line 170) | func (p *DiscordProvider) GetProviderPrefix() string { type discordOAuthResponse (line 26) | type discordOAuthResponse struct type discordUser (line 35) | type discordUser struct FILE: oauth/generic.go constant AuthStyleAutoDetect (line 29) | AuthStyleAutoDetect = 0 constant AuthStyleInParams (line 30) | AuthStyleInParams = 1 constant AuthStyleInHeader (line 31) | AuthStyleInHeader = 2 type GenericOAuthProvider (line 35) | type GenericOAuthProvider struct method GetName (line 78) | func (p *GenericOAuthProvider) GetName() string { method IsEnabled (line 82) | func (p *GenericOAuthProvider) IsEnabled() bool { method GetConfig (line 86) | func (p *GenericOAuthProvider) GetConfig() *model.CustomOAuthProvider { method ExchangeToken (line 90) | func (p *GenericOAuthProvider) ExchangeToken(ctx context.Context, code... method GetUserInfo (line 202) | func (p *GenericOAuthProvider) GetUserInfo(ctx context.Context, token ... method IsUserIDTaken (line 293) | func (p *GenericOAuthProvider) IsUserIDTaken(providerUserID string) bo... method FillUserByProviderID (line 297) | func (p *GenericOAuthProvider) FillUserByProviderID(user *model.User, ... method SetProviderUserID (line 306) | func (p *GenericOAuthProvider) SetProviderUserID(user *model.User, pro... method GetProviderPrefix (line 311) | func (p *GenericOAuthProvider) GetProviderPrefix() string { method GetProviderId (line 316) | func (p *GenericOAuthProvider) GetProviderId() int { method IsGenericProvider (line 329) | func (p *GenericOAuthProvider) IsGenericProvider() bool { type accessPolicy (line 39) | type accessPolicy struct type accessCondition (line 45) | type accessCondition struct type accessPolicyFailure (line 51) | type accessPolicyFailure struct function NewGenericOAuthProvider (line 74) | func NewGenericOAuthProvider(config *model.CustomOAuthProvider) *Generic... function normalizeAuthorizationTokenType (line 320) | func normalizeAuthorizationTokenType(tokenType string) string { function parseAccessPolicy (line 333) | func parseAccessPolicy(raw string) (*accessPolicy, error) { function validateAccessPolicy (line 344) | func validateAccessPolicy(policy *accessPolicy) error { function validateAccessCondition (line 377) | func validateAccessCondition(condition *accessCondition, index int) error { function evaluateAccessPolicy (line 401) | func evaluateAccessPolicy(body string, policy *accessPolicy) (bool, *acc... function evaluateAccessCondition (line 454) | func evaluateAccessCondition(body string, cond accessCondition) (bool, *... function normalizePolicyOp (line 496) | func normalizePolicyOp(op string) string { function gjsonResultToValue (line 500) | func gjsonResultToValue(result gjson.Result) any { function compareAny (line 534) | func compareAny(left any, right any) int { function toFloat (line 560) | func toFloat(v any) (float64, bool) { function valueInSlice (line 600) | func valueInSlice(current any, expected any) bool { function containsValue (line 610) | func containsValue(current any, expected any) bool { function renderAccessDeniedMessage (line 623) | func renderAccessDeniedMessage(template string, providerName string, bod... FILE: oauth/github.go function init (line 20) | func init() { type GitHubProvider (line 25) | type GitHubProvider struct method GetName (line 40) | func (p *GitHubProvider) GetName() string { method IsEnabled (line 44) | func (p *GitHubProvider) IsEnabled() bool { method ExchangeToken (line 48) | func (p *GitHubProvider) ExchangeToken(ctx context.Context, code strin... method GetUserInfo (line 105) | func (p *GitHubProvider) GetUserInfo(ctx context.Context, token *OAuth... method IsUserIDTaken (line 163) | func (p *GitHubProvider) IsUserIDTaken(providerUserID string) bool { method FillUserByProviderID (line 167) | func (p *GitHubProvider) FillUserByProviderID(user *model.User, provid... method SetProviderUserID (line 172) | func (p *GitHubProvider) SetProviderUserID(user *model.User, providerU... method GetProviderPrefix (line 176) | func (p *GitHubProvider) GetProviderPrefix() string { type gitHubOAuthResponse (line 27) | type gitHubOAuthResponse struct type gitHubUser (line 33) | type gitHubUser struct FILE: oauth/linuxdo.go function init (line 21) | func init() { type LinuxDOProvider (line 26) | type LinuxDOProvider struct method GetName (line 37) | func (p *LinuxDOProvider) GetName() string { method IsEnabled (line 41) | func (p *LinuxDOProvider) IsEnabled() bool { method ExchangeToken (line 45) | func (p *LinuxDOProvider) ExchangeToken(ctx context.Context, code stri... method GetUserInfo (line 110) | func (p *LinuxDOProvider) GetUserInfo(ctx context.Context, token *OAut... method IsUserIDTaken (line 170) | func (p *LinuxDOProvider) IsUserIDTaken(providerUserID string) bool { method FillUserByProviderID (line 174) | func (p *LinuxDOProvider) FillUserByProviderID(user *model.User, provi... method SetProviderUserID (line 179) | func (p *LinuxDOProvider) SetProviderUserID(user *model.User, provider... method GetProviderPrefix (line 183) | func (p *LinuxDOProvider) GetProviderPrefix() string { type linuxdoUser (line 28) | type linuxdoUser struct type TrustLevelError (line 188) | type TrustLevelError struct method Error (line 193) | func (e *TrustLevelError) Error() string { FILE: oauth/oidc.go function init (line 19) | func init() { type OIDCProvider (line 24) | type OIDCProvider struct method GetName (line 43) | func (p *OIDCProvider) GetName() string { method IsEnabled (line 47) | func (p *OIDCProvider) IsEnabled() bool { method ExchangeToken (line 51) | func (p *OIDCProvider) ExchangeToken(ctx context.Context, code string,... method GetUserInfo (line 112) | func (p *OIDCProvider) GetUserInfo(ctx context.Context, token *OAuthTo... method IsUserIDTaken (line 162) | func (p *OIDCProvider) IsUserIDTaken(providerUserID string) bool { method FillUserByProviderID (line 166) | func (p *OIDCProvider) FillUserByProviderID(user *model.User, provider... method SetProviderUserID (line 171) | func (p *OIDCProvider) SetProviderUserID(user *model.User, providerUse... method GetProviderPrefix (line 175) | func (p *OIDCProvider) GetProviderPrefix() string { type oidcOAuthResponse (line 26) | type oidcOAuthResponse struct type oidcUser (line 35) | type oidcUser struct FILE: oauth/provider.go type Provider (line 11) | type Provider interface FILE: oauth/registry.go function Register (line 19) | func Register(name string, provider Provider) { function RegisterCustom (line 26) | func RegisterCustom(name string, provider Provider) { function Unregister (line 34) | func Unregister(name string) { function GetProvider (line 42) | func GetProvider(name string) Provider { function GetAllProviders (line 49) | func GetAllProviders() map[string]Provider { function GetEnabledCustomProviders (line 60) | func GetEnabledCustomProviders() []*GenericOAuthProvider { function IsProviderRegistered (line 75) | func IsProviderRegistered(name string) bool { function IsCustomProvider (line 83) | func IsCustomProvider(name string) bool { function LoadCustomProviders (line 90) | func LoadCustomProviders() error { function ReloadCustomProviders (line 118) | func ReloadCustomProviders() error { function RegisterOrUpdateCustomProvider (line 123) | func RegisterOrUpdateCustomProvider(config *model.CustomOAuthProvider) { function UnregisterCustomProvider (line 132) | func UnregisterCustomProvider(slug string) { FILE: oauth/types.go type OAuthToken (line 4) | type OAuthToken struct type OAuthUser (line 14) | type OAuthUser struct type OAuthError (line 28) | type OAuthError struct method Error (line 37) | func (e *OAuthError) Error() string { function NewOAuthError (line 45) | func NewOAuthError(msgKey string, params map[string]any) *OAuthError { function NewOAuthErrorWithRaw (line 53) | func NewOAuthErrorWithRaw(msgKey string, params map[string]any, rawError... type AccessDeniedError (line 62) | type AccessDeniedError struct method Error (line 66) | func (e *AccessDeniedError) Error() string { FILE: pkg/cachex/codec.go type ValueCodec (line 10) | type ValueCodec interface type IntCodec (line 15) | type IntCodec struct method Encode (line 17) | func (c IntCodec) Encode(v int) (string, error) { method Decode (line 21) | func (c IntCodec) Decode(s string) (int, error) { type StringCodec (line 29) | type StringCodec struct method Encode (line 31) | func (c StringCodec) Encode(v string) (string, error) { return v, nil } method Decode (line 32) | func (c StringCodec) Decode(s string) (string, error) { return s, nil } type JSONCodec (line 34) | type JSONCodec struct method Encode (line 36) | func (c JSONCodec[V]) Encode(v V) (string, error) { method Decode (line 44) | func (c JSONCodec[V]) Decode(s string) (V, error) { FILE: pkg/cachex/hybrid_cache.go constant defaultRedisOpTimeout (line 15) | defaultRedisOpTimeout = 2 * time.Second constant defaultRedisScanTimeout (line 16) | defaultRedisScanTimeout = 30 * time.Second constant defaultRedisDelTimeout (line 17) | defaultRedisDelTimeout = 10 * time.Second type HybridCacheConfig (line 20) | type HybridCacheConfig struct type HybridCache (line 33) | type HybridCache struct function NewHybridCache (line 45) | func NewHybridCache[V any](cfg HybridCacheConfig[V]) *HybridCache[V] { method FullKey (line 55) | func (c *HybridCache[V]) FullKey(key string) string { method redisOn (line 59) | func (c *HybridCache[V]) redisOn() bool { method memCache (line 69) | func (c *HybridCache[V]) memCache() *hot.HotCache[string, V] { method Get (line 80) | func (c *HybridCache[V]) Get(key string) (value V, found bool, err error) { method SetWithTTL (line 111) | func (c *HybridCache[V]) SetWithTTL(key string, v V, ttl time.Duration) ... method Keys (line 132) | func (c *HybridCache[V]) Keys() ([]string, error) { method scanKeys (line 139) | func (c *HybridCache[V]) scanKeys(match string) ([]string, error) { method Purge (line 159) | func (c *HybridCache[V]) Purge() error { method DeleteByPrefix (line 176) | func (c *HybridCache[V]) DeleteByPrefix(prefix string) (int, error) { method DeleteMany (line 231) | func (c *HybridCache[V]) DeleteMany(keys []string) (map[string]bool, err... method Capacity (line 273) | func (c *HybridCache[V]) Capacity() (mainCacheCapacity int, missingCache... method Algorithm (line 280) | func (c *HybridCache[V]) Algorithm() (mainCacheAlgorithm string, missing... FILE: pkg/cachex/namespace.go type Namespace (line 6) | type Namespace method prefix (line 8) | func (n Namespace) prefix() string { method FullKey (line 17) | func (n Namespace) FullKey(key string) string { method MatchPattern (line 32) | func (n Namespace) MatchPattern() string { FILE: pkg/ionet/client.go constant DefaultEnterpriseBaseURL (line 14) | DefaultEnterpriseBaseURL = "https://api.io.solutions/enterprise/v1/io-cl... constant DefaultBaseURL (line 15) | DefaultBaseURL = "https://api.io.solutions/v1/io-cloud/caas" constant DefaultTimeout (line 16) | DefaultTimeout = 30 * time.Second type DefaultHTTPClient (line 20) | type DefaultHTTPClient struct method Do (line 34) | func (c *DefaultHTTPClient) Do(req *HTTPRequest) (*HTTPResponse, error) { function NewDefaultHTTPClient (line 25) | func NewDefaultHTTPClient(timeout time.Duration) *DefaultHTTPClient { function NewEnterpriseClient (line 74) | func NewEnterpriseClient(apiKey string) *Client { function NewClient (line 79) | func NewClient(apiKey string) *Client { function NewClientWithConfig (line 84) | func NewClientWithConfig(apiKey, baseURL string, httpClient HTTPClient) ... method makeRequest (line 99) | func (c *Client) makeRequest(method, endpoint string, body interface{}) ... function buildQueryParams (line 161) | func buildQueryParams(params map[string]interface{}) string { FILE: pkg/ionet/container.go method ListContainers (line 13) | func (c *Client) ListContainers(deploymentID string) (*ContainerList, er... method GetContainerDetails (line 34) | func (c *Client) GetContainerDetails(deploymentID, containerID string) (... method GetContainerJobs (line 59) | func (c *Client) GetContainerJobs(deploymentID, containerID string) (*Co... function buildLogEndpoint (line 83) | func buildLogEndpoint(deploymentID, containerID string, opts *GetLogsOpt... method GetContainerLogs (line 125) | func (c *Client) GetContainerLogs(deploymentID, containerID string, opts... method GetContainerLogsRaw (line 152) | func (c *Client) GetContainerLogsRaw(deploymentID, containerID string, o... method StreamContainerLogs (line 168) | func (c *Client) StreamContainerLogs(deploymentID, containerID string, o... method RestartContainer (line 232) | func (c *Client) RestartContainer(deploymentID, containerID string) error { method StopContainer (line 251) | func (c *Client) StopContainer(deploymentID, containerID string) error { method ExecuteInContainer (line 270) | func (c *Client) ExecuteInContainer(deploymentID, containerID string, co... FILE: pkg/ionet/deployment.go method DeployContainer (line 12) | func (c *Client) DeployContainer(req *DeploymentRequest) (*DeploymentRes... method ListDeployments (line 56) | func (c *Client) ListDeployments(opts *ListDeploymentsOptions) (*Deploym... method GetDeployment (line 90) | func (c *Client) GetDeployment(deploymentID string) (*DeploymentDetail, ... method UpdateDeployment (line 111) | func (c *Client) UpdateDeployment(deploymentID string, req *UpdateDeploy... method ExtendDeployment (line 137) | func (c *Client) ExtendDeployment(deploymentID string, req *ExtendDurati... method DeleteDeployment (line 164) | func (c *Client) DeleteDeployment(deploymentID string) (*UpdateDeploymen... method GetPriceEstimation (line 187) | func (c *Client) GetPriceEstimation(req *PriceEstimationRequest) (*Price... method CheckClusterNameAvailability (line 327) | func (c *Client) CheckClusterNameAvailability(clusterName string) (bool,... method UpdateClusterName (line 352) | func (c *Client) UpdateClusterName(clusterID string, req *UpdateClusterN... FILE: pkg/ionet/hardware.go method GetAvailableReplicas (line 12) | func (c *Client) GetAvailableReplicas(hardwareID int, gpuCount int) (*Av... method GetMaxGPUsPerContainer (line 59) | func (c *Client) GetMaxGPUsPerContainer() (*MaxGPUResponse, error) { method ListHardwareTypes (line 74) | func (c *Client) ListHardwareTypes() ([]HardwareType, int, error) { method ListLocations (line 113) | func (c *Client) ListLocations() (*LocationsResponse, error) { method GetHardwareType (line 139) | func (c *Client) GetHardwareType(hardwareID int) (*HardwareType, error) { method GetLocation (line 161) | func (c *Client) GetLocation(locationID int) (*Location, error) { method GetLocationAvailability (line 183) | func (c *Client) GetLocationAvailability(locationID int) (*LocationAvail... FILE: pkg/ionet/jsonutil.go function decodeWithFlexibleTimes (line 13) | func decodeWithFlexibleTimes(data []byte, target interface{}) error { function decodeData (line 28) | func decodeData[T any](data []byte, target *T) error { function decodeDataWithFlexibleTimes (line 39) | func decodeDataWithFlexibleTimes[T any](data []byte, target *T) error { function normalizeTimeValues (line 50) | func normalizeTimeValues(value interface{}) interface{} { function normalizeTimeString (line 70) | func normalizeTimeString(input string) (string, bool) { FILE: pkg/ionet/types.go type Client (line 8) | type Client struct type HTTPClient (line 15) | type HTTPClient interface type HTTPRequest (line 20) | type HTTPRequest struct type HTTPResponse (line 28) | type HTTPResponse struct type DeploymentRequest (line 35) | type DeploymentRequest struct type ContainerConfig (line 46) | type ContainerConfig struct type RegistryConfig (line 56) | type RegistryConfig struct type DeploymentResponse (line 63) | type DeploymentResponse struct type DeploymentDetail (line 69) | type DeploymentDetail struct type DeploymentLocation (line 90) | type DeploymentLocation struct type DeploymentContainerConfig (line 97) | type DeploymentContainerConfig struct type Container (line 105) | type Container struct type ContainerEvent (line 119) | type ContainerEvent struct type ContainerList (line 125) | type ContainerList struct type Deployment (line 131) | type Deployment struct type DeploymentList (line 149) | type DeploymentList struct type AvailableReplica (line 156) | type AvailableReplica struct type AvailableReplicasResponse (line 166) | type AvailableReplicasResponse struct type MaxGPUResponse (line 171) | type MaxGPUResponse struct type MaxGPUInfo (line 177) | type MaxGPUInfo struct type PriceEstimationRequest (line 186) | type PriceEstimationRequest struct type PriceEstimationResponse (line 199) | type PriceEstimationResponse struct type PriceBreakdown (line 207) | type PriceBreakdown struct type ContainerLogs (line 216) | type ContainerLogs struct type LogEntry (line 224) | type LogEntry struct type UpdateDeploymentRequest (line 232) | type UpdateDeploymentRequest struct type ExtendDurationRequest (line 245) | type ExtendDurationRequest struct type UpdateDeploymentResponse (line 250) | type UpdateDeploymentResponse struct type UpdateClusterNameRequest (line 256) | type UpdateClusterNameRequest struct type UpdateClusterNameResponse (line 261) | type UpdateClusterNameResponse struct type APIError (line 267) | type APIError struct method Error (line 274) | func (e *APIError) Error() string { type ListDeploymentsOptions (line 282) | type ListDeploymentsOptions struct type GetLogsOptions (line 292) | type GetLogsOptions struct type HardwareType (line 303) | type HardwareType struct type Location (line 320) | type Location struct type LocationsResponse (line 333) | type LocationsResponse struct type LocationAvailability (line 339) | type LocationAvailability struct type HardwareAvailability (line 348) | type HardwareAvailability struct FILE: relay/audio_handler.go function AudioHelper (line 18) | func AudioHelper(c *gin.Context, info *relaycommon.RelayInfo) (newAPIErr... FILE: relay/channel/adapter.go type Adaptor (line 15) | type Adaptor interface type TaskAdaptor (line 34) | type TaskAdaptor interface type OpenAIVideoConverter (line 81) | type OpenAIVideoConverter interface FILE: relay/channel/ali/adaptor.go type Adaptor (line 23) | type Adaptor struct method ConvertGeminiRequest (line 49) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 54) | func (a *Adaptor) ConvertClaudeRequest(c *gin.Context, info *relaycomm... method Init (line 69) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 72) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 113) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 138) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertImageRequest (line 161) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method ConvertRerankRequest (line 201) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 205) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertAudioRequest (line 209) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertOpenAIResponsesRequest (line 214) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 218) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 222) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 248) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 252) | func (a *Adaptor) GetChannelName() string { function supportsAliAnthropicMessages (line 34) | func supportsAliAnthropicMessages(modelName string) bool { function isSyncImageModel (line 45) | func isSyncImageModel(modelName string) bool { FILE: relay/channel/ali/dto.go type AliMessage (line 12) | type AliMessage struct type AliMediaContent (line 17) | type AliMediaContent struct type AliInput (line 22) | type AliInput struct type AliParameters (line 28) | type AliParameters struct type AliChatRequest (line 36) | type AliChatRequest struct type AliEmbeddingRequest (line 42) | type AliEmbeddingRequest struct type AliEmbedding (line 52) | type AliEmbedding struct type AliEmbeddingResponse (line 57) | type AliEmbeddingResponse struct type AliError (line 65) | type AliError struct type AliUsage (line 71) | type AliUsage struct type TaskResult (line 78) | type TaskResult struct type AliOutput (line 85) | type AliOutput struct method ChoicesToOpenAIImageDate (line 103) | func (o *AliOutput) ChoicesToOpenAIImageDate(c *gin.Context, responseF... method ResultToOpenAIImageDate (line 136) | func (o *AliOutput) ResultToOpenAIImageDate(c *gin.Context, responseFo... type AliResponse (line 160) | type AliResponse struct type AliImageRequest (line 166) | type AliImageRequest struct type AliImageParameters (line 173) | type AliImageParameters struct method PromptExtendValue (line 182) | func (p *AliImageParameters) PromptExtendValue() bool { type AliImageInput (line 189) | type AliImageInput struct type WanImageInput (line 195) | type WanImageInput struct type WanImageParameters (line 201) | type WanImageParameters struct type AliRerankParameters (line 208) | type AliRerankParameters struct type AliRerankInput (line 213) | type AliRerankInput struct type AliRerankRequest (line 218) | type AliRerankRequest struct type AliRerankResponse (line 224) | type AliRerankResponse struct FILE: relay/channel/ali/image.go function oaiImage2AliImageRequest (line 24) | func oaiImage2AliImageRequest(info *relaycommon.RelayInfo, request dto.I... function getImageBase64sFromForm (line 88) | func getImageBase64sFromForm(c *gin.Context, fieldName string) ([]string... function oaiFormEdit2AliImageEdit (line 156) | func oaiFormEdit2AliImageEdit(c *gin.Context, info *relaycommon.RelayInf... function updateTask (line 189) | func updateTask(info *relaycommon.RelayInfo, taskID string) (*AliRespons... function asyncTaskWait (line 221) | func asyncTaskWait(c *gin.Context, info *relaycommon.RelayInfo, taskID s... function responseAli2OpenAIImage (line 265) | func responseAli2OpenAIImage(c *gin.Context, response *AliResponse, orig... function aliImageHandler (line 280) | func aliImageHandler(a *Adaptor, c *gin.Context, resp *http.Response, in... FILE: relay/channel/ali/image_wan.go function oaiFormEdit2WanxImageEdit (line 15) | func oaiFormEdit2WanxImageEdit(c *gin.Context, info *relaycommon.RelayIn... function isOldWanModel (line 42) | func isOldWanModel(modelName string) bool { function isWanModel (line 46) | func isWanModel(modelName string) bool { FILE: relay/channel/ali/rerank.go function ConvertRerankRequest (line 16) | func ConvertRerankRequest(request dto.RerankRequest) *AliRerankRequest { function RerankHandler (line 35) | func RerankHandler(c *gin.Context, resp *http.Response, info *relaycommo... FILE: relay/channel/ali/text.go constant EnableSearchModelSuffix (line 10) | EnableSearchModelSuffix = "-internet" function requestOpenAI2Ali (line 12) | func requestOpenAI2Ali(request dto.GeneralOpenAIRequest) *dto.GeneralOpe... FILE: relay/channel/api_request.go function SetupApiRequestHeader (line 28) | func SetupApiRequestHeader(info *common.RelayInfo, c *gin.Context, req *... constant clientHeaderPlaceholderPrefix (line 42) | clientHeaderPlaceholderPrefix = "{client_header:" constant headerPassthroughAllKey (line 45) | headerPassthroughAllKey = "*" constant headerPassthroughRegexPrefix (line 46) | headerPassthroughRegexPrefix = "re:" constant headerPassthroughRegexPrefixV2 (line 47) | headerPassthroughRegexPrefixV2 = "regex:" function getHeaderPassthroughRegex (line 81) | func getHeaderPassthroughRegex(pattern string) (*regexp.Regexp, error) { function IsHeaderPassthroughRuleKey (line 103) | func IsHeaderPassthroughRuleKey(key string) bool { function isHeaderPassthroughRuleKey (line 106) | func isHeaderPassthroughRuleKey(key string) bool { function shouldSkipPassthroughHeader (line 118) | func shouldSkipPassthroughHeader(name string) bool { function applyHeaderOverridePlaceholders (line 130) | func applyHeaderOverridePlaceholders(template string, c *gin.Context, ap... function processHeaderOverride (line 173) | func processHeaderOverride(info *common.RelayInfo, c *gin.Context) (map[... function ResolveHeaderOverride (line 273) | func ResolveHeaderOverride(info *common.RelayInfo, c *gin.Context) (map[... function applyHeaderOverrideToRequest (line 277) | func applyHeaderOverrideToRequest(req *http.Request, headerOverride map[... function DoApiRequest (line 290) | func DoApiRequest(a Adaptor, c *gin.Context, info *common.RelayInfo, req... function DoFormRequest (line 321) | func DoFormRequest(a Adaptor, c *gin.Context, info *common.RelayInfo, re... function DoWssRequest (line 354) | func DoWssRequest(a Adaptor, c *gin.Context, info *common.RelayInfo, req... function startPingKeepAlive (line 384) | func startPingKeepAlive(c *gin.Context, pingInterval time.Duration) cont... function sendPingData (line 452) | func sendPingData(c *gin.Context, mutex *sync.Mutex) error { function DoRequest (line 483) | func DoRequest(c *gin.Context, req *http.Request, info *common.RelayInfo... function doRequest (line 486) | func doRequest(c *gin.Context, req *http.Request, info *common.RelayInfo... function DoTaskApiRequest (line 532) | func DoTaskApiRequest(a TaskAdaptor, c *gin.Context, info *common.RelayI... FILE: relay/channel/api_request_test.go function TestProcessHeaderOverride_ChannelTestSkipsPassthroughRules (line 13) | func TestProcessHeaderOverride_ChannelTestSkipsPassthroughRules(t *testi... function TestProcessHeaderOverride_ChannelTestSkipsClientHeaderPlaceholder (line 36) | func TestProcessHeaderOverride_ChannelTestSkipsClientHeaderPlaceholder(t... function TestProcessHeaderOverride_NonTestKeepsClientHeaderPlaceholder (line 60) | func TestProcessHeaderOverride_NonTestKeepsClientHeaderPlaceholder(t *te... function TestProcessHeaderOverride_RuntimeOverrideIsFinalHeaderMap (line 83) | func TestProcessHeaderOverride_RuntimeOverrideIsFinalHeaderMap(t *testin... function TestProcessHeaderOverride_PassthroughSkipsAcceptEncoding (line 114) | func TestProcessHeaderOverride_PassthroughSkipsAcceptEncoding(t *testing... function TestProcessHeaderOverride_PassHeadersTemplateSetsRuntimeHeaders (line 141) | func TestProcessHeaderOverride_PassHeadersTemplateSetsRuntimeHeaders(t *... FILE: relay/channel/aws/adaptor.go type ClientMode (line 21) | type ClientMode constant ClientModeApiKey (line 24) | ClientModeApiKey ClientMode = iota + 1 constant ClientModeAKSK (line 25) | ClientModeAKSK type Adaptor (line 28) | type Adaptor struct method ConvertGeminiRequest (line 36) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 41) | func (a *Adaptor) ConvertClaudeRequest(c *gin.Context, info *relaycomm... method ConvertAudioRequest (line 78) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 83) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 88) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 91) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 106) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 114) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 134) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 138) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertOpenAIResponsesRequest (line 143) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 148) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 156) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 174) | func (a *Adaptor) GetModelList() (models []string) { method GetChannelName (line 182) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/aws/constants.go function isNovaModel (line 147) | func isNovaModel(modelId string) bool { FILE: relay/channel/aws/dto.go type AwsClaudeRequest (line 15) | type AwsClaudeRequest struct function formatRequest (line 33) | func formatRequest(requestBody io.Reader, requestHeader http.Header) (*A... type NovaMessage (line 59) | type NovaMessage struct type NovaContent (line 64) | type NovaContent struct type NovaRequest (line 68) | type NovaRequest struct type NovaInferenceConfig (line 74) | type NovaInferenceConfig struct function convertToNovaRequest (line 83) | func convertToNovaRequest(req *dto.GeneralOpenAIRequest) *NovaRequest { function parseStopSequences (line 123) | func parseStopSequences(stop any) []string { FILE: relay/channel/aws/relay-aws.go function getAwsErrorStatusCode (line 33) | func getAwsErrorStatusCode(err error) int { function newAwsInvokeContext (line 43) | func newAwsInvokeContext() (context.Context, context.CancelFunc) { function newAwsClient (line 50) | func newAwsClient(c *gin.Context, info *relaycommon.RelayInfo) (*bedrock... function doAwsClientRequest (line 91) | func doAwsClientRequest(c *gin.Context, info *relaycommon.RelayInfo, a *... function buildAwsRequestBody (line 174) | func buildAwsRequestBody(c *gin.Context, info *relaycommon.RelayInfo, aw... function getAwsRegionPrefix (line 195) | func getAwsRegionPrefix(awsRegionId string) string { function awsModelCanCrossRegion (line 204) | func awsModelCanCrossRegion(awsModelId, awsRegionPrefix string) bool { function awsModelCrossRegion (line 209) | func awsModelCrossRegion(awsModelId, awsRegionPrefix string) string { function getAwsModelID (line 217) | func getAwsModelID(requestModel string) string { function awsHandler (line 224) | func awsHandler(c *gin.Context, info *relaycommon.RelayInfo, a *Adaptor)... function awsStreamHandler (line 255) | func awsStreamHandler(c *gin.Context, info *relaycommon.RelayInfo, a *Ad... function handleNovaRequest (line 297) | func handleNovaRequest(c *gin.Context, info *relaycommon.RelayInfo, a *A... FILE: relay/channel/aws/relay_aws_test.go function TestDoAwsClientRequest_AppliesRuntimeHeaderOverrideToAnthropicBeta (line 16) | func TestDoAwsClientRequest_AppliesRuntimeHeaderOverrideToAnthropicBeta(... FILE: relay/channel/baidu/adaptor.go type Adaptor (line 19) | type Adaptor struct method ConvertGeminiRequest (line 22) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 27) | func (a *Adaptor) ConvertClaudeRequest(*gin.Context, *relaycommon.Rela... method ConvertAudioRequest (line 33) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 38) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 43) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 47) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 115) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 121) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 132) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 136) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertOpenAIResponsesRequest (line 141) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 146) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 150) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 164) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 168) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/baidu/dto.go type BaiduMessage (line 10) | type BaiduMessage struct type BaiduChatRequest (line 15) | type BaiduChatRequest struct type Error (line 28) | type Error struct type BaiduChatResponse (line 33) | type BaiduChatResponse struct type BaiduChatStreamResponse (line 44) | type BaiduChatStreamResponse struct type BaiduEmbeddingRequest (line 50) | type BaiduEmbeddingRequest struct type BaiduEmbeddingData (line 54) | type BaiduEmbeddingData struct type BaiduEmbeddingResponse (line 60) | type BaiduEmbeddingResponse struct type BaiduAccessToken (line 69) | type BaiduAccessToken struct type BaiduTokenResponse (line 77) | type BaiduTokenResponse struct FILE: relay/channel/baidu/relay-baidu.go function requestOpenAI2Baidu (line 29) | func requestOpenAI2Baidu(request dto.GeneralOpenAIRequest) *BaiduChatReq... function responseBaidu2OpenAI (line 59) | func responseBaidu2OpenAI(response *BaiduChatResponse) *dto.OpenAITextRe... function streamResponseBaidu2OpenAI (line 78) | func streamResponseBaidu2OpenAI(baiduResponse *BaiduChatStreamResponse) ... function embeddingRequestOpenAI2Baidu (line 94) | func embeddingRequestOpenAI2Baidu(request dto.EmbeddingRequest) *BaiduEm... function embeddingResponseBaidu2OpenAI (line 100) | func embeddingResponseBaidu2OpenAI(response *BaiduEmbeddingResponse) *dt... function baiduStreamHandler (line 117) | func baiduStreamHandler(c *gin.Context, info *relaycommon.RelayInfo, res... function baiduHandler (line 142) | func baiduHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *htt... function baiduEmbeddingHandler (line 167) | func baiduEmbeddingHandler(c *gin.Context, info *relaycommon.RelayInfo, ... function getBaiduAccessToken (line 192) | func getBaiduAccessToken(apiKey string) (string, error) { function getBaiduAccessTokenHelper (line 215) | func getBaiduAccessTokenHelper(apiKey string) (*BaiduAccessToken, error) { FILE: relay/channel/baidu_v2/adaptor.go type Adaptor (line 20) | type Adaptor struct method ConvertGeminiRequest (line 23) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 28) | func (a *Adaptor) ConvertClaudeRequest(c *gin.Context, info *relaycomm... method ConvertAudioRequest (line 33) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 38) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 43) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 46) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 63) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 78) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 100) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 104) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertOpenAIResponsesRequest (line 109) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 114) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 118) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 124) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 128) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/claude/adaptor.go type Adaptor (line 18) | type Adaptor struct method ConvertGeminiRequest (line 21) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 26) | func (a *Adaptor) ConvertClaudeRequest(c *gin.Context, info *relaycomm... method ConvertAudioRequest (line 30) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 35) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 40) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 43) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 60) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 72) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 79) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 83) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertOpenAIResponsesRequest (line 88) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 93) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 97) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 106) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 110) | func (a *Adaptor) GetChannelName() string { function CommonClaudeHeadersOperation (line 51) | func CommonClaudeHeadersOperation(c *gin.Context, req *http.Header, info... FILE: relay/channel/claude/message_delta_usage_patch_test.go function TestPatchClaudeMessageDeltaUsageDataPreserveUnknownFields (line 14) | func TestPatchClaudeMessageDeltaUsageDataPreserveUnknownFields(t *testin... function TestPatchClaudeMessageDeltaUsageDataZeroValueChecks (line 33) | func TestPatchClaudeMessageDeltaUsageDataZeroValueChecks(t *testing.T) { function TestShouldSkipClaudeMessageDeltaUsagePatch (line 48) | func TestShouldSkipClaudeMessageDeltaUsagePatch(t *testing.T) { function TestBuildMessageDeltaPatchUsage (line 66) | func TestBuildMessageDeltaPatchUsage(t *testing.T) { FILE: relay/channel/claude/relay-claude.go constant WebSearchMaxUsesLow (line 29) | WebSearchMaxUsesLow = 1 constant WebSearchMaxUsesMedium (line 30) | WebSearchMaxUsesMedium = 5 constant WebSearchMaxUsesHigh (line 31) | WebSearchMaxUsesHigh = 10 function stopReasonClaude2OpenAI (line 34) | func stopReasonClaude2OpenAI(reason string) string { function maybeMarkClaudeRefusal (line 38) | func maybeMarkClaudeRefusal(c *gin.Context, stopReason string) { function RequestOpenAI2ClaudeMessage (line 47) | func RequestOpenAI2ClaudeMessage(c *gin.Context, textRequest dto.General... function StreamResponseClaude2OpenAI (line 404) | func StreamResponseClaude2OpenAI(claudeResponse *dto.ClaudeResponse) *dt... function ResponseClaude2OpenAI (line 488) | func ResponseClaude2OpenAI(claudeResponse *dto.ClaudeResponse) *dto.Open... type ClaudeResponseInfo (line 549) | type ClaudeResponseInfo struct function buildMessageDeltaPatchUsage (line 558) | func buildMessageDeltaPatchUsage(claudeResponse *dto.ClaudeResponse, cla... function shouldSkipClaudeMessageDeltaUsagePatch (line 586) | func shouldSkipClaudeMessageDeltaUsagePatch(info *relaycommon.RelayInfo)... function patchClaudeMessageDeltaUsageData (line 596) | func patchClaudeMessageDeltaUsageData(data string, usage *dto.ClaudeUsag... function setMessageDeltaUsageInt (line 613) | func setMessageDeltaUsageInt(data string, path string, localValue int) s... function FormatClaudeResponseInfo (line 630) | func FormatClaudeResponseInfo(claudeResponse *dto.ClaudeResponse, oaiRes... function HandleStreamResponseData (line 700) | func HandleStreamResponseData(c *gin.Context, info *relaycommon.RelayInf... function HandleStreamFinalResponse (line 747) | func HandleStreamFinalResponse(c *gin.Context, info *relaycommon.RelayIn... function ClaudeStreamHandler (line 772) | func ClaudeStreamHandler(c *gin.Context, resp *http.Response, info *rela... function HandleClaudeResponseData (line 796) | func HandleClaudeResponseData(c *gin.Context, info *relaycommon.RelayInf... function ClaudeHandler (line 839) | func ClaudeHandler(c *gin.Context, resp *http.Response, info *relaycommo... function mapToolChoice (line 863) | func mapToolChoice(toolChoice any, parallelToolCalls *bool) *dto.ClaudeT... FILE: relay/channel/claude/relay_claude_test.go function TestFormatClaudeResponseInfo_MessageStart (line 10) | func TestFormatClaudeResponseInfo_MessageStart(t *testing.T) { function TestFormatClaudeResponseInfo_MessageDelta_FullUsage (line 49) | func TestFormatClaudeResponseInfo_MessageDelta_FullUsage(t *testing.T) { function TestFormatClaudeResponseInfo_MessageDelta_OnlyOutputTokens (line 91) | func TestFormatClaudeResponseInfo_MessageDelta_OnlyOutputTokens(t *testi... function TestFormatClaudeResponseInfo_NilClaudeInfo (line 147) | func TestFormatClaudeResponseInfo_NilClaudeInfo(t *testing.T) { function TestFormatClaudeResponseInfo_ContentBlockDelta (line 155) | func TestFormatClaudeResponseInfo_ContentBlockDelta(t *testing.T) { FILE: relay/channel/cloudflare/adaptor.go type Adaptor (line 20) | type Adaptor struct method ConvertGeminiRequest (line 23) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 28) | func (a *Adaptor) ConvertClaudeRequest(*gin.Context, *relaycommon.Rela... method Init (line 34) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 37) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 50) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 56) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertOpenAIResponsesRequest (line 68) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 72) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method ConvertRerankRequest (line 76) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 80) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertAudioRequest (line 84) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 101) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method DoResponse (line 106) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 130) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 134) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/cloudflare/dto.go type CfRequest (line 5) | type CfRequest struct type CfAudioResponse (line 15) | type CfAudioResponse struct type CfSTTResult (line 19) | type CfSTTResult struct FILE: relay/channel/cloudflare/relay_cloudflare.go function convertCf2CompletionsRequest (line 22) | func convertCf2CompletionsRequest(textRequest dto.GeneralOpenAIRequest) ... function cfStreamHandler (line 32) | func cfStreamHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *... function cfHandler (line 93) | func cfHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *http.R... function cfSTTHandler (line 122) | func cfSTTHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *htt... FILE: relay/channel/codex/adaptor.go type Adaptor (line 21) | type Adaptor struct method ConvertGeminiRequest (line 24) | func (a *Adaptor) ConvertGeminiRequest(c *gin.Context, info *relaycomm... method ConvertClaudeRequest (line 28) | func (a *Adaptor) ConvertClaudeRequest(*gin.Context, *relaycommon.Rela... method ConvertAudioRequest (line 32) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 36) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 40) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method ConvertOpenAIRequest (line 43) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 47) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 51) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertOpenAIResponsesRequest (line 55) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 110) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 114) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 129) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 133) | func (a *Adaptor) GetChannelName() string { method GetRequestURL (line 137) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 148) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... FILE: relay/channel/codex/constants.go constant ChannelName (line 17) | ChannelName = "codex" function withCompactModelSuffix (line 19) | func withCompactModelSuffix(models []string) []string { FILE: relay/channel/codex/oauth_key.go type OAuthKey (line 9) | type OAuthKey struct function ParseOAuthKey (line 21) | func ParseOAuthKey(raw string) (*OAuthKey, error) { FILE: relay/channel/cohere/adaptor.go type Adaptor (line 18) | type Adaptor struct method ConvertGeminiRequest (line 21) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 26) | func (a *Adaptor) ConvertClaudeRequest(*gin.Context, *relaycommon.Rela... method ConvertAudioRequest (line 32) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 37) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 42) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 45) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 53) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 59) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertOpenAIResponsesRequest (line 63) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 68) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method ConvertRerankRequest (line 72) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 76) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method DoResponse (line 81) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 94) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 98) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/cohere/dto.go type CohereRequest (line 5) | type CohereRequest struct type ChatHistory (line 14) | type ChatHistory struct type CohereResponse (line 19) | type CohereResponse struct type CohereResponseResult (line 27) | type CohereResponseResult struct type CohereRerankRequest (line 34) | type CohereRerankRequest struct type CohereRerankResponseResult (line 42) | type CohereRerankResponseResult struct type CohereMeta (line 47) | type CohereMeta struct type CohereBilledUnits (line 52) | type CohereBilledUnits struct type CohereTokens (line 57) | type CohereTokens struct FILE: relay/channel/cohere/relay-cohere.go function requestOpenAI2Cohere (line 22) | func requestOpenAI2Cohere(textRequest dto.GeneralOpenAIRequest) *CohereR... function requestConvertRerank2Cohere (line 58) | func requestConvertRerank2Cohere(rerankRequest dto.RerankRequest) *Coher... function stopReasonCohere2OpenAI (line 73) | func stopReasonCohere2OpenAI(reason string) string { function cohereStreamHandler (line 84) | func cohereStreamHandler(c *gin.Context, info *relaycommon.RelayInfo, re... function cohereHandler (line 175) | func cohereHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *ht... function cohereRerankHandler (line 217) | func cohereRerankHandler(c *gin.Context, resp *http.Response, info *rela... FILE: relay/channel/coze/adaptor.go type Adaptor (line 19) | type Adaptor struct method ConvertGeminiRequest (line 22) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *common.RelayInfo... method ConvertAudioRequest (line 28) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *common.Rel... method ConvertClaudeRequest (line 33) | func (a *Adaptor) ConvertClaudeRequest(c *gin.Context, info *common.Re... method ConvertEmbeddingRequest (line 38) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *common... method ConvertImageRequest (line 43) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *common.Rel... method ConvertOpenAIRequest (line 48) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *common.Re... method ConvertOpenAIResponsesRequest (line 56) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method ConvertRerankRequest (line 61) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method DoRequest (line 66) | func (a *Adaptor) DoRequest(c *gin.Context, info *common.RelayInfo, re... method DoResponse (line 105) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetChannelName (line 115) | func (a *Adaptor) GetChannelName() string { method GetModelList (line 120) | func (a *Adaptor) GetModelList() []string { method GetRequestURL (line 125) | func (a *Adaptor) GetRequestURL(info *common.RelayInfo) (string, error) { method Init (line 130) | func (a *Adaptor) Init(info *common.RelayInfo) { method SetupRequestHeader (line 135) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... FILE: relay/channel/coze/dto.go type CozeError (line 5) | type CozeError struct type CozeEnterMessage (line 10) | type CozeEnterMessage struct type CozeChatRequest (line 18) | type CozeChatRequest struct type CozeChatResponse (line 31) | type CozeChatResponse struct type CozeChatResponseData (line 37) | type CozeChatResponseData struct type CozeChatUsage (line 47) | type CozeChatUsage struct type CozeChatDetailResponse (line 53) | type CozeChatDetailResponse struct type CozeChatV3MessageDetail (line 60) | type CozeChatV3MessageDetail struct type CozeResponseDetail (line 76) | type CozeResponseDetail struct FILE: relay/channel/coze/relay-coze.go function convertCozeChatRequest (line 23) | func convertCozeChatRequest(c *gin.Context, request dto.GeneralOpenAIReq... function cozeChatHandler (line 49) | func cozeChatHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *... function cozeChatStreamHandler (line 100) | func cozeChatStreamHandler(c *gin.Context, info *relaycommon.RelayInfo, ... function handleCozeEvent (line 152) | func handleCozeEvent(c *gin.Context, event string, data string, response... function checkIfChatComplete (line 216) | func checkIfChatComplete(a *Adaptor, c *gin.Context, info *relaycommon.R... function getChatDetail (line 262) | func getChatDetail(a *Adaptor, c *gin.Context, info *relaycommon.RelayIn... function doRequest (line 281) | func doRequest(req *http.Request, info *relaycommon.RelayInfo) (*http.Re... FILE: relay/channel/deepseek/adaptor.go type Adaptor (line 20) | type Adaptor struct method ConvertGeminiRequest (line 23) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 28) | func (a *Adaptor) ConvertClaudeRequest(c *gin.Context, info *relaycomm... method ConvertAudioRequest (line 33) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 38) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 43) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 46) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 64) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 70) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 77) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 81) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertOpenAIResponsesRequest (line 86) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 91) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 95) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 106) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 110) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/dify/adaptor.go constant BotTypeChatFlow (line 18) | BotTypeChatFlow = 1 constant BotTypeAgent (line 19) | BotTypeAgent = 2 constant BotTypeWorkFlow (line 20) | BotTypeWorkFlow = 3 constant BotTypeCompletion (line 21) | BotTypeCompletion = 4 type Adaptor (line 24) | type Adaptor struct method ConvertGeminiRequest (line 28) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 33) | func (a *Adaptor) ConvertClaudeRequest(*gin.Context, *relaycommon.Rela... method ConvertAudioRequest (line 39) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 44) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 49) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 62) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 75) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 81) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 88) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 92) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertOpenAIResponsesRequest (line 97) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 102) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 106) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 115) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 119) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/dify/dto.go type DifyChatRequest (line 7) | type DifyChatRequest struct type DifyFile (line 16) | type DifyFile struct type DifyMetaData (line 23) | type DifyMetaData struct type DifyData (line 27) | type DifyData struct type DifyChatCompletionResponse (line 34) | type DifyChatCompletionResponse struct type DifyChunkChatCompletionResponse (line 41) | type DifyChunkChatCompletionResponse struct FILE: relay/channel/dify/relay-dify.go function uploadDifyFile (line 26) | func uploadDifyFile(c *gin.Context, info *relaycommon.RelayInfo, user st... function requestOpenAI2Dify (line 127) | func requestOpenAI2Dify(c *gin.Context, info *relaycommon.RelayInfo, req... function streamResponseDify2OpenAI (line 185) | func streamResponseDify2OpenAI(difyResponse DifyChunkChatCompletionRespo... function difyStreamHandler (line 221) | func difyStreamHandler(c *gin.Context, info *relaycommon.RelayInfo, resp... function difyHandler (line 262) | func difyHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *http... FILE: relay/channel/gemini/adaptor.go type Adaptor (line 23) | type Adaptor struct method ConvertGeminiRequest (line 26) | func (a *Adaptor) ConvertGeminiRequest(c *gin.Context, info *relaycomm... method ConvertClaudeRequest (line 46) | func (a *Adaptor) ConvertClaudeRequest(c *gin.Context, info *relaycomm... method ConvertAudioRequest (line 55) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 60) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 126) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 130) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 173) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 179) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 192) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 196) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertOpenAIResponsesRequest (line 240) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 245) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 249) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 281) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 285) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/gemini/relay-gemini-native.go function GeminiTextGenerationHandler (line 20) | func GeminiTextGenerationHandler(c *gin.Context, info *relaycommon.Relay... function NativeGeminiEmbeddingHandler (line 52) | func NativeGeminiEmbeddingHandler(c *gin.Context, resp *http.Response, i... function GeminiTextGenerationStreamHandler (line 85) | func GeminiTextGenerationStreamHandler(c *gin.Context, info *relaycommon... FILE: relay/channel/gemini/relay-gemini.go constant thoughtSignatureBypassValue (line 51) | thoughtSignatureBypassValue = "context_engineering_is_the_way_to_go" constant pro25MinBudget (line 55) | pro25MinBudget = 128 constant pro25MaxBudget (line 56) | pro25MaxBudget = 32768 constant flash25MaxBudget (line 57) | flash25MaxBudget = 24576 constant flash25LiteMinBudget (line 58) | flash25LiteMinBudget = 512 constant flash25LiteMaxBudget (line 59) | flash25LiteMaxBudget = 24576 function isNew25ProModel (line 62) | func isNew25ProModel(modelName string) bool { function is25FlashLiteModel (line 68) | func is25FlashLiteModel(modelName string) bool { function clampThinkingBudget (line 73) | func clampThinkingBudget(modelName string, budget int) int { function clampThinkingBudgetByEffort (line 106) | func clampThinkingBudgetByEffort(modelName string, effort string) int { function ThinkingAdaptor (line 132) | func ThinkingAdaptor(geminiRequest *dto.GeminiChatRequest, info *relayco... function CovertOpenAI2Gemini (line 199) | func CovertOpenAI2Gemini(c *gin.Context, textRequest dto.GeneralOpenAIRe... function parseStopSequences (line 680) | func parseStopSequences(stop any) []string { function hasFunctionCallContent (line 704) | func hasFunctionCallContent(call *dto.FunctionCall) bool { function getSupportedMimeTypesList (line 727) | func getSupportedMimeTypesList() []string { constant geminiFunctionSchemaMaxDepth (line 760) | geminiFunctionSchemaMaxDepth = 64 function cleanFunctionParameters (line 763) | func cleanFunctionParameters(params interface{}) interface{} { function cleanFunctionParametersWithDepth (line 767) | func cleanFunctionParametersWithDepth(params interface{}, depth int) int... function cleanFunctionParametersShallow (line 831) | func cleanFunctionParametersShallow(params interface{}) interface{} { function normalizeGeminiSchemaTypeAndNullable (line 854) | func normalizeGeminiSchemaTypeAndNullable(schema map[string]interface{}) { function removeAdditionalPropertiesWithDepth (line 916) | func removeAdditionalPropertiesWithDepth(schema interface{}, depth int) ... function unescapeString (line 957) | func unescapeString(s string) (string, error) { function unescapeMapOrSlice (line 1006) | func unescapeMapOrSlice(data interface{}) interface{} { function getResponseToolCall (line 1026) | func getResponseToolCall(item *dto.GeminiPart) *dto.ToolCallResponse { function buildUsageFromGeminiMetadata (line 1046) | func buildUsageFromGeminiMetadata(metadata dto.GeminiUsageMetadata, fall... function responseGeminiChat2OpenAI (line 1086) | func responseGeminiChat2OpenAI(c *gin.Context, response *dto.GeminiChatR... function streamResponseGeminiChat2OpenAI (line 1180) | func streamResponseGeminiChat2OpenAI(geminiResponse *dto.GeminiChatRespo... function handleStream (line 1274) | func handleStream(c *gin.Context, info *relaycommon.RelayInfo, resp *dto... function handleFinalStream (line 1286) | func handleFinalStream(c *gin.Context, info *relaycommon.RelayInfo, resp... function geminiStreamHandler (line 1295) | func geminiStreamHandler(c *gin.Context, info *relaycommon.RelayInfo, re... function GeminiChatStreamHandler (line 1350) | func GeminiChatStreamHandler(c *gin.Context, info *relaycommon.RelayInfo... function GeminiChatHandler (line 1440) | func GeminiChatHandler(c *gin.Context, info *relaycommon.RelayInfo, resp... function GeminiEmbeddingHandler (line 1517) | func GeminiEmbeddingHandler(c *gin.Context, info *relaycommon.RelayInfo,... function GeminiImageHandler (line 1562) | func GeminiImageHandler(c *gin.Context, info *relaycommon.RelayInfo, res... type GeminiModelsResponse (line 1616) | type GeminiModelsResponse struct function FetchGeminiModels (line 1621) | func FetchGeminiModels(baseURL, apiKey, proxyURL string) ([]string, erro... function convertToolChoiceToGeminiConfig (line 1700) | func convertToolChoiceToGeminiConfig(toolChoice any) *dto.ToolConfig { FILE: relay/channel/gemini/relay_gemini_usage_test.go function TestGeminiChatHandlerCompletionTokensExcludeToolUsePromptTokens (line 19) | func TestGeminiChatHandlerCompletionTokensExcludeToolUsePromptTokens(t *... function TestGeminiStreamHandlerCompletionTokensExcludeToolUsePromptTokens (line 70) | func TestGeminiStreamHandlerCompletionTokensExcludeToolUsePromptTokens(t... function TestGeminiTextGenerationHandlerPromptTokensIncludeToolUsePromptTokens (line 127) | func TestGeminiTextGenerationHandlerPromptTokensIncludeToolUsePromptToke... function TestGeminiChatHandlerUsesEstimatedPromptTokensWhenUsagePromptMissing (line 177) | func TestGeminiChatHandlerUsesEstimatedPromptTokensWhenUsagePromptMissin... function TestGeminiStreamHandlerUsesEstimatedPromptTokensWhenUsagePromptMissing (line 228) | func TestGeminiStreamHandlerUsesEstimatedPromptTokensWhenUsagePromptMiss... function TestGeminiTextGenerationHandlerUsesEstimatedPromptTokensWhenUsagePromptMissing (line 285) | func TestGeminiTextGenerationHandlerUsesEstimatedPromptTokensWhenUsagePr... FILE: relay/channel/jimeng/adaptor.go type Adaptor (line 20) | type Adaptor struct method ConvertGeminiRequest (line 23) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 28) | func (a *Adaptor) ConvertClaudeRequest(*gin.Context, *relaycommon.Rela... method Init (line 32) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 35) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 39) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, header *http.Head... method ConvertOpenAIRequest (line 43) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertImageRequest (line 72) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method ConvertRerankRequest (line 90) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 94) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertAudioRequest (line 98) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertOpenAIResponsesRequest (line 102) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 106) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 126) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 137) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 141) | func (a *Adaptor) GetChannelName() string { type LogoInfo (line 50) | type LogoInfo struct type imageRequestPayload (line 58) | type imageRequestPayload struct FILE: relay/channel/jimeng/constants.go constant ChannelName (line 4) | ChannelName = "jimeng" FILE: relay/channel/jimeng/image.go type ImageResponse (line 17) | type ImageResponse struct function responseJimeng2OpenAIImage (line 32) | func responseJimeng2OpenAIImage(_ *gin.Context, response *ImageResponse,... function jimengImageHandler (line 52) | func jimengImageHandler(c *gin.Context, resp *http.Response, info *relay... FILE: relay/channel/jimeng/sign.go constant HexPayloadHashKey (line 41) | HexPayloadHashKey = "HexPayloadHash" function SetPayloadHash (line 43) | func SetPayloadHash(c *gin.Context, req any) error { function getPayloadHash (line 54) | func getPayloadHash(c *gin.Context) string { function Sign (line 58) | func Sign(c *gin.Context, req *http.Request, apiKey string) error { function hmacSHA256 (line 173) | func hmacSHA256(key []byte, data []byte) []byte { FILE: relay/channel/jina/adaptor.go type Adaptor (line 20) | type Adaptor struct method ConvertGeminiRequest (line 23) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 28) | func (a *Adaptor) ConvertClaudeRequest(*gin.Context, *relaycommon.Rela... method ConvertAudioRequest (line 34) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 39) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 44) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 47) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 56) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 62) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertOpenAIResponsesRequest (line 66) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 71) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method ConvertRerankRequest (line 75) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 79) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method DoResponse (line 84) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 93) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 97) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/minimax/adaptor.go type Adaptor (line 23) | type Adaptor struct method ConvertGeminiRequest (line 26) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 30) | func (a *Adaptor) ConvertClaudeRequest(c *gin.Context, info *relaycomm... method ConvertAudioRequest (line 35) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 80) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 84) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 87) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 91) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 97) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 104) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 108) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertOpenAIResponsesRequest (line 112) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 116) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 120) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 135) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 139) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/minimax/relay-minimax.go function GetRequestURL (line 12) | func GetRequestURL(info *relaycommon.RelayInfo) (string, error) { FILE: relay/channel/minimax/tts.go type MiniMaxTTSRequest (line 18) | type MiniMaxTTSRequest struct type StreamOptions (line 34) | type StreamOptions struct type VoiceSetting (line 38) | type VoiceSetting struct type PronunciationDict (line 48) | type PronunciationDict struct type AudioSetting (line 52) | type AudioSetting struct type TimbreWeight (line 60) | type TimbreWeight struct type VoiceModify (line 65) | type VoiceModify struct type MiniMaxTTSResponse (line 72) | type MiniMaxTTSResponse struct type MiniMaxTTSData (line 79) | type MiniMaxTTSData struct type MiniMaxExtraInfo (line 84) | type MiniMaxExtraInfo struct type MiniMaxBaseResp (line 88) | type MiniMaxBaseResp struct function getContentTypeByFormat (line 93) | func getContentTypeByFormat(format string) string { function handleTTSResponse (line 107) | func handleTTSResponse(c *gin.Context, resp *http.Response, info *relayc... function handleChatCompletionResponse (line 174) | func handleChatCompletionResponse(c *gin.Context, resp *http.Response, i... FILE: relay/channel/mistral/adaptor.go type Adaptor (line 17) | type Adaptor struct method ConvertGeminiRequest (line 20) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 25) | func (a *Adaptor) ConvertClaudeRequest(*gin.Context, *relaycommon.Rela... method ConvertAudioRequest (line 31) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 36) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 41) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 44) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 48) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 54) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 61) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 65) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertOpenAIResponsesRequest (line 70) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 75) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 79) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 88) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 92) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/mistral/text.go function requestOpenAI2Mistral (line 12) | func requestOpenAI2Mistral(request *dto.GeneralOpenAIRequest) *dto.Gener... FILE: relay/channel/mokaai/adaptor.go type Adaptor (line 19) | type Adaptor struct method ConvertGeminiRequest (line 22) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 27) | func (a *Adaptor) ConvertClaudeRequest(*gin.Context, *relaycommon.Rela... method ConvertAudioRequest (line 33) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 38) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method ConvertEmbeddingRequest (line 43) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method Init (line 48) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 52) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 62) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 68) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 81) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertOpenAIResponsesRequest (line 85) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 90) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 94) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 106) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 110) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/mokaai/relay-mokaai.go function embeddingRequestOpenAI2Moka (line 17) | func embeddingRequestOpenAI2Moka(request dto.GeneralOpenAIRequest) *dto.... function embeddingResponseMoka2OpenAI (line 38) | func embeddingResponseMoka2OpenAI(response *dto.EmbeddingResponse) *dto.... function mokaEmbeddingHandler (line 55) | func mokaEmbeddingHandler(c *gin.Context, info *relaycommon.RelayInfo, r... FILE: relay/channel/moonshot/adaptor.go type Adaptor (line 21) | type Adaptor struct method ConvertGeminiRequest (line 24) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 29) | func (a *Adaptor) ConvertClaudeRequest(c *gin.Context, info *relaycomm... method ConvertAudioRequest (line 34) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 39) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 44) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 47) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 75) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 81) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertOpenAIResponsesRequest (line 85) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 90) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method ConvertRerankRequest (line 94) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 98) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method DoResponse (line 102) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 113) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 117) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/ollama/adaptor.go type Adaptor (line 19) | type Adaptor struct method ConvertGeminiRequest (line 22) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 26) | func (a *Adaptor) ConvertClaudeRequest(c *gin.Context, info *relaycomm... method ConvertAudioRequest (line 39) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 43) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 47) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 50) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 60) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 66) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 77) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 81) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertOpenAIResponsesRequest (line 85) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 89) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 93) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 105) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 109) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/ollama/dto.go type OllamaChatMessage (line 7) | type OllamaChatMessage struct type OllamaToolFunction (line 16) | type OllamaToolFunction struct type OllamaTool (line 22) | type OllamaTool struct type OllamaToolCall (line 27) | type OllamaToolCall struct type OllamaChatRequest (line 34) | type OllamaChatRequest struct type OllamaGenerateRequest (line 45) | type OllamaGenerateRequest struct type OllamaEmbeddingRequest (line 57) | type OllamaEmbeddingRequest struct type OllamaEmbeddingResponse (line 64) | type OllamaEmbeddingResponse struct type OllamaTagsResponse (line 71) | type OllamaTagsResponse struct type OllamaModel (line 75) | type OllamaModel struct type OllamaModelDetail (line 83) | type OllamaModelDetail struct type OllamaPullRequest (line 92) | type OllamaPullRequest struct type OllamaPullResponse (line 97) | type OllamaPullResponse struct type OllamaDeleteRequest (line 104) | type OllamaDeleteRequest struct FILE: relay/channel/ollama/relay-ollama.go function openAIChatToOllamaChat (line 22) | func openAIChatToOllamaChat(c *gin.Context, r *dto.GeneralOpenAIRequest)... function openAIToGenerate (line 156) | func openAIToGenerate(c *gin.Context, r *dto.GeneralOpenAIRequest) (*Oll... function requestOpenAI2Embeddings (line 236) | func requestOpenAI2Embeddings(r dto.EmbeddingRequest) *OllamaEmbeddingRe... function ollamaEmbeddingHandler (line 264) | func ollamaEmbeddingHandler(c *gin.Context, info *relaycommon.RelayInfo,... function FetchOllamaModels (line 288) | func FetchOllamaModels(baseURL, apiKey string) ([]OllamaModel, error) { function PullOllamaModel (line 328) | func PullOllamaModel(baseURL, apiKey, modelName string) error { function PullOllamaModelStream (line 369) | func PullOllamaModelStream(baseURL, apiKey, modelName string, progressCa... function DeleteOllamaModel (line 446) | func DeleteOllamaModel(baseURL, apiKey, modelName string) error { function FetchOllamaVersion (line 483) | func FetchOllamaVersion(baseURL, apiKey string) (string, error) { FILE: relay/channel/ollama/stream.go type ollamaChatStreamChunk (line 23) | type ollamaChatStreamChunk struct function toUnix (line 50) | func toUnix(ts string) int64 { function ollamaStreamHandler (line 66) | func ollamaStreamHandler(c *gin.Context, info *relaycommon.RelayInfo, re... function ollamaChatHandler (line 184) | func ollamaChatHandler(c *gin.Context, info *relaycommon.RelayInfo, resp... function contentPtr (line 295) | func contentPtr(s string) *string { FILE: relay/channel/openai/adaptor.go type Adaptor (line 37) | type Adaptor struct method ConvertGeminiRequest (line 57) | func (a *Adaptor) ConvertGeminiRequest(c *gin.Context, info *relaycomm... method ConvertClaudeRequest (line 66) | func (a *Adaptor) ConvertClaudeRequest(c *gin.Context, info *relaycomm... method Init (line 98) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 111) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 184) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, header *http.Head... method ConvertOpenAIRequest (line 238) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 361) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 365) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertAudioRequest (line 369) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 435) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method ConvertOpenAIResponsesRequest (line 583) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 602) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 614) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 646) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 663) | func (a *Adaptor) GetChannelName() string { function parseReasoningEffortFromModelSuffix (line 45) | func parseReasoningEffortFromModelSuffix(model string) (string, string) { function detectImageMimeType (line 564) | func detectImageMimeType(filename string) string { FILE: relay/channel/openai/audio.go function OpenaiTTSHandler (line 21) | func OpenaiTTSHandler(c *gin.Context, resp *http.Response, info *relayco... function OpenaiSTTHandler (line 114) | func OpenaiSTTHandler(c *gin.Context, resp *http.Response, info *relayco... FILE: relay/channel/openai/chat_via_responses.go function responsesStreamIndexKey (line 21) | func responsesStreamIndexKey(itemID string, idx *int) string { function stringDeltaFromPrefix (line 31) | func stringDeltaFromPrefix(prev string, next string) string { function OaiResponsesToChatHandler (line 41) | func OaiResponsesToChatHandler(c *gin.Context, info *relaycommon.RelayIn... function OaiResponsesToChatStreamHandler (line 93) | func OaiResponsesToChatStreamHandler(c *gin.Context, info *relaycommon.R... FILE: relay/channel/openai/helper.go function HandleStreamFormat (line 22) | func HandleStreamFormat(c *gin.Context, info *relaycommon.RelayInfo, dat... function handleClaudeFormat (line 36) | func handleClaudeFormat(c *gin.Context, data string, info *relaycommon.R... function handleGeminiFormat (line 52) | func handleGeminiFormat(c *gin.Context, data string, info *relaycommon.R... function ProcessStreamResponse (line 78) | func ProcessStreamResponse(streamResponse dto.ChatCompletionsStreamRespo... function processTokens (line 95) | func processTokens(relayMode int, streamItems []string, responseTextBuil... function processChatCompletions (line 107) | func processChatCompletions(streamResp string, streamItems []string, res... function processCompletions (line 143) | func processCompletions(streamResp string, streamItems []string, respons... function handleLastResponse (line 169) | func handleLastResponse(lastStreamData string, responseId *string, creat... function HandleFinalResponse (line 197) | func HandleFinalResponse(c *gin.Context, info *relaycommon.RelayInfo, la... function sendResponsesStreamData (line 256) | func sendResponsesStreamData(c *gin.Context, streamResponse dto.Response... FILE: relay/channel/openai/relay-openai.go function sendStreamData (line 25) | func sendStreamData(c *gin.Context, info *relaycommon.RelayInfo, data st... function OaiStreamHandler (line 106) | func OaiStreamHandler(c *gin.Context, info *relaycommon.RelayInfo, resp ... function OpenaiHandler (line 196) | func OpenaiHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *ht... function streamTTSResponse (line 303) | func streamTTSResponse(c *gin.Context, resp *http.Response) { function OpenaiRealtimeHandler (line 336) | func OpenaiRealtimeHandler(c *gin.Context, info *relaycommon.RelayInfo) ... function preConsumeUsage (line 543) | func preConsumeUsage(ctx *gin.Context, info *relaycommon.RelayInfo, usag... function OpenaiHandlerWithUsage (line 561) | func OpenaiHandlerWithUsage(c *gin.Context, info *relaycommon.RelayInfo,... function applyUsagePostProcessing (line 596) | func applyUsagePostProcessing(info *relaycommon.RelayInfo, usage *dto.Us... function extractCachedTokensFromBody (line 633) | func extractCachedTokensFromBody(body []byte) (int, bool) { function extractMoonshotCachedTokensFromBody (line 666) | func extractMoonshotCachedTokensFromBody(body []byte) (int, bool) { FILE: relay/channel/openai/relay_responses.go function OaiResponsesHandler (line 20) | func OaiResponsesHandler(c *gin.Context, info *relaycommon.RelayInfo, re... function OaiResponsesStreamHandler (line 71) | func OaiResponsesStreamHandler(c *gin.Context, info *relaycommon.RelayIn... FILE: relay/channel/openai/relay_responses_compact.go function OaiResponsesCompactionHandler (line 15) | func OaiResponsesCompactionHandler(c *gin.Context, resp *http.Response) ... FILE: relay/channel/openrouter/dto.go type RequestReasoning (line 5) | type RequestReasoning struct type OpenRouterEnterpriseResponse (line 14) | type OpenRouterEnterpriseResponse struct FILE: relay/channel/palm/adaptor.go type Adaptor (line 18) | type Adaptor struct method ConvertGeminiRequest (line 21) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 26) | func (a *Adaptor) ConvertClaudeRequest(*gin.Context, *relaycommon.Rela... method ConvertAudioRequest (line 32) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 37) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 42) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 45) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 49) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 55) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 62) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 66) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertOpenAIResponsesRequest (line 71) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 76) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 80) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 91) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 95) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/palm/dto.go type PaLMChatMessage (line 5) | type PaLMChatMessage struct type PaLMFilter (line 10) | type PaLMFilter struct type PaLMPrompt (line 15) | type PaLMPrompt struct type PaLMChatRequest (line 19) | type PaLMChatRequest struct type PaLMError (line 27) | type PaLMError struct type PaLMChatResponse (line 33) | type PaLMChatResponse struct FILE: relay/channel/palm/relay-palm.go function responsePaLM2OpenAI (line 22) | func responsePaLM2OpenAI(response *PaLMChatResponse) *dto.OpenAITextResp... function streamResponsePaLM2OpenAI (line 40) | func streamResponsePaLM2OpenAI(palmResponse *PaLMChatResponse) *dto.Chat... function palmStreamHandler (line 53) | func palmStreamHandler(c *gin.Context, resp *http.Response) (*types.NewA... function palmHandler (line 104) | func palmHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *http... FILE: relay/channel/perplexity/adaptor.go type Adaptor (line 20) | type Adaptor struct method ConvertGeminiRequest (line 23) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 28) | func (a *Adaptor) ConvertClaudeRequest(c *gin.Context, info *relaycomm... method ConvertAudioRequest (line 33) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 38) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 43) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 46) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 53) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 59) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 69) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 73) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertOpenAIResponsesRequest (line 78) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 82) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 86) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 92) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 96) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/perplexity/relay-perplexity.go function requestOpenAI2Perplexity (line 5) | func requestOpenAI2Perplexity(request dto.GeneralOpenAIRequest) *dto.Gen... FILE: relay/channel/replicate/adaptor.go type Adaptor (line 28) | type Adaptor struct method Init (line 31) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 34) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 48) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertImageRequest (line 67) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method DoRequest (line 174) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 178) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 294) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 298) | func (a *Adaptor) GetChannelName() string { method ConvertOpenAIRequest (line 505) | func (a *Adaptor) ConvertOpenAIRequest(*gin.Context, *relaycommon.Rela... method ConvertRerankRequest (line 509) | func (a *Adaptor) ConvertRerankRequest(*gin.Context, int, dto.RerankRe... method ConvertEmbeddingRequest (line 513) | func (a *Adaptor) ConvertEmbeddingRequest(*gin.Context, *relaycommon.R... method ConvertAudioRequest (line 517) | func (a *Adaptor) ConvertAudioRequest(*gin.Context, *relaycommon.Relay... method ConvertOpenAIResponsesRequest (line 521) | func (a *Adaptor) ConvertOpenAIResponsesRequest(*gin.Context, *relayco... method ConvertClaudeRequest (line 525) | func (a *Adaptor) ConvertClaudeRequest(*gin.Context, *relaycommon.Rela... method ConvertGeminiRequest (line 529) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... function downloadImagesToBase64 (line 302) | func downloadImagesToBase64(urls []string) ([]string, error) { function mapOpenAISizeToFlux (line 317) | func mapOpenAISizeToFlux(size string) (aspect string, width int, height ... function reduceRatio (line 353) | func reduceRatio(w, h int) (int, int) { function gcd (line 361) | func gcd(a, b int) int { function normalizeFluxDimension (line 371) | func normalizeFluxDimension(value int) int { function uploadFileFromForm (line 400) | func uploadFileFromForm(c *gin.Context, info *relaycommon.RelayInfo, fie... FILE: relay/channel/replicate/constants.go constant ChannelName (line 5) | ChannelName = "replicate" constant ModelFlux11Pro (line 7) | ModelFlux11Pro = "black-forest-labs/flux-1.1-pro" FILE: relay/channel/replicate/dto.go type PredictionResponse (line 3) | type PredictionResponse struct type PredictionError (line 9) | type PredictionError struct type FileUploadResponse (line 15) | type FileUploadResponse struct FILE: relay/channel/siliconflow/adaptor.go type Adaptor (line 21) | type Adaptor struct method ConvertGeminiRequest (line 24) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 29) | func (a *Adaptor) ConvertClaudeRequest(c *gin.Context, info *relaycomm... method ConvertAudioRequest (line 34) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 39) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 65) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 68) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 75) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 81) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertOpenAIResponsesRequest (line 95) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 100) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method ConvertRerankRequest (line 105) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 109) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method DoResponse (line 113) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 124) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 128) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/siliconflow/dto.go type SFTokens (line 5) | type SFTokens struct type SFMeta (line 10) | type SFMeta struct type SFRerankResponse (line 14) | type SFRerankResponse struct type SFImageRequest (line 19) | type SFImageRequest struct FILE: relay/channel/siliconflow/relay-siliconflow.go function siliconflowRerankHandler (line 16) | func siliconflowRerankHandler(c *gin.Context, info *relaycommon.RelayInf... FILE: relay/channel/submodel/adaptor.go type Adaptor (line 17) | type Adaptor struct method ConvertGeminiRequest (line 20) | func (a *Adaptor) ConvertGeminiRequest(c *gin.Context, info *relaycomm... method ConvertClaudeRequest (line 24) | func (a *Adaptor) ConvertClaudeRequest(*gin.Context, *relaycommon.Rela... method ConvertAudioRequest (line 28) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 32) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 36) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 39) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 43) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 49) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 56) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 60) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertOpenAIResponsesRequest (line 64) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 68) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 72) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 81) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 85) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/submodel/constants.go constant ChannelName (line 16) | ChannelName = "submodel" FILE: relay/channel/task/ali/adaptor.go type AliVideoRequest (line 30) | type AliVideoRequest struct type AliVideoInput (line 37) | type AliVideoInput struct type AliVideoParameters (line 48) | type AliVideoParameters struct type AliVideoResponse (line 59) | type AliVideoResponse struct type AliVideoOutput (line 68) | type AliVideoOutput struct type AliUsage (line 82) | type AliUsage struct type AliMetadata (line 88) | type AliMetadata struct type TaskAdaptor (line 111) | type TaskAdaptor struct method Init (line 118) | func (a *TaskAdaptor) Init(info *relaycommon.RelayInfo) { method ValidateRequestAndSetAction (line 124) | func (a *TaskAdaptor) ValidateRequestAndSetAction(c *gin.Context, info... method BuildRequestURL (line 129) | func (a *TaskAdaptor) BuildRequestURL(info *relaycommon.RelayInfo) (st... method BuildRequestHeader (line 134) | func (a *TaskAdaptor) BuildRequestHeader(c *gin.Context, req *http.Req... method BuildRequestBody (line 141) | func (a *TaskAdaptor) BuildRequestBody(c *gin.Context, info *relaycomm... method convertToAliRequest (line 255) | func (a *TaskAdaptor) convertToAliRequest(info *relaycommon.RelayInfo,... method EstimateBilling (line 348) | func (a *TaskAdaptor) EstimateBilling(c *gin.Context, info *relaycommo... method DoRequest (line 373) | func (a *TaskAdaptor) DoRequest(c *gin.Context, info *relaycommon.Rela... method DoResponse (line 378) | func (a *TaskAdaptor) DoResponse(c *gin.Context, resp *http.Response, ... method FetchTask (line 422) | func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]a... method GetModelList (line 444) | func (a *TaskAdaptor) GetModelList() []string { method GetChannelName (line 448) | func (a *TaskAdaptor) GetChannelName() string { method ParseTaskResult (line 453) | func (a *TaskAdaptor) ParseTaskResult(respBody []byte) (*relaycommon.T... method ConvertToOpenAIVideo (line 489) | func (a *TaskAdaptor) ConvertToOpenAIVideo(task *model.Task) ([]byte, ... function sizeToResolution (line 182) | func sizeToResolution(size string) (string, error) { function ProcessAliOtherRatios (line 193) | func ProcessAliOtherRatios(aliReq *AliVideoRequest) (map[string]float64,... function convertAliStatus (line 522) | func convertAliStatus(aliStatus string) string { FILE: relay/channel/task/doubao/adaptor.go type ContentItem (line 28) | type ContentItem struct type ImageURL (line 36) | type ImageURL struct type VideoReference (line 40) | type VideoReference struct type requestPayload (line 44) | type requestPayload struct type responsePayload (line 62) | type responsePayload struct type responseTask (line 66) | type responseTask struct type TaskAdaptor (line 91) | type TaskAdaptor struct method Init (line 98) | func (a *TaskAdaptor) Init(info *relaycommon.RelayInfo) { method ValidateRequestAndSetAction (line 105) | func (a *TaskAdaptor) ValidateRequestAndSetAction(c *gin.Context, info... method BuildRequestURL (line 111) | func (a *TaskAdaptor) BuildRequestURL(info *relaycommon.RelayInfo) (st... method BuildRequestHeader (line 116) | func (a *TaskAdaptor) BuildRequestHeader(c *gin.Context, req *http.Req... method BuildRequestBody (line 124) | func (a *TaskAdaptor) BuildRequestBody(c *gin.Context, info *relaycomm... method DoRequest (line 147) | func (a *TaskAdaptor) DoRequest(c *gin.Context, info *relaycommon.Rela... method DoResponse (line 152) | func (a *TaskAdaptor) DoResponse(c *gin.Context, resp *http.Response, ... method FetchTask (line 183) | func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]a... method GetModelList (line 207) | func (a *TaskAdaptor) GetModelList() []string { method GetChannelName (line 211) | func (a *TaskAdaptor) GetChannelName() string { method convertToRequestPayload (line 215) | func (a *TaskAdaptor) convertToRequestPayload(req *relaycommon.TaskSub... method ParseTaskResult (line 249) | func (a *TaskAdaptor) ParseTaskResult(respBody []byte) (*relaycommon.T... method ConvertToOpenAIVideo (line 287) | func (a *TaskAdaptor) ConvertToOpenAIVideo(originTask *model.Task) ([]... FILE: relay/channel/task/gemini/adaptor.go type TaskAdaptor (line 29) | type TaskAdaptor struct method Init (line 36) | func (a *TaskAdaptor) Init(info *relaycommon.RelayInfo) { method ValidateRequestAndSetAction (line 43) | func (a *TaskAdaptor) ValidateRequestAndSetAction(c *gin.Context, info... method BuildRequestURL (line 48) | func (a *TaskAdaptor) BuildRequestURL(info *relaycommon.RelayInfo) (st... method BuildRequestHeader (line 61) | func (a *TaskAdaptor) BuildRequestHeader(c *gin.Context, req *http.Req... method BuildRequestBody (line 69) | func (a *TaskAdaptor) BuildRequestBody(c *gin.Context, info *relaycomm... method DoRequest (line 118) | func (a *TaskAdaptor) DoRequest(c *gin.Context, info *relaycommon.Rela... method DoResponse (line 123) | func (a *TaskAdaptor) DoResponse(c *gin.Context, resp *http.Response, ... method GetModelList (line 147) | func (a *TaskAdaptor) GetModelList() []string { method GetChannelName (line 156) | func (a *TaskAdaptor) GetChannelName() string { method EstimateBilling (line 161) | func (a *TaskAdaptor) EstimateBilling(c *gin.Context, info *relaycommo... method FetchTask (line 182) | func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]a... method ParseTaskResult (line 211) | func (a *TaskAdaptor) ParseTaskResult(respBody []byte) (*relaycommon.T... method ConvertToOpenAIVideo (line 246) | func (a *TaskAdaptor) ConvertToOpenAIVideo(task *model.Task) ([]byte, ... function extractModelFromOperationName (line 278) | func extractModelFromOperationName(name string) string { FILE: relay/channel/task/gemini/billing.go function ParseVeoDurationSeconds (line 10) | func ParseVeoDurationSeconds(metadata map[string]any) int { function ParseVeoResolution (line 33) | func ParseVeoResolution(metadata map[string]any) string { function ResolveVeoDuration (line 49) | func ResolveVeoDuration(metadata map[string]any, stdDuration int, stdSec... function ResolveVeoResolution (line 68) | func ResolveVeoResolution(metadata map[string]any, stdSize string) string { function SizeToVeoResolution (line 83) | func SizeToVeoResolution(size string) string { function SizeToVeoAspectRatio (line 104) | func SizeToVeoAspectRatio(size string) string { function VeoResolutionRatio (line 123) | func VeoResolutionRatio(modelName, resolution string) float64 { FILE: relay/channel/task/gemini/dto.go type VeoImageInput (line 5) | type VeoImageInput struct type VeoInstance (line 11) | type VeoInstance struct type VeoParameters (line 19) | type VeoParameters struct type VeoRequestPayload (line 35) | type VeoRequestPayload struct type submitResponse (line 40) | type submitResponse struct type operationVideo (line 44) | type operationVideo struct type operationResponse (line 50) | type operationResponse struct FILE: relay/channel/task/gemini/image.go constant maxVeoImageSize (line 14) | maxVeoImageSize = 20 * 1024 * 1024 function ExtractMultipartImage (line 18) | func ExtractMultipartImage(c *gin.Context, info *relaycommon.RelayInfo) ... function ParseImageInput (line 57) | func ParseImageInput(imageStr string) *VeoImageInput { function parseDataURI (line 77) | func parseDataURI(uri string) *VeoImageInput { FILE: relay/channel/task/hailuo/adaptor.go type TaskAdaptor (line 26) | type TaskAdaptor struct method Init (line 33) | func (a *TaskAdaptor) Init(info *relaycommon.RelayInfo) { method ValidateRequestAndSetAction (line 39) | func (a *TaskAdaptor) ValidateRequestAndSetAction(c *gin.Context, info... method BuildRequestURL (line 43) | func (a *TaskAdaptor) BuildRequestURL(info *relaycommon.RelayInfo) (st... method BuildRequestHeader (line 47) | func (a *TaskAdaptor) BuildRequestHeader(c *gin.Context, req *http.Req... method BuildRequestBody (line 54) | func (a *TaskAdaptor) BuildRequestBody(c *gin.Context, info *relaycomm... method DoRequest (line 77) | func (a *TaskAdaptor) DoRequest(c *gin.Context, info *relaycommon.Rela... method DoResponse (line 81) | func (a *TaskAdaptor) DoResponse(c *gin.Context, resp *http.Response, ... method FetchTask (line 114) | func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]a... method GetModelList (line 137) | func (a *TaskAdaptor) GetModelList() []string { method GetChannelName (line 141) | func (a *TaskAdaptor) GetChannelName() string { method convertToRequestPayload (line 145) | func (a *TaskAdaptor) convertToRequestPayload(req *relaycommon.TaskSub... method parseResolutionFromSize (line 169) | func (a *TaskAdaptor) parseResolutionFromSize(size string, modelConfig... method ParseTaskResult (line 184) | func (a *TaskAdaptor) ParseTaskResult(respBody []byte) (*relaycommon.T... method ConvertToOpenAIVideo (line 226) | func (a *TaskAdaptor) ConvertToOpenAIVideo(originTask *model.Task) ([]... method buildVideoURL (line 248) | func (a *TaskAdaptor) buildVideoURL(_, fileID string) string { function contains (line 286) | func contains(slice []string, item string) bool { function containsInt (line 295) | func containsInt(slice []int, item int) bool { FILE: relay/channel/task/hailuo/constants.go constant ChannelName (line 4) | ChannelName = "hailuo-video" constant TextToVideoEndpoint (line 20) | TextToVideoEndpoint = "/v1/video_generation" constant QueryTaskEndpoint (line 21) | QueryTaskEndpoint = "/v1/query/video_generation" constant StatusSuccess (line 25) | StatusSuccess = 0 constant StatusRateLimit (line 26) | StatusRateLimit = 1002 constant StatusAuthFailed (line 27) | StatusAuthFailed = 1004 constant StatusNoBalance (line 28) | StatusNoBalance = 1008 constant StatusSensitive (line 29) | StatusSensitive = 1026 constant StatusParamError (line 30) | StatusParamError = 2013 constant StatusInvalidKey (line 31) | StatusInvalidKey = 2049 constant TaskStatusPreparing (line 35) | TaskStatusPreparing = "Preparing" constant TaskStatusQueueing (line 36) | TaskStatusQueueing = "Queueing" constant TaskStatusProcessing (line 37) | TaskStatusProcessing = "Processing" constant TaskStatusSuccess (line 38) | TaskStatusSuccess = "Success" constant TaskStatusFailed (line 39) | TaskStatusFailed = "Fail" constant Resolution512P (line 43) | Resolution512P = "512P" constant Resolution720P (line 44) | Resolution720P = "720P" constant Resolution768P (line 45) | Resolution768P = "768P" constant Resolution1080P (line 46) | Resolution1080P = "1080P" constant DefaultDuration (line 50) | DefaultDuration = 6 constant DefaultResolution (line 51) | DefaultResolution = Resolution720P FILE: relay/channel/task/hailuo/models.go type SubjectReference (line 3) | type SubjectReference struct type VideoRequest (line 8) | type VideoRequest struct type VideoResponse (line 22) | type VideoResponse struct type BaseResp (line 27) | type BaseResp struct type QueryTaskRequest (line 32) | type QueryTaskRequest struct type QueryTaskResponse (line 36) | type QueryTaskResponse struct type ErrorInfo (line 45) | type ErrorInfo struct type TaskStatusInfo (line 50) | type TaskStatusInfo struct type ModelConfig (line 59) | type ModelConfig struct type RetrieveFileResponse (line 68) | type RetrieveFileResponse struct type FileObject (line 73) | type FileObject struct function GetModelConfig (line 82) | func GetModelConfig(model string) ModelConfig { FILE: relay/channel/task/jimeng/adaptor.go type requestPayload (line 36) | type requestPayload struct type responsePayload (line 46) | type responsePayload struct type responseTask (line 55) | type responseTask struct constant MaxFileSize (line 72) | MaxFileSize int64 = 4*1024*1024 + 700*1024 type TaskAdaptor (line 79) | type TaskAdaptor struct method Init (line 87) | func (a *TaskAdaptor) Init(info *relaycommon.RelayInfo) { method ValidateRequestAndSetAction (line 100) | func (a *TaskAdaptor) ValidateRequestAndSetAction(c *gin.Context, info... method BuildRequestURL (line 105) | func (a *TaskAdaptor) BuildRequestURL(info *relaycommon.RelayInfo) (st... method BuildRequestHeader (line 113) | func (a *TaskAdaptor) BuildRequestHeader(c *gin.Context, req *http.Req... method BuildRequestBody (line 124) | func (a *TaskAdaptor) BuildRequestBody(c *gin.Context, info *relaycomm... method DoRequest (line 180) | func (a *TaskAdaptor) DoRequest(c *gin.Context, info *relaycommon.Rela... method DoResponse (line 185) | func (a *TaskAdaptor) DoResponse(c *gin.Context, resp *http.Response, ... method FetchTask (line 215) | func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]a... method GetModelList (line 263) | func (a *TaskAdaptor) GetModelList() []string { method GetChannelName (line 267) | func (a *TaskAdaptor) GetChannelName() string { method signRequest (line 271) | func (a *TaskAdaptor) signRequest(req *http.Request, accessKey, secret... method convertToRequestPayload (line 381) | func (a *TaskAdaptor) convertToRequestPayload(req *relaycommon.TaskSub... method ParseTaskResult (line 428) | func (a *TaskAdaptor) ParseTaskResult(respBody []byte) (*relaycommon.T... method ConvertToOpenAIVideo (line 454) | func (a *TaskAdaptor) ConvertToOpenAIVideo(originTask *model.Task) ([]... function hmacSHA256 (line 375) | func hmacSHA256(key []byte, data []byte) []byte { function isNewAPIRelay (line 478) | func isNewAPIRelay(apiKey string) bool { FILE: relay/channel/task/kling/adaptor.go type TrajectoryPoint (line 34) | type TrajectoryPoint struct type DynamicMask (line 39) | type DynamicMask struct type CameraConfig (line 44) | type CameraConfig struct type CameraControl (line 53) | type CameraControl struct type requestPayload (line 58) | type requestPayload struct type responsePayload (line 76) | type responsePayload struct type TaskAdaptor (line 114) | type TaskAdaptor struct method Init (line 121) | func (a *TaskAdaptor) Init(info *relaycommon.RelayInfo) { method ValidateRequestAndSetAction (line 130) | func (a *TaskAdaptor) ValidateRequestAndSetAction(c *gin.Context, info... method BuildRequestURL (line 136) | func (a *TaskAdaptor) BuildRequestURL(info *relaycommon.RelayInfo) (st... method BuildRequestHeader (line 147) | func (a *TaskAdaptor) BuildRequestHeader(c *gin.Context, req *http.Req... method BuildRequestBody (line 161) | func (a *TaskAdaptor) BuildRequestBody(c *gin.Context, info *relaycomm... method DoRequest (line 183) | func (a *TaskAdaptor) DoRequest(c *gin.Context, info *relaycommon.Rela... method DoResponse (line 191) | func (a *TaskAdaptor) DoResponse(c *gin.Context, resp *http.Response, ... method FetchTask (line 218) | func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]a... method GetModelList (line 254) | func (a *TaskAdaptor) GetModelList() []string { method GetChannelName (line 258) | func (a *TaskAdaptor) GetChannelName() string { method convertToRequestPayload (line 266) | func (a *TaskAdaptor) convertToRequestPayload(req *relaycommon.TaskSub... method getAspectRatio (line 292) | func (a *TaskAdaptor) getAspectRatio(size string) string { method createJWTToken (line 309) | func (a *TaskAdaptor) createJWTToken() (string, error) { method createJWTTokenWithKey (line 313) | func (a *TaskAdaptor) createJWTTokenWithKey(apiKey string) (string, er... method ParseTaskResult (line 337) | func (a *TaskAdaptor) ParseTaskResult(respBody []byte) (*relaycommon.T... method ConvertToOpenAIVideo (line 379) | func (a *TaskAdaptor) ConvertToOpenAIVideo(originTask *model.Task) ([]... function isNewAPIRelay (line 375) | func isNewAPIRelay(apiKey string) bool { FILE: relay/channel/task/sora/adaptor.go type ContentItem (line 31) | type ContentItem struct type ImageURL (line 37) | type ImageURL struct type responseTask (line 41) | type responseTask struct type TaskAdaptor (line 64) | type TaskAdaptor struct method Init (line 71) | func (a *TaskAdaptor) Init(info *relaycommon.RelayInfo) { method ValidateRequestAndSetAction (line 90) | func (a *TaskAdaptor) ValidateRequestAndSetAction(c *gin.Context, info... method EstimateBilling (line 98) | func (a *TaskAdaptor) EstimateBilling(c *gin.Context, info *relaycommo... method BuildRequestURL (line 132) | func (a *TaskAdaptor) BuildRequestURL(info *relaycommon.RelayInfo) (st... method BuildRequestHeader (line 140) | func (a *TaskAdaptor) BuildRequestHeader(c *gin.Context, req *http.Req... method BuildRequestBody (line 146) | func (a *TaskAdaptor) BuildRequestBody(c *gin.Context, info *relaycomm... method DoRequest (line 223) | func (a *TaskAdaptor) DoRequest(c *gin.Context, info *relaycommon.Rela... method DoResponse (line 228) | func (a *TaskAdaptor) DoResponse(c *gin.Context, resp *http.Response, ... method FetchTask (line 260) | func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]a... method GetModelList (line 282) | func (a *TaskAdaptor) GetModelList() []string { method GetChannelName (line 286) | func (a *TaskAdaptor) GetChannelName() string { method ParseTaskResult (line 290) | func (a *TaskAdaptor) ParseTaskResult(respBody []byte) (*relaycommon.T... method ConvertToOpenAIVideo (line 324) | func (a *TaskAdaptor) ConvertToOpenAIVideo(task *model.Task) ([]byte, ... function validateRemixRequest (line 77) | func validateRemixRequest(c *gin.Context) *dto.TaskError { FILE: relay/channel/task/suno/adaptor.go type TaskAdaptor (line 21) | type TaskAdaptor struct method ParseTaskResult (line 30) | func (a *TaskAdaptor) ParseTaskResult([]byte) (*relaycommon.TaskInfo, ... method Init (line 34) | func (a *TaskAdaptor) Init(info *relaycommon.RelayInfo) { method ValidateRequestAndSetAction (line 38) | func (a *TaskAdaptor) ValidateRequestAndSetAction(c *gin.Context, info... method BuildRequestURL (line 66) | func (a *TaskAdaptor) BuildRequestURL(info *relaycommon.RelayInfo) (st... method BuildRequestHeader (line 72) | func (a *TaskAdaptor) BuildRequestHeader(c *gin.Context, req *http.Req... method BuildRequestBody (line 79) | func (a *TaskAdaptor) BuildRequestBody(c *gin.Context, info *relaycomm... method DoRequest (line 91) | func (a *TaskAdaptor) DoRequest(c *gin.Context, info *relaycommon.Rela... method DoResponse (line 95) | func (a *TaskAdaptor) DoResponse(c *gin.Context, resp *http.Response, ... method GetModelList (line 123) | func (a *TaskAdaptor) GetModelList() []string { method GetChannelName (line 127) | func (a *TaskAdaptor) GetChannelName() string { method FetchTask (line 131) | func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]a... function actionValidate (line 152) | func actionValidate(c *gin.Context, sunoRequest *dto.SunoSubmitReq, acti... FILE: relay/channel/task/taskcommon/helpers.go function UnmarshalMetadata (line 16) | func UnmarshalMetadata(metadata map[string]any, target any) error { function DefaultString (line 31) | func DefaultString(val, fallback string) string { function DefaultInt (line 39) | func DefaultInt(val, fallback int) int { function EncodeLocalTaskID (line 48) | func EncodeLocalTaskID(name string) string { function DecodeLocalTaskID (line 53) | func DecodeLocalTaskID(id string) (string, error) { function BuildProxyURL (line 63) | func BuildProxyURL(taskID string) string { constant ProgressSubmitted (line 69) | ProgressSubmitted = "10%" constant ProgressQueued (line 70) | ProgressQueued = "20%" constant ProgressInProgress (line 71) | ProgressInProgress = "30%" constant ProgressComplete (line 72) | ProgressComplete = "100%" type BaseBilling (line 80) | type BaseBilling struct method EstimateBilling (line 83) | func (BaseBilling) EstimateBilling(_ *gin.Context, _ *relaycommon.Rela... method AdjustBillingOnSubmit (line 88) | func (BaseBilling) AdjustBillingOnSubmit(_ *relaycommon.RelayInfo, _ [... method AdjustBillingOnComplete (line 93) | func (BaseBilling) AdjustBillingOnComplete(_ *model.Task, _ *relaycomm... FILE: relay/channel/task/vertex/adaptor.go type fetchOperationPayload (line 30) | type fetchOperationPayload struct type submitResponse (line 34) | type submitResponse struct type operationVideo (line 38) | type operationVideo struct type operationResponse (line 44) | type operationResponse struct type TaskAdaptor (line 64) | type TaskAdaptor struct method Init (line 71) | func (a *TaskAdaptor) Init(info *relaycommon.RelayInfo) { method ValidateRequestAndSetAction (line 78) | func (a *TaskAdaptor) ValidateRequestAndSetAction(c *gin.Context, info... method BuildRequestURL (line 84) | func (a *TaskAdaptor) BuildRequestURL(info *relaycommon.RelayInfo) (st... method BuildRequestHeader (line 115) | func (a *TaskAdaptor) BuildRequestHeader(c *gin.Context, req *http.Req... method EstimateBilling (line 138) | func (a *TaskAdaptor) EstimateBilling(c *gin.Context, info *relaycommo... method BuildRequestBody (line 156) | func (a *TaskAdaptor) BuildRequestBody(c *gin.Context, info *relaycomm... method DoRequest (line 202) | func (a *TaskAdaptor) DoRequest(c *gin.Context, info *relaycommon.Rela... method DoResponse (line 207) | func (a *TaskAdaptor) DoResponse(c *gin.Context, resp *http.Response, ... method GetModelList (line 231) | func (a *TaskAdaptor) GetModelList() []string { method GetChannelName (line 239) | func (a *TaskAdaptor) GetChannelName() string { return "vertex" } method FetchTask (line 242) | func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]a... method ParseTaskResult (line 294) | func (a *TaskAdaptor) ParseTaskResult(respBody []byte) (*relaycommon.T... method ConvertToOpenAIVideo (line 359) | func (a *TaskAdaptor) ConvertToOpenAIVideo(task *model.Task) ([]byte, ... function extractRegionFromOperationName (line 391) | func extractRegionFromOperationName(name string) string { function extractModelFromOperationName (line 401) | func extractModelFromOperationName(name string) string { function extractProjectFromOperationName (line 418) | func extractProjectFromOperationName(name string) string { FILE: relay/channel/task/vidu/adaptor.go type requestPayload (line 29) | type requestPayload struct type responsePayload (line 42) | type responsePayload struct type taskResultResponse (line 57) | type taskResultResponse struct type creation (line 65) | type creation struct type TaskAdaptor (line 75) | type TaskAdaptor struct method Init (line 81) | func (a *TaskAdaptor) Init(info *relaycommon.RelayInfo) { method ValidateRequestAndSetAction (line 86) | func (a *TaskAdaptor) ValidateRequestAndSetAction(c *gin.Context, info... method BuildRequestBody (line 112) | func (a *TaskAdaptor) BuildRequestBody(c *gin.Context, info *relaycomm... method BuildRequestURL (line 138) | func (a *TaskAdaptor) BuildRequestURL(info *relaycommon.RelayInfo) (st... method BuildRequestHeader (line 153) | func (a *TaskAdaptor) BuildRequestHeader(c *gin.Context, req *http.Req... method DoRequest (line 160) | func (a *TaskAdaptor) DoRequest(c *gin.Context, info *relaycommon.Rela... method DoResponse (line 164) | func (a *TaskAdaptor) DoResponse(c *gin.Context, resp *http.Response, ... method FetchTask (line 192) | func (a *TaskAdaptor) FetchTask(baseUrl, key string, body map[string]a... method GetModelList (line 215) | func (a *TaskAdaptor) GetModelList() []string { method GetChannelName (line 219) | func (a *TaskAdaptor) GetChannelName() string { method convertToRequestPayload (line 227) | func (a *TaskAdaptor) convertToRequestPayload(req *relaycommon.TaskSub... method ParseTaskResult (line 243) | func (a *TaskAdaptor) ParseTaskResult(respBody []byte) (*relaycommon.T... method ConvertToOpenAIVideo (line 275) | func (a *TaskAdaptor) ConvertToOpenAIVideo(originTask *model.Task) ([]... FILE: relay/channel/tencent/adaptor.go type Adaptor (line 21) | type Adaptor struct method ConvertGeminiRequest (line 29) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 34) | func (a *Adaptor) ConvertClaudeRequest(*gin.Context, *relaycommon.Rela... method ConvertAudioRequest (line 40) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 45) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 50) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 56) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 60) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 69) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 86) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 90) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertOpenAIResponsesRequest (line 95) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 100) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 104) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 113) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 117) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/tencent/dto.go type TencentMessage (line 3) | type TencentMessage struct type TencentChatRequest (line 8) | type TencentChatRequest struct type TencentError (line 46) | type TencentError struct type TencentUsage (line 51) | type TencentUsage struct type TencentResponseChoices (line 57) | type TencentResponseChoices struct type TencentChatResponse (line 63) | type TencentChatResponse struct type TencentChatResponseSB (line 73) | type TencentChatResponseSB struct FILE: relay/channel/tencent/relay-tencent.go function requestOpenAI2Tencent (line 30) | func requestOpenAI2Tencent(a *Adaptor, request dto.GeneralOpenAIRequest)... function responseTencent2OpenAI (line 51) | func responseTencent2OpenAI(response *TencentChatResponse) *dto.OpenAITe... function streamResponseTencent2OpenAI (line 76) | func streamResponseTencent2OpenAI(TencentResponse *TencentChatResponse) ... function tencentStreamHandler (line 93) | func tencentStreamHandler(c *gin.Context, info *relaycommon.RelayInfo, r... function tencentHandler (line 136) | func tencentHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *h... function parseTencentConfig (line 164) | func parseTencentConfig(config string) (appId int64, secretId string, se... function sha256hex (line 176) | func sha256hex(s string) string { function hmacSha256 (line 181) | func hmacSha256(s, key string) string { function getTencentSign (line 187) | func getTencentSign(req TencentChatRequest, adaptor *Adaptor, secId, sec... FILE: relay/channel/vertex/adaptor.go constant RequestModeClaude (line 28) | RequestModeClaude = 1 constant RequestModeGemini (line 29) | RequestModeGemini = 2 constant RequestModeOpenSource (line 30) | RequestModeOpenSource = 3 constant anthropicVersion (line 49) | anthropicVersion = "vertex-2023-10-16" type Adaptor (line 51) | type Adaptor struct method ConvertGeminiRequest (line 56) | func (a *Adaptor) ConvertGeminiRequest(c *gin.Context, info *relaycomm... method ConvertClaudeRequest (line 94) | func (a *Adaptor) ConvertClaudeRequest(c *gin.Context, info *relaycomm... method ConvertAudioRequest (line 104) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 109) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 114) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method getRequestUrl (line 126) | func (a *Adaptor) getRequestUrl(info *relaycommon.RelayInfo, modelName... method GetRequestURL (line 207) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 252) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 270) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 350) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 354) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertOpenAIResponsesRequest (line 359) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 364) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 368) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 403) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 420) | func (a *Adaptor) GetChannelName() string { function removeFunctionResponseID (line 65) | func removeFunctionResponseID(request *dto.GeminiChatRequest) { FILE: relay/channel/vertex/dto.go type VertexAIClaudeRequest (line 9) | type VertexAIClaudeRequest struct function copyRequest (line 26) | func copyRequest(req *dto.ClaudeRequest, version string) *VertexAIClaude... FILE: relay/channel/vertex/relay-vertex.go function GetModelRegion (line 5) | func GetModelRegion(other string, localModelName string) string { FILE: relay/channel/vertex/service_account.go type Credentials (line 23) | type Credentials struct function getAccessToken (line 40) | func getAccessToken(a *Adaptor, info *relaycommon.RelayInfo) (string, er... function createSignedJWT (line 66) | func createSignedJWT(email, privateKeyPEM string) (string, error) { function exchangeJwtForAccessToken (line 107) | func exchangeJwtForAccessToken(signedJWT string, info *relaycommon.Relay... function AcquireAccessToken (line 143) | func AcquireAccessToken(creds Credentials, proxy string) (string, error) { function exchangeJwtForAccessTokenWithProxy (line 151) | func exchangeJwtForAccessTokenWithProxy(signedJWT string, proxy string) ... FILE: relay/channel/volcengine/adaptor.go constant contextKeyTTSRequest (line 28) | contextKeyTTSRequest = "volcengine_tts_request" constant contextKeyResponseFormat (line 29) | contextKeyResponseFormat = "response_format" type Adaptor (line 32) | type Adaptor struct method ConvertGeminiRequest (line 35) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 40) | func (a *Adaptor) ConvertClaudeRequest(c *gin.Context, info *relaycomm... method ConvertAudioRequest (line 49) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 108) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 236) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 239) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 287) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 305) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 320) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 324) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertOpenAIResponsesRequest (line 328) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 332) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 348) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 396) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 400) | func (a *Adaptor) GetChannelName() string { function detectImageMimeType (line 219) | func detectImageMimeType(filename string) string { FILE: relay/channel/volcengine/protocols.go type EventType (line 14) | type EventType method String (line 128) | func (t EventType) String() string { type MsgType (line 15) | type MsgType method String (line 55) | func (t MsgType) String() string { type MsgTypeFlagBits (line 16) | type MsgTypeFlagBits type VersionBits (line 17) | type VersionBits type HeaderSizeBits (line 18) | type HeaderSizeBits type SerializationBits (line 19) | type SerializationBits type CompressionBits (line 20) | type CompressionBits constant MsgTypeFlagNoSeq (line 24) | MsgTypeFlagNoSeq MsgTypeFlagBits = 0 constant MsgTypeFlagPositiveSeq (line 25) | MsgTypeFlagPositiveSeq MsgTypeFlagBits = 0b1 constant MsgTypeFlagNegativeSeq (line 26) | MsgTypeFlagNegativeSeq MsgTypeFlagBits = 0b11 constant MsgTypeFlagWithEvent (line 27) | MsgTypeFlagWithEvent MsgTypeFlagBits = 0b100 constant Version1 (line 31) | Version1 VersionBits = iota + 1 constant HeaderSize4 (line 35) | HeaderSize4 HeaderSizeBits = iota + 1 constant SerializationJSON (line 39) | SerializationJSON SerializationBits = 0b1 constant CompressionNone (line 43) | CompressionNone CompressionBits = 0 constant MsgTypeFullClientRequest (line 47) | MsgTypeFullClientRequest MsgType = 0b1 constant MsgTypeAudioOnlyClient (line 48) | MsgTypeAudioOnlyClient MsgType = 0b10 constant MsgTypeFullServerResponse (line 49) | MsgTypeFullServerResponse MsgType = 0b1001 constant MsgTypeAudioOnlyServer (line 50) | MsgTypeAudioOnlyServer MsgType = 0b1011 constant MsgTypeFrontEndResultServer (line 51) | MsgTypeFrontEndResultServer MsgType = 0b1100 constant MsgTypeError (line 52) | MsgTypeError MsgType = 0b1111 constant EventType_None (line 75) | EventType_None EventType = 0 constant EventType_StartConnection (line 77) | EventType_StartConnection EventType = 1 constant EventType_FinishConnection (line 78) | EventType_FinishConnection EventType = 2 constant EventType_ConnectionStarted (line 80) | EventType_ConnectionStarted EventType = 50 constant EventType_ConnectionFailed (line 81) | EventType_ConnectionFailed EventType = 51 constant EventType_ConnectionFinished (line 82) | EventType_ConnectionFinished EventType = 52 constant EventType_StartSession (line 84) | EventType_StartSession EventType = 100 constant EventType_CancelSession (line 85) | EventType_CancelSession EventType = 101 constant EventType_FinishSession (line 86) | EventType_FinishSession EventType = 102 constant EventType_SessionStarted (line 88) | EventType_SessionStarted EventType = 150 constant EventType_SessionCanceled (line 89) | EventType_SessionCanceled EventType = 151 constant EventType_SessionFinished (line 90) | EventType_SessionFinished EventType = 152 constant EventType_SessionFailed (line 91) | EventType_SessionFailed EventType = 153 constant EventType_UsageResponse (line 93) | EventType_UsageResponse EventType = 154 constant EventType_TaskRequest (line 95) | EventType_TaskRequest EventType = 200 constant EventType_UpdateConfig (line 96) | EventType_UpdateConfig EventType = 201 constant EventType_AudioMuted (line 98) | EventType_AudioMuted EventType = 250 constant EventType_SayHello (line 100) | EventType_SayHello EventType = 300 constant EventType_TTSSentenceStart (line 102) | EventType_TTSSentenceStart EventType = 350 constant EventType_TTSSentenceEnd (line 103) | EventType_TTSSentenceEnd EventType = 351 constant EventType_TTSResponse (line 104) | EventType_TTSResponse EventType = 352 constant EventType_TTSEnded (line 105) | EventType_TTSEnded EventType = 359 constant EventType_PodcastRoundStart (line 106) | EventType_PodcastRoundStart EventType = 360 constant EventType_PodcastRoundResponse (line 107) | EventType_PodcastRoundResponse EventType = 361 constant EventType_PodcastRoundEnd (line 108) | EventType_PodcastRoundEnd EventType = 362 constant EventType_ASRInfo (line 110) | EventType_ASRInfo EventType = 450 constant EventType_ASRResponse (line 111) | EventType_ASRResponse EventType = 451 constant EventType_ASREnded (line 112) | EventType_ASREnded EventType = 459 constant EventType_ChatTTSText (line 114) | EventType_ChatTTSText EventType = 500 constant EventType_ChatResponse (line 116) | EventType_ChatResponse EventType = 550 constant EventType_ChatEnded (line 117) | EventType_ChatEnded EventType = 559 constant EventType_SourceSubtitleStart (line 119) | EventType_SourceSubtitleStart EventType = 650 constant EventType_SourceSubtitleResponse (line 120) | EventType_SourceSubtitleResponse EventType = 651 constant EventType_SourceSubtitleEnd (line 121) | EventType_SourceSubtitleEnd EventType = 652 constant EventType_TranslationSubtitleStart (line 123) | EventType_TranslationSubtitleStart EventType = 653 constant EventType_TranslationSubtitleResponse (line 124) | EventType_TranslationSubtitleResponse EventType = 654 constant EventType_TranslationSubtitleEnd (line 125) | EventType_TranslationSubtitleEnd EventType = 655 type Message (line 209) | type Message struct method String (line 256) | func (m *Message) String() string { method Marshal (line 274) | func (m *Message) Marshal() ([]byte, error) { method Unmarshal (line 306) | func (m *Message) Unmarshal(data []byte) error { method writers (line 356) | func (m *Message) writers() (writers []func(*bytes.Buffer) error, _ er... method writeEvent (line 376) | func (m *Message) writeEvent(buf *bytes.Buffer) error { method writeSessionID (line 380) | func (m *Message) writeSessionID(buf *bytes.Buffer) error { method writeSequence (line 400) | func (m *Message) writeSequence(buf *bytes.Buffer) error { method writeErrorCode (line 404) | func (m *Message) writeErrorCode(buf *bytes.Buffer) error { method writePayload (line 408) | func (m *Message) writePayload(buf *bytes.Buffer) error { method readers (line 422) | func (m *Message) readers() (readers []func(*bytes.Buffer) error, _ er... method readEvent (line 442) | func (m *Message) readEvent(buf *bytes.Buffer) error { method readSessionID (line 446) | func (m *Message) readSessionID(buf *bytes.Buffer) error { method readConnectID (line 466) | func (m *Message) readConnectID(buf *bytes.Buffer) error { method readSequence (line 486) | func (m *Message) readSequence(buf *bytes.Buffer) error { method readErrorCode (line 490) | func (m *Message) readErrorCode(buf *bytes.Buffer) error { method readPayload (line 494) | func (m *Message) readPayload(buf *bytes.Buffer) error { function NewMessageFromBytes (line 226) | func NewMessageFromBytes(data []byte) (*Message, error) { function NewMessage (line 245) | func NewMessage(msgType MsgType, flag MsgTypeFlagBits) (*Message, error) { function ReceiveMessage (line 507) | func ReceiveMessage(conn *websocket.Conn) (*Message, error) { function FullClientRequest (line 522) | func FullClientRequest(conn *websocket.Conn, payload []byte) error { FILE: relay/channel/volcengine/tts.go type VolcengineTTSRequest (line 21) | type VolcengineTTSRequest struct type VolcengineTTSApp (line 28) | type VolcengineTTSApp struct type VolcengineTTSUser (line 34) | type VolcengineTTSUser struct type VolcengineTTSAudio (line 38) | type VolcengineTTSAudio struct type VolcengineTTSReqInfo (line 52) | type VolcengineTTSReqInfo struct type VolcengineTTSExtraParam (line 63) | type VolcengineTTSExtraParam struct type VolcengineTTSCacheConfig (line 74) | type VolcengineTTSCacheConfig struct type VolcengineTTSResponse (line 79) | type VolcengineTTSResponse struct type VolcengineTTSAdditionInfo (line 88) | type VolcengineTTSAdditionInfo struct function parseVolcengineAuth (line 110) | func parseVolcengineAuth(apiKey string) (appID, token string, err error) { function mapVoiceType (line 118) | func mapVoiceType(openAIVoice string) string { function mapEncoding (line 125) | func mapEncoding(responseFormat string) string { function getContentTypeByEncoding (line 132) | func getContentTypeByEncoding(encoding string) string { function handleTTSResponse (line 145) | func handleTTSResponse(c *gin.Context, resp *http.Response, info *relayc... function generateRequestID (line 195) | func generateRequestID() string { function handleTTSWebSocketResponse (line 199) | func handleTTSWebSocketResponse(c *gin.Context, requestURL string, volcR... FILE: relay/channel/xai/adaptor.go type Adaptor (line 21) | type Adaptor struct method ConvertGeminiRequest (line 24) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 29) | func (a *Adaptor) ConvertClaudeRequest(*gin.Context, *relaycommon.Rela... method ConvertAudioRequest (line 35) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 40) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 50) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 53) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 57) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 63) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 94) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 98) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertOpenAIResponsesRequest (line 103) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 110) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 114) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 134) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 138) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/xai/dto.go type ChatCompletionResponse (line 6) | type ChatCompletionResponse struct type ImageRequest (line 17) | type ImageRequest struct FILE: relay/channel/xai/text.go function streamResponseXAI2OpenAI (line 19) | func streamResponseXAI2OpenAI(xAIResp *dto.ChatCompletionsStreamResponse... function xAIStreamHandler (line 38) | func xAIStreamHandler(c *gin.Context, info *relaycommon.RelayInfo, resp ... function xAIHandler (line 81) | func xAIHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *http.... FILE: relay/channel/xinference/dto.go type XinRerankResponseDocument (line 3) | type XinRerankResponseDocument struct type XinRerankResponse (line 9) | type XinRerankResponse struct FILE: relay/channel/xunfei/adaptor.go type Adaptor (line 17) | type Adaptor struct method ConvertGeminiRequest (line 21) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 26) | func (a *Adaptor) ConvertClaudeRequest(*gin.Context, *relaycommon.Rela... method ConvertAudioRequest (line 32) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 37) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 42) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 45) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 49) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 54) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 62) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 66) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertOpenAIResponsesRequest (line 71) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 76) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 83) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 99) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 103) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/xunfei/dto.go type XunfeiMessage (line 5) | type XunfeiMessage struct type XunfeiChatRequest (line 10) | type XunfeiChatRequest struct type XunfeiChatResponseTextItem (line 30) | type XunfeiChatResponseTextItem struct type XunfeiChatResponse (line 36) | type XunfeiChatResponse struct FILE: relay/channel/xunfei/relay-xunfei.go function requestOpenAI2Xunfei (line 28) | func requestOpenAI2Xunfei(request dto.GeneralOpenAIRequest, xunfeiAppId ... function responseXunfei2OpenAI (line 58) | func responseXunfei2OpenAI(response *XunfeiChatResponse) *dto.OpenAIText... function streamResponseXunfei2OpenAI (line 83) | func streamResponseXunfei2OpenAI(xunfeiResponse *XunfeiChatResponse) *dt... function buildXunfeiAuthUrl (line 105) | func buildXunfeiAuthUrl(hostUrl string, apiKey, apiSecret string) string { function xunfeiStreamHandler (line 131) | func xunfeiStreamHandler(c *gin.Context, textRequest dto.GeneralOpenAIRe... function xunfeiHandler (line 161) | func xunfeiHandler(c *gin.Context, textRequest dto.GeneralOpenAIRequest,... function xunfeiMakeRequest (line 203) | func xunfeiMakeRequest(textRequest dto.GeneralOpenAIRequest, domain, aut... function apiVersion2domain (line 250) | func apiVersion2domain(apiVersion string) string { function getXunfeiAuthUrl (line 266) | func getXunfeiAuthUrl(c *gin.Context, apiKey string, apiSecret string, m... function getAPIVersion (line 273) | func getAPIVersion(c *gin.Context, modelName string) string { FILE: relay/channel/zhipu/adaptor.go type Adaptor (line 18) | type Adaptor struct method ConvertGeminiRequest (line 21) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 26) | func (a *Adaptor) ConvertClaudeRequest(*gin.Context, *relaycommon.Rela... method ConvertAudioRequest (line 32) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 37) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 42) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 45) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 53) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 60) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 70) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 74) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method DoRequest (line 79) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method ConvertOpenAIResponsesRequest (line 83) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoResponse (line 88) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 97) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 101) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/zhipu/dto.go type ZhipuMessage (line 9) | type ZhipuMessage struct type ZhipuRequest (line 14) | type ZhipuRequest struct type ZhipuResponseData (line 22) | type ZhipuResponseData struct type ZhipuResponse (line 30) | type ZhipuResponse struct type ZhipuStreamMetaResponse (line 37) | type ZhipuStreamMetaResponse struct type zhipuTokenData (line 44) | type zhipuTokenData struct FILE: relay/channel/zhipu/relay-zhipu.go function getZhipuToken (line 33) | func getZhipuToken(apikey string) string { function requestOpenAI2Zhipu (line 80) | func requestOpenAI2Zhipu(request dto.GeneralOpenAIRequest) *ZhipuRequest { function responseZhipu2OpenAI (line 107) | func responseZhipu2OpenAI(response *ZhipuResponse) *dto.OpenAITextRespon... function streamResponseZhipu2OpenAI (line 132) | func streamResponseZhipu2OpenAI(zhipuResponse string) *dto.ChatCompletio... function streamMetaResponseZhipu2OpenAI (line 144) | func streamMetaResponseZhipu2OpenAI(zhipuResponse *ZhipuStreamMetaRespon... function zhipuStreamHandler (line 158) | func zhipuStreamHandler(c *gin.Context, info *relaycommon.RelayInfo, res... function zhipuHandler (line 222) | func zhipuHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *htt... FILE: relay/channel/zhipu_4v/adaptor.go type Adaptor (line 22) | type Adaptor struct method ConvertGeminiRequest (line 25) | func (a *Adaptor) ConvertGeminiRequest(*gin.Context, *relaycommon.Rela... method ConvertClaudeRequest (line 30) | func (a *Adaptor) ConvertClaudeRequest(c *gin.Context, info *relaycomm... method ConvertAudioRequest (line 34) | func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommo... method ConvertImageRequest (line 39) | func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommo... method Init (line 43) | func (a *Adaptor) Init(info *relaycommon.RelayInfo) { method GetRequestURL (line 46) | func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, ... method SetupRequestHeader (line 77) | func (a *Adaptor) SetupRequestHeader(c *gin.Context, req *http.Header,... method ConvertOpenAIRequest (line 83) | func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycomm... method ConvertRerankRequest (line 93) | func (a *Adaptor) ConvertRerankRequest(c *gin.Context, relayMode int, ... method ConvertEmbeddingRequest (line 97) | func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relayc... method ConvertOpenAIResponsesRequest (line 101) | func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *... method DoRequest (line 106) | func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInf... method DoResponse (line 110) | func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info... method GetModelList (line 124) | func (a *Adaptor) GetModelList() []string { method GetChannelName (line 128) | func (a *Adaptor) GetChannelName() string { FILE: relay/channel/zhipu_4v/dto.go type ZhipuV4Response (line 35) | type ZhipuV4Response struct type ZhipuV4StreamResponse (line 51) | type ZhipuV4StreamResponse struct type tokenData (line 58) | type tokenData struct FILE: relay/channel/zhipu_4v/image.go type zhipuImageRequest (line 17) | type zhipuImageRequest struct type zhipuImageResponse (line 26) | type zhipuImageResponse struct type zhipuImageError (line 36) | type zhipuImageError struct type zhipuImageData (line 41) | type zhipuImageData struct type openAIImagePayload (line 48) | type openAIImagePayload struct type openAIImageData (line 53) | type openAIImageData struct function zhipu4vImageHandler (line 57) | func zhipu4vImageHandler(c *gin.Context, resp *http.Response, info *rela... FILE: relay/channel/zhipu_4v/relay-zhipu_v4.go function requestOpenAI2Zhipu (line 9) | func requestOpenAI2Zhipu(request dto.GeneralOpenAIRequest) *dto.GeneralO... FILE: relay/chat_completions_via_responses.go function applySystemPromptIfNeeded (line 21) | func applySystemPromptIfNeeded(c *gin.Context, info *relaycommon.RelayIn... function chatCompletionsViaResponses (line 72) | func chatCompletionsViaResponses(c *gin.Context, info *relaycommon.Relay... FILE: relay/claude_handler.go function ClaudeHelper (line 24) | func ClaudeHelper(c *gin.Context, info *relaycommon.RelayInfo) (newAPIEr... FILE: relay/common/billing.go type BillingSettler (line 7) | type BillingSettler interface FILE: relay/common/override.go constant paramOverrideContextRequestHeaders (line 22) | paramOverrideContextRequestHeaders = "request_headers" constant paramOverrideContextHeaderOverride (line 23) | paramOverrideContextHeaderOverride = "header_override" constant paramOverrideContextAuditRecorder (line 24) | paramOverrideContextAuditRecorder = "__param_override_audit_recorder" type paramOverrideAuditRecorder (line 37) | type paramOverrideAuditRecorder struct method recordOperation (line 235) | func (r *paramOverrideAuditRecorder) recordOperation(mode, path, from,... type ConditionOperation (line 41) | type ConditionOperation struct type ParamOperation (line 49) | type ParamOperation struct type ParamOverrideReturnError (line 60) | type ParamOverrideReturnError struct method Error (line 68) | func (e *ParamOverrideReturnError) Error() string { function AsParamOverrideReturnError (line 78) | func AsParamOverrideReturnError(err error) (*ParamOverrideReturnError, b... function NewAPIErrorFromParamOverride (line 89) | func NewAPIErrorFromParamOverride(err *ParamOverrideReturnError) *types.... function ApplyParamOverride (line 130) | func ApplyParamOverride(jsonData []byte, paramOverride map[string]interf... function buildLegacyParamOverride (line 157) | func buildLegacyParamOverride(paramOverride map[string]interface{}) map[... function ApplyParamOverrideWithRelayInfo (line 171) | func ApplyParamOverrideWithRelayInfo(jsonData []byte, info *RelayInfo) (... function shouldEnableParamOverrideAudit (line 198) | func shouldEnableParamOverrideAudit(paramOverride map[string]interface{}... function getParamOverrideAuditRecorder (line 227) | func getParamOverrideAuditRecorder(context map[string]interface{}) *para... function shouldAuditParamPath (line 249) | func shouldAuditParamPath(path string) bool { function shouldAuditOperation (line 261) | func shouldAuditOperation(mode, path, from, to string) bool { function formatParamOverrideAuditValue (line 273) | func formatParamOverrideAuditValue(value interface{}) string { function buildParamOverrideAuditLine (line 284) | func buildParamOverrideAuditLine(mode, path, from, to string, value inte... function getParamOverrideMap (line 372) | func getParamOverrideMap(info *RelayInfo) map[string]interface{} { function getHeaderOverrideMap (line 379) | func getHeaderOverrideMap(info *RelayInfo) map[string]interface{} { function sanitizeHeaderOverrideMap (line 386) | func sanitizeHeaderOverrideMap(source map[string]interface{}) map[string... function isHeaderPassthroughRuleKeyForOverride (line 408) | func isHeaderPassthroughRuleKeyForOverride(key string) bool { function GetEffectiveHeaderOverride (line 419) | func GetEffectiveHeaderOverride(info *RelayInfo) map[string]interface{} { function tryParseOperations (line 429) | func tryParseOperations(paramOverride map[string]interface{}) ([]ParamOp... function checkConditions (line 500) | func checkConditions(jsonStr, contextJSON string, conditions []Condition... function checkSingleCondition (line 519) | func checkSingleCondition(jsonStr, contextJSON string, condition Conditi... function processNegativeIndex (line 551) | func processNegativeIndex(jsonStr string, path string) string { function compareGjsonValues (line 582) | func compareGjsonValues(jsonValue, targetValue gjson.Result, mode string... function compareEqual (line 605) | func compareEqual(jsonValue, targetValue gjson.Result) (bool, error) { function compareNumeric (line 634) | func compareNumeric(jsonValue, targetValue gjson.Result, operator string... function applyOperationsLegacy (line 658) | func applyOperationsLegacy(jsonData []byte, paramOverride map[string]int... function applyOperations (line 673) | func applyOperations(jsonStr string, operations []ParamOperation, condit... function parseParamOverrideReturnError (line 923) | func parseParamOverrideReturnError(value interface{}) (*ParamOverrideRet... function parseOverrideInt (line 989) | func parseOverrideInt(v interface{}) (int, bool) { function ensureContextMap (line 1003) | func ensureContextMap(conditionContext map[string]interface{}) map[strin... function marshalContextJSON (line 1010) | func marshalContextJSON(context map[string]interface{}) (string, error) { function setHeaderOverrideInContext (line 1021) | func setHeaderOverrideInContext(context map[string]interface{}, headerNa... function resolveHeaderOverrideValue (line 1050) | func resolveHeaderOverrideValue(context map[string]interface{}, headerNa... function resolveHeaderOverrideValueByMapping (line 1073) | func resolveHeaderOverrideValueByMapping(context map[string]interface{},... function parseHeaderAppendTokens (line 1120) | func parseHeaderAppendTokens(mapping map[string]interface{}) ([]string, ... function parseHeaderKeepOnlyDeclared (line 1128) | func parseHeaderKeepOnlyDeclared(mapping map[string]interface{}) bool { function parseHeaderReplacementTokens (line 1140) | func parseHeaderReplacementTokens(value interface{}) ([]string, error) { function splitHeaderListValue (line 1173) | func splitHeaderListValue(raw string) []string { function copyHeaderInContext (line 1184) | func copyHeaderInContext(context map[string]interface{}, fromHeader, toH... function moveHeaderInContext (line 1197) | func moveHeaderInContext(context map[string]interface{}, fromHeader, toH... function deleteHeaderOverrideInContext (line 1212) | func deleteHeaderOverrideInContext(context map[string]interface{}, heade... function parseHeaderPassThroughNames (line 1222) | func parseHeaderPassThroughNames(value interface{}) ([]string, error) { type syncTarget (line 1309) | type syncTarget struct function parseSyncTarget (line 1314) | func parseSyncTarget(spec string) (syncTarget, error) { function readSyncTargetValue (line 1351) | func readSyncTargetValue(jsonStr string, context map[string]interface{},... function writeSyncTargetValue (line 1374) | func writeSyncTargetValue(jsonStr string, context map[string]interface{}... function syncFieldsBetweenTargets (line 1393) | func syncFieldsBetweenTargets(jsonStr string, context map[string]interfa... function ensureMapKeyInContext (line 1422) | func ensureMapKeyInContext(context map[string]interface{}, key string) m... function getHeaderValueFromContext (line 1436) | func getHeaderValueFromContext(context map[string]interface{}, headerNam... function normalizeHeaderContextKey (line 1455) | func normalizeHeaderContextKey(key string) string { function buildRequestHeadersContext (line 1459) | func buildRequestHeadersContext(headers map[string]string) map[string]in... function syncRuntimeHeaderOverrideFromContext (line 1477) | func syncRuntimeHeaderOverrideFromContext(info *RelayInfo, context map[s... function moveValue (line 1493) | func moveValue(jsonStr, fromPath, toPath string) (string, error) { function copyValue (line 1505) | func copyValue(jsonStr, fromPath, toPath string) (string, error) { function isPathBasedOperation (line 1513) | func isPathBasedOperation(mode string) bool { function resolveOperationPaths (line 1522) | func resolveOperationPaths(jsonStr, path string) ([]string, error) { function expandWildcardPaths (line 1529) | func expandWildcardPaths(jsonStr, path string) ([]string, error) { function collectWildcardPaths (line 1540) | func collectWildcardPaths(node interface{}, segments []string, prefix []... function deleteValue (line 1592) | func deleteValue(jsonStr, path string) (string, error) { function modifyValue (line 1599) | func modifyValue(jsonStr, path string, value interface{}, keepOrigin, is... function modifyArray (line 1612) | func modifyArray(jsonStr, path string, value interface{}, isPrepend bool... function modifyString (line 1640) | func modifyString(jsonStr, path string, value interface{}, isPrepend boo... function trimStringValue (line 1652) | func trimStringValue(jsonStr, path string, value interface{}, isPrefix b... function ensureStringAffix (line 1672) | func ensureStringAffix(jsonStr, path string, value interface{}, isPrefix... function transformStringValue (line 1700) | func transformStringValue(jsonStr, path string, transform func(string) s... function replaceStringValue (line 1708) | func replaceStringValue(jsonStr, path, from, to string) (string, error) { function regexReplaceStringValue (line 1719) | func regexReplaceStringValue(jsonStr, path, pattern, replacement string)... type pruneObjectsOptions (line 1734) | type pruneObjectsOptions struct function pruneObjects (line 1740) | func pruneObjects(jsonStr, path, contextJSON string, value interface{}) ... function parsePruneObjectsOptions (line 1787) | func parsePruneObjectsOptions(value interface{}) (pruneObjectsOptions, e... function parseConditionOperations (line 1859) | func parseConditionOperations(raw interface{}) ([]ConditionOperation, er... function pruneObjectsNode (line 1912) | func pruneObjectsNode(node interface{}, options pruneObjectsOptions, con... function shouldPruneObject (line 1955) | func shouldPruneObject(node map[string]interface{}, options pruneObjects... function mergeObjects (line 1963) | func mergeObjects(jsonStr, path string, value interface{}, keepOrigin bo... function BuildParamOverrideContext (line 2000) | func BuildParamOverrideContext(info *RelayInfo) map[string]interface{} { FILE: relay/common/override_test.go function TestApplyParamOverrideTrimPrefix (line 17) | func TestApplyParamOverrideTrimPrefix(t *testing.T) { function TestApplyParamOverrideTrimSuffix (line 38) | func TestApplyParamOverrideTrimSuffix(t *testing.T) { function TestApplyParamOverrideTrimNoop (line 59) | func TestApplyParamOverrideTrimNoop(t *testing.T) { function TestApplyParamOverrideMixedLegacyAndOperations (line 80) | func TestApplyParamOverrideMixedLegacyAndOperations(t *testing.T) { function TestApplyParamOverrideMixedLegacyAndOperationsConflictPrefersOperations (line 101) | func TestApplyParamOverrideMixedLegacyAndOperationsConflictPrefersOperat... function TestApplyParamOverrideTrimRequiresValue (line 122) | func TestApplyParamOverrideTrimRequiresValue(t *testing.T) { function TestApplyParamOverrideReplace (line 141) | func TestApplyParamOverrideReplace(t *testing.T) { function TestApplyParamOverrideRegexReplace (line 163) | func TestApplyParamOverrideRegexReplace(t *testing.T) { function TestApplyParamOverrideReplaceRequiresFrom (line 185) | func TestApplyParamOverrideReplaceRequiresFrom(t *testing.T) { function TestApplyParamOverrideRegexReplaceRequiresPattern (line 204) | func TestApplyParamOverrideRegexReplaceRequiresPattern(t *testing.T) { function TestApplyParamOverrideDelete (line 223) | func TestApplyParamOverrideDelete(t *testing.T) { function TestApplyParamOverrideDeleteWildcardPath (line 248) | func TestApplyParamOverrideDeleteWildcardPath(t *testing.T) { function TestApplyParamOverrideSetWildcardPath (line 266) | func TestApplyParamOverrideSetWildcardPath(t *testing.T) { function TestApplyParamOverrideTrimSpaceWildcardPath (line 305) | func TestApplyParamOverrideTrimSpaceWildcardPath(t *testing.T) { function TestApplyParamOverrideDeleteWildcardEqualsIndexedPaths (line 344) | func TestApplyParamOverrideDeleteWildcardEqualsIndexedPaths(t *testing.T) { function TestApplyParamOverrideSetWildcardKeepOrigin (line 378) | func TestApplyParamOverrideSetWildcardKeepOrigin(t *testing.T) { function TestApplyParamOverrideTrimSpaceMultiWildcardPath (line 419) | func TestApplyParamOverrideTrimSpaceMultiWildcardPath(t *testing.T) { function TestApplyParamOverrideSet (line 466) | func TestApplyParamOverrideSet(t *testing.T) { function TestApplyParamOverrideSetWithDescriptionKeepsCompatibility (line 485) | func TestApplyParamOverrideSetWithDescriptionKeepsCompatibility(t *testi... function TestApplyParamOverrideSetKeepOrigin (line 521) | func TestApplyParamOverrideSetKeepOrigin(t *testing.T) { function TestApplyParamOverrideMove (line 541) | func TestApplyParamOverrideMove(t *testing.T) { function TestApplyParamOverrideMoveMissingSource (line 560) | func TestApplyParamOverrideMoveMissingSource(t *testing.T) { function TestApplyParamOverridePrependAppendString (line 578) | func TestApplyParamOverridePrependAppendString(t *testing.T) { function TestApplyParamOverridePrependAppendArray (line 602) | func TestApplyParamOverridePrependAppendArray(t *testing.T) { function TestApplyParamOverrideAppendObjectMergeKeepOrigin (line 626) | func TestApplyParamOverrideAppendObjectMergeKeepOrigin(t *testing.T) { function TestApplyParamOverrideAppendObjectMergeOverride (line 649) | func TestApplyParamOverrideAppendObjectMergeOverride(t *testing.T) { function TestApplyParamOverrideConditionORDefault (line 671) | func TestApplyParamOverrideConditionORDefault(t *testing.T) { function TestApplyParamOverrideConditionAND (line 702) | func TestApplyParamOverrideConditionAND(t *testing.T) { function TestApplyParamOverrideConditionInvert (line 734) | func TestApplyParamOverrideConditionInvert(t *testing.T) { function TestApplyParamOverrideConditionPassMissingKey (line 761) | func TestApplyParamOverrideConditionPassMissingKey(t *testing.T) { function TestApplyParamOverrideConditionFromContext (line 788) | func TestApplyParamOverrideConditionFromContext(t *testing.T) { function TestApplyParamOverrideNegativeIndexPath (line 817) | func TestApplyParamOverrideNegativeIndexPath(t *testing.T) { function TestApplyParamOverrideRegexReplaceInvalidPattern (line 836) | func TestApplyParamOverrideRegexReplaceInvalidPattern(t *testing.T) { function TestApplyParamOverrideCopy (line 857) | func TestApplyParamOverrideCopy(t *testing.T) { function TestApplyParamOverrideCopyMissingSource (line 878) | func TestApplyParamOverrideCopyMissingSource(t *testing.T) { function TestApplyParamOverrideCopyRequiresFromTo (line 898) | func TestApplyParamOverrideCopyRequiresFromTo(t *testing.T) { function TestApplyParamOverrideEnsurePrefix (line 916) | func TestApplyParamOverrideEnsurePrefix(t *testing.T) { function TestApplyParamOverrideEnsurePrefixNoop (line 937) | func TestApplyParamOverrideEnsurePrefixNoop(t *testing.T) { function TestApplyParamOverrideEnsureSuffix (line 958) | func TestApplyParamOverrideEnsureSuffix(t *testing.T) { function TestApplyParamOverrideEnsureSuffixNoop (line 979) | func TestApplyParamOverrideEnsureSuffixNoop(t *testing.T) { function TestApplyParamOverrideEnsureRequiresValue (line 1000) | func TestApplyParamOverrideEnsureRequiresValue(t *testing.T) { function TestApplyParamOverrideTrimSpace (line 1019) | func TestApplyParamOverrideTrimSpace(t *testing.T) { function TestApplyParamOverrideToLower (line 1039) | func TestApplyParamOverrideToLower(t *testing.T) { function TestApplyParamOverrideToUpper (line 1059) | func TestApplyParamOverrideToUpper(t *testing.T) { function TestApplyParamOverrideReturnError (line 1079) | func TestApplyParamOverrideReturnError(t *testing.T) { function TestApplyParamOverridePruneObjectsByTypeString (line 1128) | func TestApplyParamOverridePruneObjectsByTypeString(t *testing.T) { function TestApplyParamOverridePruneObjectsWhereAndPath (line 1174) | func TestApplyParamOverridePruneObjectsWhereAndPath(t *testing.T) { function TestApplyParamOverrideNormalizeThinkingSignatureUnsupported (line 1203) | func TestApplyParamOverrideNormalizeThinkingSignatureUnsupported(t *test... function TestApplyParamOverrideConditionFromRetryAndLastErrorContext (line 1219) | func TestApplyParamOverrideConditionFromRetryAndLastErrorContext(t *test... function TestApplyParamOverrideConditionFromRequestHeaders (line 1261) | func TestApplyParamOverrideConditionFromRequestHeaders(t *testing.T) { function TestApplyParamOverrideSetHeaderAndUseInLaterCondition (line 1292) | func TestApplyParamOverrideSetHeaderAndUseInLaterCondition(t *testing.T) { function TestApplyParamOverrideCopyHeaderFromRequestHeaders (line 1323) | func TestApplyParamOverrideCopyHeaderFromRequestHeaders(t *testing.T) { function TestApplyParamOverridePassHeadersSkipsMissingHeaders (line 1359) | func TestApplyParamOverridePassHeadersSkipsMissingHeaders(t *testing.T) { function TestApplyParamOverrideCopyHeaderSkipsMissingSource (line 1393) | func TestApplyParamOverrideCopyHeaderSkipsMissingSource(t *testing.T) { function TestApplyParamOverrideMoveHeaderSkipsMissingSource (line 1425) | func TestApplyParamOverrideMoveHeaderSkipsMissingSource(t *testing.T) { function TestApplyParamOverrideSyncFieldsHeaderToJSON (line 1457) | func TestApplyParamOverrideSyncFieldsHeaderToJSON(t *testing.T) { function TestApplyParamOverrideSyncFieldsJSONToHeader (line 1481) | func TestApplyParamOverrideSyncFieldsJSONToHeader(t *testing.T) { function TestApplyParamOverrideSyncFieldsNoChangeWhenBothExist (line 1509) | func TestApplyParamOverrideSyncFieldsNoChangeWhenBothExist(t *testing.T) { function TestApplyParamOverrideSyncFieldsInvalidTarget (line 1540) | func TestApplyParamOverrideSyncFieldsInvalidTarget(t *testing.T) { function TestApplyParamOverrideSetHeaderKeepOrigin (line 1558) | func TestApplyParamOverrideSetHeaderKeepOrigin(t *testing.T) { function TestApplyParamOverrideSetHeaderMapRewritesCommaSeparatedHeader (line 1589) | func TestApplyParamOverrideSetHeaderMapRewritesCommaSeparatedHeader(t *t... function TestApplyParamOverrideSetHeaderMapDeleteWholeHeaderWhenAllTokensCleared (line 1623) | func TestApplyParamOverrideSetHeaderMapDeleteWholeHeaderWhenAllTokensCle... function TestApplyParamOverrideSetHeaderMapAppendsTokens (line 1657) | func TestApplyParamOverrideSetHeaderMapAppendsTokens(t *testing.T) { function TestApplyParamOverrideSetHeaderMapAppendsTokensWhenHeaderMissing (line 1691) | func TestApplyParamOverrideSetHeaderMapAppendsTokensWhenHeaderMissing(t ... function TestApplyParamOverrideSetHeaderMapKeepOnlyDeclaredDropsUndeclaredTokens (line 1721) | func TestApplyParamOverrideSetHeaderMapKeepOnlyDeclaredDropsUndeclaredTo... function TestApplyParamOverrideSetHeaderMapKeepOnlyDeclaredDeletesHeaderWhenNothingDeclaredMatches (line 1757) | func TestApplyParamOverrideSetHeaderMapKeepOnlyDeclaredDeletesHeaderWhen... function TestApplyParamOverrideConditionsObjectShorthand (line 1792) | func TestApplyParamOverrideConditionsObjectShorthand(t *testing.T) { function TestApplyParamOverrideWithRelayInfoSyncRuntimeHeaders (line 1822) | func TestApplyParamOverrideWithRelayInfoSyncRuntimeHeaders(t *testing.T) { function TestApplyParamOverrideWithRelayInfoMixedLegacyAndOperations (line 1866) | func TestApplyParamOverrideWithRelayInfoMixedLegacyAndOperations(t *test... function TestApplyParamOverrideWithRelayInfoMoveAndCopyHeaders (line 1904) | func TestApplyParamOverrideWithRelayInfoMoveAndCopyHeaders(t *testing.T) { function TestApplyParamOverrideWithRelayInfoSetHeaderMapRewritesAnthropicBeta (line 1943) | func TestApplyParamOverrideWithRelayInfoSetHeaderMapRewritesAnthropicBet... function TestGetEffectiveHeaderOverrideUsesRuntimeOverrideAsFinalResult (line 1977) | func TestGetEffectiveHeaderOverrideUsesRuntimeOverrideAsFinalResult(t *t... function TestRemoveDisabledFieldsSkipWhenChannelPassThroughEnabled (line 2000) | func TestRemoveDisabledFieldsSkipWhenChannelPassThroughEnabled(t *testin... function TestRemoveDisabledFieldsSkipWhenGlobalPassThroughEnabled (line 2016) | func TestRemoveDisabledFieldsSkipWhenGlobalPassThroughEnabled(t *testing... function TestRemoveDisabledFieldsDefaultFiltering (line 2037) | func TestRemoveDisabledFieldsDefaultFiltering(t *testing.T) { function TestRemoveDisabledFieldsAllowInferenceGeo (line 2054) | func TestRemoveDisabledFieldsAllowInferenceGeo(t *testing.T) { function TestApplyParamOverrideWithRelayInfoRecordsOperationAuditInDebugMode (line 2070) | func TestApplyParamOverrideWithRelayInfoRecordsOperationAuditInDebugMode... function TestApplyParamOverrideWithRelayInfoRecordsOnlyKeyOperationsWhenDebugDisabled (line 2126) | func TestApplyParamOverrideWithRelayInfoRecordsOnlyKeyOperationsWhenDebu... function assertJSONEqual (line 2169) | func assertJSONEqual(t *testing.T, want, got string) { FILE: relay/common/relay_info.go type ThinkingContentInfo (line 21) | type ThinkingContentInfo struct constant LastMessageTypeNone (line 28) | LastMessageTypeNone = "none" constant LastMessageTypeText (line 29) | LastMessageTypeText = "text" constant LastMessageTypeTools (line 30) | LastMessageTypeTools = "tools" constant LastMessageTypeThinking (line 31) | LastMessageTypeThinking = "thinking" type ClaudeConvertInfo (line 34) | type ClaudeConvertInfo struct type RerankerInfo (line 45) | type RerankerInfo struct type BuildInToolInfo (line 50) | type BuildInToolInfo struct type ResponsesUsageInfo (line 56) | type ResponsesUsageInfo struct type ChannelMeta (line 60) | type ChannelMeta struct type TokenCountMeta (line 80) | type TokenCountMeta struct type RelayInfo (line 85) | type RelayInfo struct method InitChannelMeta (line 174) | func (info *RelayInfo) InitChannelMeta(c *gin.Context) { method ToString (line 227) | func (info *RelayInfo) ToString() string { method InitRequestConversionChain (line 580) | func (info *RelayInfo) InitRequestConversionChain() { method AppendRequestConversion (line 593) | func (info *RelayInfo) AppendRequestConversion(format types.RelayForma... method GetFinalRequestRelayFormat (line 611) | func (info *RelayInfo) GetFinalRequestRelayFormat() types.RelayFormat { method SetEstimatePromptTokens (line 637) | func (info *RelayInfo) SetEstimatePromptTokens(promptTokens int) { method GetEstimatePromptTokens (line 641) | func (info *RelayInfo) GetEstimatePromptTokens() int { method SetFirstResponseTime (line 645) | func (info *RelayInfo) SetFirstResponseTime() { method HasSendResponse (line 652) | func (info *RelayInfo) HasSendResponse() bool { function GenRelayInfoWs (line 324) | func GenRelayInfoWs(c *gin.Context, ws *websocket.Conn) *RelayInfo { function GenRelayInfoClaude (line 334) | func GenRelayInfoClaude(c *gin.Context, request dto.Request) *RelayInfo { function isClaudeBetaForced (line 345) | func isClaudeBetaForced(c *gin.Context) bool { function GenRelayInfoRerank (line 350) | func GenRelayInfoRerank(c *gin.Context, request *dto.RerankRequest) *Rel... function GenRelayInfoOpenAIAudio (line 361) | func GenRelayInfoOpenAIAudio(c *gin.Context, request dto.Request) *Relay... function GenRelayInfoEmbedding (line 367) | func GenRelayInfoEmbedding(c *gin.Context, request dto.Request) *RelayIn... function GenRelayInfoResponses (line 373) | func GenRelayInfoResponses(c *gin.Context, request *dto.OpenAIResponsesR... function GenRelayInfoGemini (line 401) | func GenRelayInfoGemini(c *gin.Context, request dto.Request) *RelayInfo { function GenRelayInfoImage (line 409) | func GenRelayInfoImage(c *gin.Context, request dto.Request) *RelayInfo { function GenRelayInfoOpenAI (line 415) | func GenRelayInfoOpenAI(c *gin.Context, request dto.Request) *RelayInfo { function genBaseRelayInfo (line 421) | func genBaseRelayInfo(c *gin.Context, request dto.Request) *RelayInfo { function cloneRequestHeaders (line 503) | func cloneRequestHeaders(c *gin.Context) map[string]string { function GenRelayInfo (line 524) | func GenRelayInfo(c *gin.Context, relayFormat types.RelayFormat, request... function GenRelayInfoResponsesCompaction (line 624) | func GenRelayInfoResponsesCompaction(c *gin.Context, request *dto.OpenAI... type TaskRelayInfo (line 656) | type TaskRelayInfo struct type TaskSubmitReq (line 671) | type TaskSubmitReq struct method GetPrompt (line 684) | func (t *TaskSubmitReq) GetPrompt() string { method HasImage (line 688) | func (t *TaskSubmitReq) HasImage() bool { method UnmarshalJSON (line 692) | func (t *TaskSubmitReq) UnmarshalJSON(data []byte) error { method UnmarshalMetadata (line 723) | func (t *TaskSubmitReq) UnmarshalMetadata(v any) error { type TaskInfo (line 738) | type TaskInfo struct function FailTaskInfo (line 750) | func FailTaskInfo(reason string) *TaskInfo { function RemoveDisabledFields (line 763) | func RemoveDisabledFields(jsonData []byte, channelOtherSettings dto.Chan... function RemoveGeminiDisabledFields (line 828) | func RemoveGeminiDisabledFields(jsonData []byte) ([]byte, error) { FILE: relay/common/relay_info_test.go function TestRelayInfoGetFinalRequestRelayFormatPrefersExplicitFinal (line 10) | func TestRelayInfoGetFinalRequestRelayFormatPrefersExplicitFinal(t *test... function TestRelayInfoGetFinalRequestRelayFormatFallsBackToConversionChain (line 20) | func TestRelayInfoGetFinalRequestRelayFormatFallsBackToConversionChain(t... function TestRelayInfoGetFinalRequestRelayFormatFallsBackToRelayFormat (line 29) | func TestRelayInfoGetFinalRequestRelayFormatFallsBackToRelayFormat(t *te... function TestRelayInfoGetFinalRequestRelayFormatNilReceiver (line 37) | func TestRelayInfoGetFinalRequestRelayFormatNilReceiver(t *testing.T) { FILE: relay/common/relay_utils.go type HasPrompt (line 17) | type HasPrompt interface type HasImage (line 21) | type HasImage interface function GetFullRequestURL (line 25) | func GetFullRequestURL(baseURL string, requestURL string, channelType in... function GetAPIVersion (line 39) | func GetAPIVersion(c *gin.Context) string { function createTaskError (line 48) | func createTaskError(err error, code string, statusCode int, localError ... function storeTaskRequest (line 58) | func storeTaskRequest(c *gin.Context, info *RelayInfo, action string, re... function GetTaskRequest (line 62) | func GetTaskRequest(c *gin.Context) (TaskSubmitReq, error) { function validatePrompt (line 74) | func validatePrompt(prompt string) *dto.TaskError { function validateMultipartTaskRequest (line 81) | func validateMultipartTaskRequest(c *gin.Context, info *RelayInfo, actio... function ValidateMultipartDirect (line 121) | func ValidateMultipartDirect(c *gin.Context, info *RelayInfo) *dto.TaskE... function isKnownTaskField (line 184) | func isKnownTaskField(field string) bool { function ValidateBasicTaskRequest (line 198) | func ValidateBasicTaskRequest(c *gin.Context, info *RelayInfo, action st... FILE: relay/common/request_conversion.go function GuessRelayFormatFromRequest (line 8) | func GuessRelayFormatFromRequest(req any) (types.RelayFormat, bool) { function AppendRequestConversionFromRequest (line 31) | func AppendRequestConversionFromRequest(info *RelayInfo, req any) { FILE: relay/common_handler/rerank.go function RerankHandler (line 18) | func RerankHandler(c *gin.Context, info *relaycommon.RelayInfo, resp *ht... FILE: relay/compatible_handler.go function TextHelper (line 31) | func TextHelper(c *gin.Context, info *relaycommon.RelayInfo) (newAPIErro... function postConsumeQuota (line 224) | func postConsumeQuota(ctx *gin.Context, relayInfo *relaycommon.RelayInfo... FILE: relay/constant/relay_mode.go constant RelayModeUnknown (line 9) | RelayModeUnknown = iota constant RelayModeChatCompletions (line 10) | RelayModeChatCompletions constant RelayModeCompletions (line 11) | RelayModeCompletions constant RelayModeEmbeddings (line 12) | RelayModeEmbeddings constant RelayModeModerations (line 13) | RelayModeModerations constant RelayModeImagesGenerations (line 14) | RelayModeImagesGenerations constant RelayModeImagesEdits (line 15) | RelayModeImagesEdits constant RelayModeEdits (line 16) | RelayModeEdits constant RelayModeMidjourneyImagine (line 18) | RelayModeMidjourneyImagine constant RelayModeMidjourneyDescribe (line 19) | RelayModeMidjourneyDescribe constant RelayModeMidjourneyBlend (line 20) | RelayModeMidjourneyBlend constant RelayModeMidjourneyChange (line 21) | RelayModeMidjourneyChange constant RelayModeMidjourneySimpleChange (line 22) | RelayModeMidjourneySimpleChange constant RelayModeMidjourneyNotify (line 23) | RelayModeMidjourneyNotify constant RelayModeMidjourneyTaskFetch (line 24) | RelayModeMidjourneyTaskFetch constant RelayModeMidjourneyTaskImageSeed (line 25) | RelayModeMidjourneyTaskImageSeed constant RelayModeMidjourneyTaskFetchByCondition (line 26) | RelayModeMidjourneyTaskFetchByCondition constant RelayModeMidjourneyAction (line 27) | RelayModeMidjourneyAction constant RelayModeMidjourneyModal (line 28) | RelayModeMidjourneyModal constant RelayModeMidjourneyShorten (line 29) | RelayModeMidjourneyShorten constant RelayModeSwapFace (line 30) | RelayModeSwapFace constant RelayModeMidjourneyUpload (line 31) | RelayModeMidjourneyUpload constant RelayModeMidjourneyVideo (line 32) | RelayModeMidjourneyVideo constant RelayModeMidjourneyEdits (line 33) | RelayModeMidjourneyEdits constant RelayModeAudioSpeech (line 35) | RelayModeAudioSpeech constant RelayModeAudioTranscription (line 36) | RelayModeAudioTranscription constant RelayModeAudioTranslation (line 37) | RelayModeAudioTranslation constant RelayModeSunoFetch (line 39) | RelayModeSunoFetch constant RelayModeSunoFetchByID (line 40) | RelayModeSunoFetchByID constant RelayModeSunoSubmit (line 41) | RelayModeSunoSubmit constant RelayModeVideoFetchByID (line 43) | RelayModeVideoFetchByID constant RelayModeVideoSubmit (line 44) | RelayModeVideoSubmit constant RelayModeRerank (line 46) | RelayModeRerank constant RelayModeResponses (line 48) | RelayModeResponses constant RelayModeRealtime (line 50) | RelayModeRealtime constant RelayModeGemini (line 52) | RelayModeGemini constant RelayModeResponsesCompact (line 54) | RelayModeResponsesCompact function Path2RelayMode (line 57) | func Path2RelayMode(path string) int { function Path2RelayModeMidjourney (line 97) | func Path2RelayModeMidjourney(path string) int { function Path2RelaySuno (line 140) | func Path2RelaySuno(method, path string) int { FILE: relay/embedding_handler.go function EmbeddingHelper (line 19) | func EmbeddingHelper(c *gin.Context, info *relaycommon.RelayInfo) (newAP... FILE: relay/gemini_handler.go function isNoThinkingRequest (line 24) | func isNoThinkingRequest(req *dto.GeminiChatRequest) bool { function trimModelThinking (line 35) | func trimModelThinking(modelName string) string { function GeminiHelper (line 55) | func GeminiHelper(c *gin.Context, info *relaycommon.RelayInfo) (newAPIEr... function GeminiEmbeddingHandler (line 201) | func GeminiEmbeddingHandler(c *gin.Context, info *relaycommon.RelayInfo)... FILE: relay/helper/common.go function FlushWriter (line 17) | func FlushWriter(c *gin.Context) (err error) { function SetEventStreamHeaders (line 41) | func SetEventStreamHeaders(c *gin.Context) { function ClaudeData (line 57) | func ClaudeData(c *gin.Context, resp dto.ClaudeResponse) error { function ClaudeChunkData (line 69) | func ClaudeChunkData(c *gin.Context, resp dto.ClaudeResponse, data strin... function ResponseChunkData (line 75) | func ResponseChunkData(c *gin.Context, resp dto.ResponsesStreamResponse,... function StringData (line 81) | func StringData(c *gin.Context, str string) error { function PingData (line 94) | func PingData(c *gin.Context) error { function ObjectData (line 109) | func ObjectData(c *gin.Context, object interface{}) error { function Done (line 120) | func Done(c *gin.Context) { function WssString (line 124) | func WssString(c *gin.Context, ws *websocket.Conn, str string) error { function WssObject (line 133) | func WssObject(c *gin.Context, ws *websocket.Conn, object interface{}) e... function WssError (line 146) | func WssError(c *gin.Context, ws *websocket.Conn, openaiError types.Open... function GetResponseID (line 158) | func GetResponseID(c *gin.Context) string { function GetLocalRealtimeID (line 163) | func GetLocalRealtimeID(c *gin.Context) string { function GenerateStartEmptyResponse (line 168) | func GenerateStartEmptyResponse(id string, createAt int64, model string,... function GenerateStopResponse (line 186) | func GenerateStopResponse(id string, createAt int64, model string, finis... function GenerateFinalUsageResponse (line 201) | func GenerateFinalUsageResponse(id string, createAt int64, model string,... FILE: relay/helper/model_mapped.go function ModelMappedHelper (line 16) | func ModelMappedHelper(c *gin.Context, info *common.RelayInfo, request d... FILE: relay/helper/price.go constant claudeCacheCreation1hMultiplier (line 17) | claudeCacheCreation1hMultiplier = 6 / 3.75 function HandleGroupRatio (line 20) | func HandleGroupRatio(ctx *gin.Context, relayInfo *relaycommon.RelayInfo... function ModelPriceHelper (line 48) | func ModelPriceHelper(c *gin.Context, info *relaycommon.RelayInfo, promp... function ModelPriceHelperPerCall (line 143) | func ModelPriceHelperPerCall(c *gin.Context, info *relaycommon.RelayInfo... function ContainPriceOrRatio (line 189) | func ContainPriceOrRatio(modelName string) bool { FILE: relay/helper/stream_scanner.go constant InitialScannerBufferSize (line 25) | InitialScannerBufferSize = 64 << 10 constant DefaultMaxScannerBufferSize (line 26) | DefaultMaxScannerBufferSize = 64 << 20 constant DefaultPingInterval (line 27) | DefaultPingInterval = 10 * time.Second function getScannerBufferSize (line 30) | func getScannerBufferSize() int { function StreamScannerHandler (line 37) | func StreamScannerHandler(c *gin.Context, resp *http.Response, info *rel... FILE: relay/helper/stream_scanner_test.go function init (line 22) | func init() { function setupStreamTest (line 26) | func setupStreamTest(t *testing.T, body io.Reader) (*gin.Context, *http.... function buildSSEBody (line 50) | func buildSSEBody(n int) string { type slowReader (line 61) | type slowReader struct method Read (line 66) | func (s *slowReader) Read(p []byte) (int, error) { function TestStreamScannerHandler_NilInputs (line 73) | func TestStreamScannerHandler_NilInputs(t *testing.T) { function TestStreamScannerHandler_EmptyBody (line 86) | func TestStreamScannerHandler_EmptyBody(t *testing.T) { function TestStreamScannerHandler_1000Chunks (line 100) | func TestStreamScannerHandler_1000Chunks(t *testing.T) { function TestStreamScannerHandler_10000Chunks (line 117) | func TestStreamScannerHandler_10000Chunks(t *testing.T) { function TestStreamScannerHandler_OrderPreserved (line 138) | func TestStreamScannerHandler_OrderPreserved(t *testing.T) { function TestStreamScannerHandler_DoneStopsScanner (line 162) | func TestStreamScannerHandler_DoneStopsScanner(t *testing.T) { function TestStreamScannerHandler_HandlerFailureStops (line 177) | func TestStreamScannerHandler_HandlerFailureStops(t *testing.T) { function TestStreamScannerHandler_SkipsNonDataLines (line 196) | func TestStreamScannerHandler_SkipsNonDataLines(t *testing.T) { function TestStreamScannerHandler_DataWithExtraSpaces (line 221) | func TestStreamScannerHandler_DataWithExtraSpaces(t *testing.T) { function TestStreamScannerHandler_ScannerDecoupledFromSlowHandler (line 238) | func TestStreamScannerHandler_ScannerDecoupledFromSlowHandler(t *testing... function TestStreamScannerHandler_SlowUpstreamFastHandler (line 301) | func TestStreamScannerHandler_SlowUpstreamFastHandler(t *testing.T) { function TestStreamScannerHandler_PingSentDuringSlowUpstream (line 334) | func TestStreamScannerHandler_PingSentDuringSlowUpstream(t *testing.T) { function TestStreamScannerHandler_PingDisabledByRelayInfo (line 397) | func TestStreamScannerHandler_PingDisabledByRelayInfo(t *testing.T) { function TestStreamScannerHandler_PingInterleavesWithSlowUpstream (line 459) | func TestStreamScannerHandler_PingInterleavesWithSlowUpstream(t *testing... FILE: relay/helper/valid_request.go function GetAndValidateRequest (line 20) | func GetAndValidateRequest(c *gin.Context, format types.RelayFormat) (re... function GetAndValidAudioRequest (line 57) | func GetAndValidAudioRequest(c *gin.Context, relayMode int) (*dto.AudioR... function GetAndValidateRerankRequest (line 79) | func GetAndValidateRerankRequest(c *gin.Context) (*dto.RerankRequest, er... function GetAndValidateEmbeddingRequest (line 96) | func GetAndValidateEmbeddingRequest(c *gin.Context, relayMode int) (*dto... function GetAndValidateResponsesRequest (line 116) | func GetAndValidateResponsesRequest(c *gin.Context) (*dto.OpenAIResponse... function GetAndValidateResponsesCompactionRequest (line 131) | func GetAndValidateResponsesCompactionRequest(c *gin.Context) (*dto.Open... function GetAndValidOpenAIImageRequest (line 142) | func GetAndValidOpenAIImageRequest(c *gin.Context, relayMode int) (*dto.... function GetAndValidateClaudeRequest (line 230) | func GetAndValidateClaudeRequest(c *gin.Context) (textRequest *dto.Claud... function GetAndValidateTextRequest (line 250) | func GetAndValidateTextRequest(c *gin.Context, relayMode int) (*dto.Gene... function GetAndValidateGeminiRequest (line 308) | func GetAndValidateGeminiRequest(c *gin.Context) (*dto.GeminiChatRequest... function GetAndValidateGeminiEmbeddingRequest (line 325) | func GetAndValidateGeminiEmbeddingRequest(c *gin.Context) (*dto.GeminiEm... function GetAndValidateGeminiBatchEmbeddingRequest (line 334) | func GetAndValidateGeminiBatchEmbeddingRequest(c *gin.Context) (*dto.Gem... FILE: relay/image_handler.go function ImageHelper (line 23) | func ImageHelper(c *gin.Context, info *relaycommon.RelayInfo) (newAPIErr... FILE: relay/mjproxy_handler.go function RelayMidjourneyImage (line 28) | func RelayMidjourneyImage(c *gin.Context) { function RelayMidjourneyNotify (line 83) | func RelayMidjourneyNotify(c *gin.Context) *dto.MidjourneyResponse { function coverMidjourneyTaskDto (line 126) | func coverMidjourneyTaskDto(c *gin.Context, originTask *model.Midjourney... function RelaySwapFace (line 175) | func RelaySwapFace(c *gin.Context, info *relaycommon.RelayInfo) *dto.Mid... function RelayMidjourneyTaskImageSeed (line 278) | func RelayMidjourneyTaskImageSeed(c *gin.Context) *dto.MidjourneyResponse { function RelayMidjourneyTask (line 311) | func RelayMidjourneyTask(c *gin.Context, relayMode int) *dto.MidjourneyR... function RelayMidjourneySubmit (line 376) | func RelayMidjourneySubmit(c *gin.Context, relayInfo *relaycommon.RelayI... type taskChangeParams (line 656) | type taskChangeParams struct function getMjRequestPath (line 662) | func getMjRequestPath(path string) string { FILE: relay/param_override_error.go function newAPIErrorFromParamOverride (line 8) | func newAPIErrorFromParamOverride(err error) *types.NewAPIError { FILE: relay/reasonmap/reasonmap.go function ClaudeStopReasonToOpenAIFinishReason (line 9) | func ClaudeStopReasonToOpenAIFinishReason(stopReason string) string { function OpenAIFinishReasonToClaudeStopReason (line 26) | func OpenAIFinishReasonToClaudeStopReason(finishReason string) string { FILE: relay/relay_adaptor.go function GetAdaptor (line 53) | func GetAdaptor(apiType int) channel.Adaptor { function GetTaskPlatform (line 127) | func GetTaskPlatform(c *gin.Context) constant.TaskPlatform { function GetTaskAdaptor (line 135) | func GetTaskAdaptor(platform constant.TaskPlatform) channel.TaskAdaptor { FILE: relay/relay_task.go type TaskSubmitResult (line 25) | type TaskSubmitResult struct function ResolveOriginTask (line 38) | func ResolveOriginTask(c *gin.Context, info *relaycommon.RelayInfo) *dto... function RelayTaskSubmit (line 144) | func RelayTaskSubmit(c *gin.Context, info *relaycommon.RelayInfo) (*Task... function recalcQuotaFromRatios (line 262) | func recalcQuotaFromRatios(info *relaycommon.RelayInfo, ratios map[strin... function RelayTaskFetch (line 287) | func RelayTaskFetch(c *gin.Context, relayMode int) (taskResp *dto.TaskEr... function sunoFetchRespBodyBuilder (line 310) | func sunoFetchRespBodyBuilder(c *gin.Context) (respBody []byte, taskResp... function sunoFetchByIDRespBodyBuilder (line 341) | func sunoFetchByIDRespBodyBuilder(c *gin.Context) (respBody []byte, task... function videoFetchByIDRespBodyBuilder (line 362) | func videoFetchByIDRespBodyBuilder(c *gin.Context) (respBody []byte, tas... function tryRealtimeFetch (line 421) | func tryRealtimeFetch(task *model.Task, isOpenAIVideoAPI bool) []byte { function detectVideoFormat (line 503) | func detectVideoFormat(rawBody []byte) string { function mapTaskStatusToSimple (line 528) | func mapTaskStatusToSimple(status model.TaskStatus) string { function TaskModel2Dto (line 541) | func TaskModel2Dto(task *model.Task) *dto.TaskDto { FILE: relay/rerank_handler.go function RerankHelper (line 20) | func RerankHelper(c *gin.Context, info *relaycommon.RelayInfo) (newAPIEr... FILE: relay/responses_handler.go function ResponsesHelper (line 23) | func ResponsesHelper(c *gin.Context, info *relaycommon.RelayInfo) (newAP... FILE: relay/websocket.go function WssHelper (line 15) | func WssHelper(c *gin.Context, info *relaycommon.RelayInfo) (newAPIError... FILE: router/api-router.go function SetApiRouter (line 14) | func SetApiRouter(router *gin.Engine) { FILE: router/dashboard.go function SetDashboardRouter (line 10) | func SetDashboardRouter(router *gin.Engine) { FILE: router/main.go function SetRouter (line 16) | func SetRouter(router *gin.Engine, buildFS embed.FS, indexPage []byte) { FILE: router/relay-router.go function SetRelayRouter (line 13) | func SetRelayRouter(router *gin.Engine) { function registerMjRouterGroup (line 203) | func registerMjRouterGroup(relayMjRouter *gin.RouterGroup) { FILE: router/video-router.go function SetVideoRouter (line 10) | func SetVideoRouter(router *gin.Engine) { FILE: router/web-router.go function SetWebRouter (line 16) | func SetWebRouter(router *gin.Engine, buildFS embed.FS, indexPage []byte) { FILE: service/audio.go function parseAudio (line 9) | func parseAudio(audioBase64 string, format string) (duration float64, er... function DecodeBase64AudioData (line 34) | func DecodeBase64AudioData(audioBase64 string) (string, error) { FILE: service/billing.go constant BillingSourceWallet (line 13) | BillingSourceWallet = "wallet" constant BillingSourceSubscription (line 14) | BillingSourceSubscription = "subscription" function PreConsumeBilling (line 19) | func PreConsumeBilling(c *gin.Context, preConsumedQuota int, relayInfo *... function SettleBilling (line 34) | func SettleBilling(ctx *gin.Context, relayInfo *relaycommon.RelayInfo, a... FILE: service/billing_session.go type BillingSession (line 25) | type BillingSession struct method Settle (line 39) | func (s *BillingSession) Settle(actualQuota int) error { method Refund (line 80) | func (s *BillingSession) Refund(c *gin.Context) { method NeedsRefund (line 117) | func (s *BillingSession) NeedsRefund() bool { method needsRefundLocked (line 123) | func (s *BillingSession) needsRefundLocked() bool { method GetPreConsumedQuota (line 139) | func (s *BillingSession) GetPreConsumedQuota() int { method preConsume (line 149) | func (s *BillingSession) preConsume(c *gin.Context, quota int) *types.... method shouldTrust (line 195) | func (s *BillingSession) shouldTrust(c *gin.Context) bool { method syncRelayInfo (line 231) | func (s *BillingSession) syncRelayInfo() { function NewBillingSession (line 255) | func NewBillingSession(c *gin.Context, relayInfo *relaycommon.RelayInfo,... FILE: service/channel.go function formatNotifyType (line 16) | func formatNotifyType(channelId int, status int) string { function DisableChannel (line 21) | func DisableChannel(channelError types.ChannelError, reason string) { function EnableChannel (line 38) | func EnableChannel(channelId int, usingKey string, channelName string) { function ShouldDisableChannel (line 47) | func ShouldDisableChannel(channelType int, err *types.NewAPIError) bool { function ShouldEnableChannel (line 104) | func ShouldEnableChannel(newAPIError *types.NewAPIError, status int) bool { FILE: service/channel_affinity.go constant ginKeyChannelAffinityCacheKey (line 23) | ginKeyChannelAffinityCacheKey = "channel_affinity_cache_key" constant ginKeyChannelAffinityTTLSeconds (line 24) | ginKeyChannelAffinityTTLSeconds = "channel_affinity_ttl_seconds" constant ginKeyChannelAffinityMeta (line 25) | ginKeyChannelAffinityMeta = "channel_affinity_meta" constant ginKeyChannelAffinityLogInfo (line 26) | ginKeyChannelAffinityLogInfo = "channel_affinity_log_info" constant ginKeyChannelAffinitySkipRetry (line 27) | ginKeyChannelAffinitySkipRetry = "channel_affinity_skip_retry_on_failure" constant channelAffinityCacheNamespace (line 29) | channelAffinityCacheNamespace = "new-api:channel_affinity:v1" constant channelAffinityUsageCacheStatsNamespace (line 30) | channelAffinityUsageCacheStatsNamespace = "new-api:channel_affinity_usag... type channelAffinityMeta (line 43) | type channelAffinityMeta struct type ChannelAffinityStatsContext (line 59) | type ChannelAffinityStatsContext struct constant cacheTokenRateModeCachedOverPrompt (line 67) | cacheTokenRateModeCachedOverPrompt = "cached_over_prompt" constant cacheTokenRateModeCachedOverPromptPlusCached (line 68) | cacheTokenRateModeCachedOverPromptPlusCached = "cached_over_prompt_plus_... constant cacheTokenRateModeMixed (line 69) | cacheTokenRateModeMixed = "mixed" type ChannelAffinityCacheStats (line 72) | type ChannelAffinityCacheStats struct function getChannelAffinityCache (line 81) | func getChannelAffinityCache() *cachex.HybridCache[int] { function GetChannelAffinityCacheStats (line 111) | func GetChannelAffinityCacheStats() ChannelAffinityCacheStats { function ClearChannelAffinityCacheAll (line 188) | func ClearChannelAffinityCacheAll() int { function ClearChannelAffinityCacheByRuleName (line 203) | func ClearChannelAffinityCacheByRuleName(ruleName string) (int, error) { function matchAnyRegexCached (line 238) | func matchAnyRegexCached(patterns []string, s string) bool { function matchAnyIncludeFold (line 262) | func matchAnyIncludeFold(patterns []string, s string) bool { function extractChannelAffinityValue (line 279) | func extractChannelAffinityValue(c *gin.Context, src operation_setting.C... function buildChannelAffinityCacheKeySuffix (line 322) | func buildChannelAffinityCacheKeySuffix(rule operation_setting.ChannelAf... function setChannelAffinityContext (line 334) | func setChannelAffinityContext(c *gin.Context, meta channelAffinityMeta) { function getChannelAffinityContext (line 340) | func getChannelAffinityContext(c *gin.Context) (string, int, bool) { function getChannelAffinityMeta (line 357) | func getChannelAffinityMeta(c *gin.Context) (channelAffinityMeta, bool) { function GetChannelAffinityStatsContext (line 369) | func GetChannelAffinityStatsContext(c *gin.Context) (ChannelAffinityStat... function affinityFingerprint (line 395) | func affinityFingerprint(s string) string { function buildChannelAffinityKeyHint (line 406) | func buildChannelAffinityKeyHint(s string) string { function cloneStringAnyMap (line 419) | func cloneStringAnyMap(src map[string]interface{}) map[string]interface{} { function mergeChannelOverride (line 430) | func mergeChannelOverride(base map[string]interface{}, tpl map[string]in... function extractParamOperations (line 459) | func extractParamOperations(value interface{}) ([]interface{}, bool) { function appendChannelAffinityTemplateAdminInfo (line 479) | func appendChannelAffinityTemplateAdminInfo(c *gin.Context, meta channel... function ApplyChannelAffinityOverrideTemplate (line 515) | func ApplyChannelAffinityOverrideTemplate(c *gin.Context, paramOverride ... function GetPreferredChannelByAffinity (line 532) | func GetPreferredChannelByAffinity(c *gin.Context, modelName string, usi... function ShouldSkipRetryAfterChannelAffinityFailure (line 608) | func ShouldSkipRetryAfterChannelAffinityFailure(c *gin.Context) bool { function MarkChannelAffinityUsed (line 623) | func MarkChannelAffinityUsed(c *gin.Context, selectedGroup string, chann... function AppendChannelAffinityAdminInfo (line 649) | func AppendChannelAffinityAdminInfo(c *gin.Context, adminInfo map[string... function RecordChannelAffinity (line 660) | func RecordChannelAffinity(c *gin.Context, channelID int) { type ChannelAffinityUsageCacheStats (line 689) | type ChannelAffinityUsageCacheStats struct type ChannelAffinityUsageCacheCounters (line 707) | type ChannelAffinityUsageCacheCounters struct function ObserveChannelAffinityUsageCacheByRelayFormat (line 725) | func ObserveChannelAffinityUsageCacheByRelayFormat(c *gin.Context, usage... function ObserveChannelAffinityUsageCacheFromContext (line 729) | func ObserveChannelAffinityUsageCacheFromContext(c *gin.Context, usage *... function GetChannelAffinityUsageCacheStats (line 737) | func GetChannelAffinityUsageCacheStats(ruleName, usingGroup, keyFp strin... function observeChannelAffinityUsageCache (line 777) | func observeChannelAffinityUsageCache(statsCtx ChannelAffinityStatsConte... function normalizeCachedTokenRateMode (line 826) | func normalizeCachedTokenRateMode(mode string) string { function cachedTokenRateModeByRelayFormat (line 839) | func cachedTokenRateModeByRelayFormat(relayFormat types.RelayFormat) str... function channelAffinityUsageCacheEntryKey (line 850) | func channelAffinityUsageCacheEntryKey(ruleName, usingGroup, keyFp strin... function usageCacheSignals (line 860) | func usageCacheSignals(usage *dto.Usage) (hit bool, cachedTokens int64, ... function usagePromptTokens (line 878) | func usagePromptTokens(usage *dto.Usage) int { function usageCompletionTokens (line 888) | func usageCompletionTokens(usage *dto.Usage) int { function usageTotalTokens (line 898) | func usageTotalTokens(usage *dto.Usage) int { function getChannelAffinityUsageCacheStatsCache (line 913) | func getChannelAffinityUsageCacheStatsCache() *cachex.HybridCache[Channe... function channelAffinityUsageCacheStatsLock (line 945) | func channelAffinityUsageCacheStatsLock(key string) *sync.Mutex { FILE: service/channel_affinity_template_test.go function buildChannelAffinityTemplateContextForTest (line 17) | func buildChannelAffinityTemplateContextForTest(meta channelAffinityMeta... function TestApplyChannelAffinityOverrideTemplate_NoTemplate (line 24) | func TestApplyChannelAffinityOverrideTemplate_NoTemplate(t *testing.T) { function TestApplyChannelAffinityOverrideTemplate_MergeTemplate (line 37) | func TestApplyChannelAffinityOverrideTemplate_MergeTemplate(t *testing.T) { function TestApplyChannelAffinityOverrideTemplate_MergeOperations (line 77) | func TestApplyChannelAffinityOverrideTemplate_MergeOperations(t *testing... function TestChannelAffinityHitCodexTemplatePassHeadersEffective (line 119) | func TestChannelAffinityHitCodexTemplatePassHeadersEffective(t *testing.... FILE: service/channel_affinity_usage_cache_test.go function buildChannelAffinityStatsContextForTest (line 15) | func buildChannelAffinityStatsContextForTest(ruleName, usingGroup, keyFP... function TestObserveChannelAffinityUsageCacheByRelayFormat_ClaudeMode (line 28) | func TestObserveChannelAffinityUsageCacheByRelayFormat_ClaudeMode(t *tes... function TestObserveChannelAffinityUsageCacheByRelayFormat_MixedMode (line 55) | func TestObserveChannelAffinityUsageCacheByRelayFormat_MixedMode(t *test... function TestObserveChannelAffinityUsageCacheByRelayFormat_UnsupportedModeKeepsEmpty (line 85) | func TestObserveChannelAffinityUsageCacheByRelayFormat_UnsupportedModeKe... FILE: service/channel_select.go type RetryParam (line 14) | type RetryParam struct method GetRetry (line 22) | func (p *RetryParam) GetRetry() int { method SetRetry (line 29) | func (p *RetryParam) SetRetry(retry int) { method IncreaseRetry (line 33) | func (p *RetryParam) IncreaseRetry() { method ResetRetryNextTry (line 44) | func (p *RetryParam) ResetRetryNextTry() { function CacheGetRandomSatisfiedChannel (line 83) | func CacheGetRandomSatisfiedChannel(param *RetryParam) (*model.Channel, ... FILE: service/codex_credential_refresh.go type CodexCredentialRefreshOptions (line 15) | type CodexCredentialRefreshOptions struct type CodexOAuthKey (line 19) | type CodexOAuthKey struct function parseCodexOAuthKey (line 31) | func parseCodexOAuthKey(raw string) (*CodexOAuthKey, error) { function RefreshCodexChannelCredential (line 42) | func RefreshCodexChannelCredential(ctx context.Context, channelID int, o... FILE: service/codex_credential_refresh_task.go constant codexCredentialRefreshTickInterval (line 20) | codexCredentialRefreshTickInterval = 10 * time.Minute constant codexCredentialRefreshThreshold (line 21) | codexCredentialRefreshThreshold = 24 * time.Hour constant codexCredentialRefreshBatchSize (line 22) | codexCredentialRefreshBatchSize = 200 constant codexCredentialRefreshTimeout (line 23) | codexCredentialRefreshTimeout = 15 * time.Second function StartCodexCredentialAutoRefreshTask (line 31) | func StartCodexCredentialAutoRefreshTask() { function runCodexCredentialAutoRefreshOnce (line 51) | func runCodexCredentialAutoRefreshOnce() { FILE: service/codex_oauth.go constant codexOAuthClientID (line 20) | codexOAuthClientID = "app_EMoamEEZ73f0CkXaXp7hrann" constant codexOAuthAuthorizeURL (line 21) | codexOAuthAuthorizeURL = "https://auth.openai.com/oauth/authorize" constant codexOAuthTokenURL (line 22) | codexOAuthTokenURL = "https://auth.openai.com/oauth/token" constant codexOAuthRedirectURI (line 23) | codexOAuthRedirectURI = "http://localhost:1455/auth/callback" constant codexOAuthScope (line 24) | codexOAuthScope = "openid profile email offline_access" constant codexJWTClaimPath (line 25) | codexJWTClaimPath = "https://api.openai.com/auth" constant defaultHTTPTimeout (line 26) | defaultHTTPTimeout = 20 * time.Second type CodexOAuthTokenResult (line 29) | type CodexOAuthTokenResult struct type CodexOAuthAuthorizationFlow (line 35) | type CodexOAuthAuthorizationFlow struct function RefreshCodexOAuthToken (line 42) | func RefreshCodexOAuthToken(ctx context.Context, refreshToken string) (*... function RefreshCodexOAuthTokenWithProxy (line 46) | func RefreshCodexOAuthTokenWithProxy(ctx context.Context, refreshToken s... function ExchangeCodexAuthorizationCode (line 54) | func ExchangeCodexAuthorizationCode(ctx context.Context, code string, ve... function ExchangeCodexAuthorizationCodeWithProxy (line 58) | func ExchangeCodexAuthorizationCodeWithProxy(ctx context.Context, code s... function CreateCodexOAuthAuthorizationFlow (line 66) | func CreateCodexOAuthAuthorizationFlow() (*CodexOAuthAuthorizationFlow, ... function refreshCodexOAuthToken (line 87) | func refreshCodexOAuthToken( function exchangeCodexAuthorizationCode (line 141) | func exchangeCodexAuthorizationCode( function getCodexOAuthHTTPClient (line 200) | func getCodexOAuthHTTPClient(proxyURL string) (*http.Client, error) { function buildCodexAuthorizeURL (line 213) | func buildCodexAuthorizeURL(state string, challenge string) (string, err... function createStateHex (line 233) | func createStateHex(nBytes int) (string, error) { function generatePKCEPair (line 244) | func generatePKCEPair() (verifier string, challenge string, err error) { function ExtractCodexAccountIDFromJWT (line 255) | func ExtractCodexAccountIDFromJWT(token string) (string, bool) { function ExtractEmailFromJWT (line 283) | func ExtractEmailFromJWT(token string) (string, bool) { function decodeJWTClaims (line 303) | func decodeJWTClaims(token string) (map[string]any, bool) { FILE: service/codex_wham_usage.go function FetchCodexWhamUsage (line 11) | func FetchCodexWhamUsage( FILE: service/convert.go function ClaudeToOpenAIRequest (line 17) | func ClaudeToOpenAIRequest(claudeRequest dto.ClaudeRequest, info *relayc... function generateStopBlock (line 219) | func generateStopBlock(index int) *dto.ClaudeResponse { function StreamResponseOpenAI2Claude (line 226) | func StreamResponseOpenAI2Claude(openAIResponse *dto.ChatCompletionsStre... function ResponseOpenAI2Claude (line 581) | func ResponseOpenAI2Claude(openAIResponse *dto.OpenAITextResponse, info ... function stopReasonOpenAI2Claude (line 623) | func stopReasonOpenAI2Claude(reason string) string { function toJSONString (line 627) | func toJSONString(v interface{}) string { function GeminiToOpenAIRequest (line 635) | func GeminiToOpenAIRequest(geminiRequest *dto.GeminiChatRequest, info *r... function convertGeminiRoleToOpenAI (line 781) | func convertGeminiRoleToOpenAI(geminiRole string) string { function extractTextFromGeminiParts (line 794) | func extractTextFromGeminiParts(parts []dto.GeminiPart) string { function ResponseOpenAI2Gemini (line 805) | func ResponseOpenAI2Gemini(openAIResponse *dto.OpenAITextResponse, info ... function StreamResponseOpenAI2Gemini (line 884) | func StreamResponseOpenAI2Gemini(openAIResponse *dto.ChatCompletionsStre... FILE: service/download.go type WorkerRequest (line 15) | type WorkerRequest struct function DoWorkerRequest (line 24) | func DoWorkerRequest(req *WorkerRequest) (*http.Response, error) { function DoDownloadRequest (line 52) | func DoDownloadRequest(originUrl string, reason ...string) (resp *http.R... FILE: service/epay.go function GetCallbackAddress (line 8) | func GetCallbackAddress() string { FILE: service/error.go function MidjourneyErrorWrapper (line 20) | func MidjourneyErrorWrapper(code int, desc string) *dto.MidjourneyRespon... function MidjourneyErrorWithStatusCodeWrapper (line 27) | func MidjourneyErrorWithStatusCodeWrapper(code int, desc string, statusC... function ClaudeErrorWrapper (line 61) | func ClaudeErrorWrapper(err error, code string, statusCode int) *dto.Cla... function ClaudeErrorWrapperLocal (line 80) | func ClaudeErrorWrapperLocal(err error, code string, statusCode int) *dt... function RelayErrorHandler (line 86) | func RelayErrorHandler(ctx context.Context, resp *http.Response, showBod... function ResetStatusCode (line 131) | func ResetStatusCode(newApiErr *types.NewAPIError, statusCodeMappingStr ... function parseStatusCodeMappingValue (line 156) | func parseStatusCodeMappingValue(value any) (int, bool) { function TaskErrorWrapperLocal (line 185) | func TaskErrorWrapperLocal(err error, code string, statusCode int) *dto.... function TaskErrorWrapper (line 191) | func TaskErrorWrapper(err error, code string, statusCode int) *dto.TaskE... function TaskErrorFromAPIError (line 211) | func TaskErrorFromAPIError(apiErr *types.NewAPIError) *dto.TaskError { FILE: service/error_test.go function TestResetStatusCode (line 10) | func TestResetStatusCode(t *testing.T) { FILE: service/file_decoder.go function GetFileTypeFromUrl (line 23) | func GetFileTypeFromUrl(c *gin.Context, url string, reason ...string) (s... function GetFileBase64FromUrl (line 134) | func GetFileBase64FromUrl(c *gin.Context, url string, reason ...string) ... function GetMimeTypeByExtension (line 154) | func GetMimeTypeByExtension(ext string) string { FILE: service/file_service.go function getContextCacheKey (line 28) | func getContextCacheKey(url string) string { function LoadFileSource (line 34) | func LoadFileSource(c *gin.Context, source *types.FileSource, reason ...... function registerSourceForCleanup (line 105) | func registerSourceForCleanup(c *gin.Context, source *types.FileSource) { function CleanupFileSources (line 122) | func CleanupFileSources(c *gin.Context) { function loadFromURL (line 135) | func loadFromURL(c *gin.Context, url string, reason ...string) (*types.C... function shouldUseDiskCache (line 217) | func shouldUseDiskCache(dataSize int64) bool { function writeToDiskCache (line 222) | func writeToDiskCache(base64Data string) (string, error) { function smartDetectMimeType (line 227) | func smartDetectMimeType(resp *http.Response, url string, fileBytes []by... function loadFromBase64 (line 292) | func loadFromBase64(base64String string, providedMimeType string) (*type... function GetImageConfig (line 360) | func GetImageConfig(c *gin.Context, source *types.FileSource) (image.Con... function GetBase64Data (line 391) | func GetBase64Data(c *gin.Context, source *types.FileSource, reason ...s... function GetMimeType (line 404) | func GetMimeType(c *gin.Context, source *types.FileSource) (string, erro... function DetectFileType (line 424) | func DetectFileType(mimeType string) types.FileType { function decodeImageConfig (line 438) | func decodeImageConfig(data []byte) (image.Config, string, error) { function guessMimeTypeFromURL (line 456) | func guessMimeTypeFromURL(url string) string { FILE: service/funding_source.go type FundingSource (line 14) | type FundingSource interface type WalletFunding (line 29) | type WalletFunding struct method Source (line 34) | func (w *WalletFunding) Source() string { return BillingSourceWallet } method PreConsume (line 36) | func (w *WalletFunding) PreConsume(amount int) error { method Settle (line 47) | func (w *WalletFunding) Settle(delta int) error { method Refund (line 57) | func (w *WalletFunding) Refund() error { type SubscriptionFunding (line 70) | type SubscriptionFunding struct method Source (line 84) | func (s *SubscriptionFunding) Source() string { return BillingSourceSu... method PreConsume (line 86) | func (s *SubscriptionFunding) PreConsume(_ int) error { method Settle (line 104) | func (s *SubscriptionFunding) Settle(delta int) error { method Refund (line 111) | func (s *SubscriptionFunding) Refund() error { function refundWithRetry (line 122) | func refundWithRetry(fn func() error) error { FILE: service/group.go function GetUserUsableGroups (line 10) | func GetUserUsableGroups(userGroup string) map[string]string { function GroupInUserUsableGroups (line 39) | func GroupInUserUsableGroups(userGroup, groupName string) bool { function GetUserAutoGroup (line 45) | func GetUserAutoGroup(userGroup string) []string { function GetUserGroupRatio (line 59) | func GetUserGroupRatio(userGroup, group string) float64 { FILE: service/http.go function CloseResponseBodyGracefully (line 15) | func CloseResponseBodyGracefully(httpResponse *http.Response) { function IOCopyBytesGracefully (line 25) | func IOCopyBytesGracefully(c *gin.Context, src *http.Response, data []by... FILE: service/http_client.go function checkRedirect (line 24) | func checkRedirect(req *http.Request, via []*http.Request) error { function InitHttpClient (line 36) | func InitHttpClient() { function GetHttpClient (line 61) | func GetHttpClient() *http.Client { function GetHttpClientWithProxy (line 66) | func GetHttpClientWithProxy(proxyURL string) (*http.Client, error) { function ResetProxyClientCache (line 74) | func ResetProxyClientCache() { function NewProxyHttpClient (line 86) | func NewProxyHttpClient(proxyURL string) (*http.Client, error) { FILE: service/image.go function DecodeBase64ImageData (line 20) | func DecodeBase64ImageData(base64String string) (image.Config, string, s... function DecodeBase64FileData (line 43) | func DecodeBase64FileData(base64String string) (string, string, error) { function GetImageFromUrl (line 69) | func GetImageFromUrl(url string) (mimeType string, data string, err erro... function DecodeUrlImageData (line 119) | func DecodeUrlImageData(imageUrl string) (image.Config, string, error) { function getImageConfig (line 161) | func getImageConfig(reader io.Reader) (image.Config, string, error) { FILE: service/log_info_generate.go function appendRequestPath (line 15) | func appendRequestPath(ctx *gin.Context, relayInfo *relaycommon.RelayInf... function GenerateTextOtherInfo (line 34) | func GenerateTextOtherInfo(ctx *gin.Context, relayInfo *relaycommon.Rela... function appendParamOverrideInfo (line 81) | func appendParamOverrideInfo(relayInfo *relaycommon.RelayInfo, other map... function appendBillingInfo (line 88) | func appendBillingInfo(relayInfo *relaycommon.RelayInfo, other map[strin... function appendRequestConversionChain (line 142) | func appendRequestConversionChain(relayInfo *relaycommon.RelayInfo, othe... function GenerateWssOtherInfo (line 170) | func GenerateWssOtherInfo(ctx *gin.Context, relayInfo *relaycommon.Relay... function GenerateAudioOtherInfo (line 182) | func GenerateAudioOtherInfo(ctx *gin.Context, relayInfo *relaycommon.Rel... function GenerateClaudeOtherInfo (line 194) | func GenerateClaudeOtherInfo(ctx *gin.Context, relayInfo *relaycommon.Re... function GenerateMjOtherInfo (line 215) | func GenerateMjOtherInfo(relayInfo *relaycommon.RelayInfo, priceData typ... FILE: service/midjourney.go function CovertMjpActionToModelName (line 22) | func CovertMjpActionToModelName(mjAction string) string { function GetMjRequestModel (line 30) | func GetMjRequestModel(relayMode int, midjRequest *dto.MidjourneyRequest... function CoverPlusActionToNormalAction (line 77) | func CoverPlusActionToNormalAction(midjRequest *dto.MidjourneyRequest) *... function ConvertSimpleChangeParams (line 136) | func ConvertSimpleChangeParams(content string) *dto.MidjourneyRequest { function DoMidjourneyHttpRequest (line 165) | func DoMidjourneyHttpRequest(c *gin.Context, timeout time.Duration, full... FILE: service/notify-limit.go type limitCount (line 20) | type limitCount struct function getDuration (line 25) | func getDuration() time.Duration { function startCleanupTask (line 31) | func startCleanupTask() { function CheckNotificationLimit (line 50) | func CheckNotificationLimit(userId int, notifyType string) (bool, error) { function checkRedisLimit (line 57) | func checkRedisLimit(userId int, notifyType string) (bool, error) { function checkMemoryLimit (line 89) | func checkMemoryLimit(userId int, notifyType string) (bool, error) { FILE: service/openai_chat_responses_compat.go function ChatCompletionsRequestToResponsesRequest (line 8) | func ChatCompletionsRequestToResponsesRequest(req *dto.GeneralOpenAIRequ... function ResponsesResponseToChatCompletionsResponse (line 12) | func ResponsesResponseToChatCompletionsResponse(resp *dto.OpenAIResponse... function ExtractOutputTextFromResponses (line 16) | func ExtractOutputTextFromResponses(resp *dto.OpenAIResponsesResponse) s... FILE: service/openai_chat_responses_mode.go function ShouldChatCompletionsUseResponsesPolicy (line 8) | func ShouldChatCompletionsUseResponsesPolicy(policy model_setting.ChatCo... function ShouldChatCompletionsUseResponsesGlobal (line 12) | func ShouldChatCompletionsUseResponsesGlobal(channelID int, channelType ... FILE: service/openaicompat/chat_to_responses.go function normalizeChatImageURLToString (line 14) | func normalizeChatImageURLToString(v any) any { function convertChatResponseFormatToResponsesText (line 38) | func convertChatResponseFormatToResponsesText(reqFormat *dto.ResponseFor... function ChatCompletionsRequestToResponsesRequest (line 76) | func ChatCompletionsRequestToResponsesRequest(req *dto.GeneralOpenAIRequ... FILE: service/openaicompat/policy.go function ShouldChatCompletionsUseResponsesPolicy (line 5) | func ShouldChatCompletionsUseResponsesPolicy(policy model_setting.ChatCo... function ShouldChatCompletionsUseResponsesGlobal (line 12) | func ShouldChatCompletionsUseResponsesGlobal(channelID int, channelType ... FILE: service/openaicompat/regex.go function matchAnyRegex (line 10) | func matchAnyRegex(patterns []string, s string) bool { FILE: service/openaicompat/responses_to_chat.go function ResponsesResponseToChatCompletionsResponse (line 10) | func ResponsesResponseToChatCompletionsResponse(resp *dto.OpenAIResponse... function ExtractOutputTextFromResponses (line 101) | func ExtractOutputTextFromResponses(resp *dto.OpenAIResponsesResponse) s... FILE: service/passkey/service.go constant RegistrationSessionKey (line 20) | RegistrationSessionKey = "passkey_registration_session" constant LoginSessionKey (line 21) | LoginSessionKey = "passkey_login_session" constant VerifySessionKey (line 22) | VerifySessionKey = "passkey_verify_session" function BuildWebAuthn (line 26) | func BuildWebAuthn(r *http.Request) (*webauthn.WebAuthn, error) { function resolveOrigins (line 82) | func resolveOrigins(r *http.Request, settings *system_setting.PasskeySet... function resolveRPID (line 131) | func resolveRPID(r *http.Request, settings *system_setting.PasskeySettin... function hostWithoutPort (line 146) | func hostWithoutPort(host string) string { function detectScheme (line 159) | func detectScheme(r *http.Request) string { FILE: service/passkey/session.go function SaveSessionData (line 14) | func SaveSessionData(c *gin.Context, key string, data *webauthn.SessionD... function PopSessionData (line 28) | func PopSessionData(c *gin.Context, key string) (*webauthn.SessionData, ... FILE: service/passkey/user.go type WebAuthnUser (line 13) | type WebAuthnUser struct method WebAuthnID (line 22) | func (u *WebAuthnUser) WebAuthnID() []byte { method WebAuthnName (line 29) | func (u *WebAuthnUser) WebAuthnName() string { method WebAuthnDisplayName (line 40) | func (u *WebAuthnUser) WebAuthnDisplayName() string { method WebAuthnCredentials (line 51) | func (u *WebAuthnUser) WebAuthnCredentials() []webauthn.Credential { method ModelUser (line 59) | func (u *WebAuthnUser) ModelUser() *model.User { method PasskeyCredential (line 66) | func (u *WebAuthnUser) PasskeyCredential() *model.PasskeyCredential { function NewWebAuthnUser (line 18) | func NewWebAuthnUser(user *model.User, credential *model.PasskeyCredenti... FILE: service/quota.go type TokenDetails (line 27) | type TokenDetails struct type QuotaInfo (line 32) | type QuotaInfo struct function hasCustomModelRatio (line 42) | func hasCustomModelRatio(modelName string, currentRatio float64) bool { function calculateAudioQuota (line 50) | func calculateAudioQuota(info QuotaInfo) int { function PreWssConsumeQuota (line 89) | func PreWssConsumeQuota(ctx *gin.Context, relayInfo *relaycommon.RelayIn... function PostWssConsumeQuota (line 157) | func PostWssConsumeQuota(ctx *gin.Context, relayInfo *relaycommon.RelayI... function PostClaudeConsumeQuota (line 238) | func PostClaudeConsumeQuota(ctx *gin.Context, relayInfo *relaycommon.Rel... function CalcOpenRouterCacheCreateTokens (line 340) | func CalcOpenRouterCacheCreateTokens(usage dto.Usage, priceData types.Pr... function PostAudioConsumeQuota (line 361) | func PostAudioConsumeQuota(ctx *gin.Context, relayInfo *relaycommon.Rela... function PreConsumeTokenQuota (line 445) | func PreConsumeTokenQuota(relayInfo *relaycommon.RelayInfo, quota int) e... function PostConsumeQuota (line 469) | func PostConsumeQuota(relayInfo *relaycommon.RelayInfo, quota int, preCo... function checkAndSendQuotaNotify (line 515) | func checkAndSendQuotaNotify(relayInfo *relaycommon.RelayInfo, quota int... function checkAndSendSubscriptionQuotaNotify (line 563) | func checkAndSendSubscriptionQuotaNotify(relayInfo *relaycommon.RelayInf... FILE: service/sensitive.go function CheckSensitiveMessages (line 11) | func CheckSensitiveMessages(messages []dto.Message) ([]string, error) { function CheckSensitiveText (line 35) | func CheckSensitiveText(text string) (bool, []string) { function SensitiveWordContains (line 40) | func SensitiveWordContains(text string) (bool, []string) { function SensitiveWordReplace (line 52) | func SensitiveWordReplace(text string, returnImmediately bool) (bool, []... FILE: service/str.go function SundaySearch (line 14) | func SundaySearch(text string, pattern string) bool { function RemoveDuplicate (line 51) | func RemoveDuplicate(s []string) []string { function InitAc (line 63) | func InitAc(dict []string) *goahocorasick.Machine { function acKey (line 75) | func acKey(dict []string) string { function getOrBuildAC (line 98) | func getOrBuildAC(dict []string) *goahocorasick.Machine { function readRunes (line 120) | func readRunes(dict []string) [][]rune { function AcSearch (line 132) | func AcSearch(findText string, dict []string, stopImmediately bool) (boo... FILE: service/subscription_reset_task.go constant subscriptionResetTickInterval (line 18) | subscriptionResetTickInterval = 1 * time.Minute constant subscriptionResetBatchSize (line 19) | subscriptionResetBatchSize = 300 constant subscriptionCleanupInterval (line 20) | subscriptionCleanupInterval = 30 * time.Minute function StartSubscriptionQuotaResetTask (line 29) | func StartSubscriptionQuotaResetTask() { function runSubscriptionQuotaResetOnce (line 47) | func runSubscriptionQuotaResetOnce() { FILE: service/task.go function CoverTaskActionToModelName (line 9) | func CoverTaskActionToModelName(platform constant.TaskPlatform, action s... FILE: service/task_billing.go function LogTaskConsumption (line 19) | func LogTaskConsumption(c *gin.Context, info *relaycommon.RelayInfo) { function resolveTokenKey (line 69) | func resolveTokenKey(ctx context.Context, tokenId int, taskID string) st... function taskIsSubscription (line 79) | func taskIsSubscription(task *model.Task) bool { function taskAdjustFunding (line 84) | func taskAdjustFunding(task *model.Task, delta int) error { function taskAdjustTokenQuota (line 96) | func taskAdjustTokenQuota(ctx context.Context, task *model.Task, delta i... function taskBillingOther (line 116) | func taskBillingOther(task *model.Task) map[string]interface{} { function taskModelName (line 136) | func taskModelName(task *model.Task) string { function RefundTaskQuota (line 145) | func RefundTaskQuota(ctx context.Context, task *model.Task, reason strin... function RecalculateTaskQuota (line 180) | func RecalculateTaskQuota(ctx context.Context, task *model.Task, actualQ... function RecalculateTaskQuotaByTokens (line 244) | func RecalculateTaskQuotaByTokens(ctx context.Context, task *model.Task,... FILE: service/task_billing_test.go function TestMain (line 20) | func TestMain(m *testing.M) { function truncate (line 57) | func truncate(t *testing.T) { function seedUser (line 69) | func seedUser(t *testing.T, id int, quota int) { function seedToken (line 75) | func seedToken(t *testing.T, id int, userId int, key string, remainQuota... function seedSubscription (line 89) | func seedSubscription(t *testing.T, id int, userId int, amountTotal int6... function seedChannel (line 103) | func seedChannel(t *testing.T, id int) { function makeTask (line 109) | func makeTask(userId, channelId, quota, tokenId int, billingSource strin... function getUserQuota (line 140) | func getUserQuota(t *testing.T, id int) int { function getTokenRemainQuota (line 147) | func getTokenRemainQuota(t *testing.T, id int) int { function getTokenUsedQuota (line 154) | func getTokenUsedQuota(t *testing.T, id int) int { function getSubscriptionUsed (line 161) | func getSubscriptionUsed(t *testing.T, id int) int64 { function getLastLog (line 168) | func getLastLog(t *testing.T) *model.Log { function countLogs (line 178) | func countLogs(t *testing.T) int64 { function TestRefundTaskQuota_Wallet (line 189) | func TestRefundTaskQuota_Wallet(t *testing.T) { function TestRefundTaskQuota_Subscription (line 220) | func TestRefundTaskQuota_Subscription(t *testing.T) { function TestRefundTaskQuota_ZeroQuota (line 249) | func TestRefundTaskQuota_ZeroQuota(t *testing.T) { function TestRefundTaskQuota_NoToken (line 267) | func TestRefundTaskQuota_NoToken(t *testing.T) { function TestRecalculate_PositiveDelta (line 294) | func TestRecalculate_PositiveDelta(t *testing.T) { function TestRecalculate_NegativeDelta (line 327) | func TestRecalculate_NegativeDelta(t *testing.T) { function TestRecalculate_ZeroDelta (line 360) | func TestRecalculate_ZeroDelta(t *testing.T) { function TestRecalculate_ActualQuotaZero (line 380) | func TestRecalculate_ActualQuotaZero(t *testing.T) { function TestRecalculate_Subscription_NegativeDelta (line 398) | func TestRecalculate_Subscription_NegativeDelta(t *testing.T) { function simulatePollBilling (line 438) | func simulatePollBilling(ctx context.Context, task *model.Task, newStatu... function TestCASGuardedRefund_Win (line 484) | func TestCASGuardedRefund_Win(t *testing.T) { function TestCASGuardedRefund_Lose (line 516) | func TestCASGuardedRefund_Lose(t *testing.T) { function TestCASGuardedSettle_Win (line 548) | func TestCASGuardedSettle_Win(t *testing.T) { function TestNonTerminalUpdate_NoBilling (line 580) | func TestNonTerminalUpdate_NoBilling(t *testing.T) { type mockAdaptor (line 614) | type mockAdaptor struct method Init (line 618) | func (m *mockAdaptor) Init(_ *relaycommon.RelayInfo) {} method FetchTask (line 619) | func (m *mockAdaptor) FetchTask(string, string, map[string]any, string... method ParseTaskResult (line 622) | func (m *mockAdaptor) ParseTaskResult([]byte) (*relaycommon.TaskInfo, ... method AdjustBillingOnComplete (line 623) | func (m *mockAdaptor) AdjustBillingOnComplete(_ *model.Task, _ *relayc... function TestSettle_PerCallBilling_SkipsAdaptorAdjust (line 631) | func TestSettle_PerCallBilling_SkipsAdaptorAdjust(t *testing.T) { function TestSettle_PerCallBilling_SkipsTotalTokens (line 658) | func TestSettle_PerCallBilling_SkipsTotalTokens(t *testing.T) { function TestSettle_NonPerCall_AdaptorAdjustWorks (line 685) | func TestSettle_NonPerCall_AdaptorAdjustWorks(t *testing.T) { FILE: service/task_polling.go type TaskPollingAdaptor (line 25) | type TaskPollingAdaptor interface function sweepTimedOutTasks (line 41) | func sweepTimedOutTasks(ctx context.Context) { function TaskPollingLoop (line 91) | func TaskPollingLoop() { function DispatchPlatformUpdate (line 141) | func DispatchPlatformUpdate(platform constant.TaskPlatform, taskChannelM... function UpdateSunoTasks (line 155) | func UpdateSunoTasks(ctx context.Context, taskChannelM map[int][]string,... function updateSunoTasks (line 165) | func updateSunoTasks(ctx context.Context, channelId int, taskIds []strin... function taskNeedsUpdate (line 253) | func taskNeedsUpdate(oldTask *model.Task, newTask dto.SunoDataResponse) ... function UpdateVideoTasks (line 291) | func UpdateVideoTasks(ctx context.Context, platform constant.TaskPlatfor... function updateVideoTasks (line 300) | func updateVideoTasks(ctx context.Context, platform constant.TaskPlatfor... function updateVideoSingleTask (line 344) | func updateVideoSingleTask(ctx context.Context, adaptor TaskPollingAdapt... function redactVideoResponseBody (line 504) | func redactVideoResponseBody(body []byte) []byte { function truncateBase64 (line 530) | func truncateBase64(s string) string { function settleTaskBillingOnComplete (line 543) | func settleTaskBillingOnComplete(ctx context.Context, adaptor TaskPollin... FILE: service/token_counter.go function getImageToken (line 22) | func getImageToken(c *gin.Context, fileMeta *types.FileMeta, model strin... function EstimateRequestToken (line 183) | func EstimateRequestToken(c *gin.Context, meta *types.TokenCountMeta, in... function CountTokenRealtime (line 303) | func CountTokenRealtime(info *relaycommon.RelayInfo, request dto.Realtim... function CountTokenInput (line 357) | func CountTokenInput(input any, model string) int { function CountAudioTokenInput (line 377) | func CountAudioTokenInput(audioBase64 string, audioFormat string) (int, ... function CountAudioTokenOutput (line 388) | func CountAudioTokenOutput(audioBase64 string, audioFormat string) (int,... function CountTextToken (line 400) | func CountTextToken(text string, model string) int { FILE: service/token_estimator.go type Provider (line 11) | type Provider constant OpenAI (line 14) | OpenAI Provider = "openai" constant Gemini (line 15) | Gemini Provider = "gemini" constant Claude (line 16) | Claude Provider = "claude" constant Unknown (line 17) | Unknown Provider = "unknown" type multipliers (line 21) | type multipliers struct function getMultipliers (line 51) | func getMultipliers(p Provider) multipliers { function EstimateToken (line 69) | func EstimateToken(provider Provider, text string) int { function isCJK (line 151) | func isCJK(r rune) bool { function isLatinOrNumber (line 158) | func isLatinOrNumber(r rune) bool { function isEmoji (line 163) | func isEmoji(r rune) bool { function isMathSymbol (line 178) | func isMathSymbol(r rune) bool { function isURLDelim (line 205) | func isURLDelim(r rune) bool { function EstimateTokenByModel (line 216) | func EstimateTokenByModel(model, text string) int { FILE: service/tokenizer.go function InitTokenEncoders (line 20) | func InitTokenEncoders() { function getTokenEncoder (line 26) | func getTokenEncoder(model string) tokenizer.Codec { function getTokenNum (line 57) | func getTokenNum(tokenEncoder tokenizer.Codec, text string) int { FILE: service/usage_helpr.go function ResponseText2Usage (line 22) | func ResponseText2Usage(c *gin.Context, responseText string, modeName st... function ValidUsage (line 31) | func ValidUsage(usage *dto.Usage) bool { FILE: service/user_notify.go function NotifyRootUser (line 17) | func NotifyRootUser(t string, subject string, content string) { function NotifyUpstreamModelUpdateWatchers (line 25) | func NotifyUpstreamModelUpdateWatchers(subject string, content string) { function NotifyUser (line 51) | func NotifyUser(userId int, userEmail string, userSetting dto.UserSettin... function sendEmailNotify (line 108) | func sendEmailNotify(userEmail string, data dto.Notify) error { function sendBarkNotify (line 118) | func sendBarkNotify(barkURL string, data dto.Notify) error { function sendGotifyNotify (line 188) | func sendGotifyNotify(gotifyUrl string, gotifyToken string, priority int... FILE: service/violation_fee.go constant ViolationFeeCodePrefix (line 21) | ViolationFeeCodePrefix = "violation_fee." constant CSAMViolationMarker (line 22) | CSAMViolationMarker = "Failed check: SAFETY_CHECK_TYPE" constant ContentViolatesUsageMarker (line 23) | ContentViolatesUsageMarker = "Content violates usage guidelines" function IsViolationFeeCode (line 26) | func IsViolationFeeCode(code types.ErrorCode) bool { function HasCSAMViolationMarker (line 30) | func HasCSAMViolationMarker(err *types.NewAPIError) bool { function WrapAsViolationFeeGrokCSAM (line 41) | func WrapAsViolationFeeGrokCSAM(err *types.NewAPIError) *types.NewAPIErr... function NormalizeViolationFeeError (line 56) | func NormalizeViolationFeeError(err *types.NewAPIError) *types.NewAPIErr... function shouldChargeViolationFee (line 73) | func shouldChargeViolationFee(err *types.NewAPIError) bool { function calcViolationFeeQuota (line 84) | func calcViolationFeeQuota(amount, groupRatio float64) int { function ChargeViolationFeeIfNeeded (line 104) | func ChargeViolationFeeIfNeeded(ctx *gin.Context, relayInfo *relaycommon... FILE: service/webhook.go type WebhookPayload (line 19) | type WebhookPayload struct function generateSignature (line 28) | func generateSignature(secret string, payload []byte) string { function SendWebhookNotify (line 35) | func SendWebhookNotify(webhookURL string, secret string, data dto.Notify... FILE: setting/auto_group.go function ContainsAutoGroup (line 13) | func ContainsAutoGroup(group string) bool { function UpdateAutoGroupsByJsonString (line 22) | func UpdateAutoGroupsByJsonString(jsonString string) error { function AutoGroups2JsonString (line 27) | func AutoGroups2JsonString() string { function GetAutoGroups (line 35) | func GetAutoGroups() []string { FILE: setting/chat.go function UpdateChatsByJsonString (line 39) | func UpdateChatsByJsonString(jsonString string) error { function Chats2JsonString (line 44) | func Chats2JsonString() string { FILE: setting/config/config.go type ConfigManager (line 14) | type ConfigManager struct method Register (line 28) | func (cm *ConfigManager) Register(name string, config interface{}) { method Get (line 35) | func (cm *ConfigManager) Get(name string) interface{} { method LoadFromDB (line 42) | func (cm *ConfigManager) LoadFromDB(options map[string]string) error { method SaveToDB (line 71) | func (cm *ConfigManager) SaveToDB(updateFunc func(key, value string) e... method ExportAllConfigs (line 278) | func (cm *ConfigManager) ExportAllConfigs() map[string]string { function NewConfigManager (line 21) | func NewConfigManager() *ConfigManager { function configToMap (line 93) | func configToMap(config interface{}) (map[string]string, error) { function updateConfigFromMap (line 165) | func updateConfigFromMap(config interface{}, configMap map[string]string... function ConfigToMap (line 268) | func ConfigToMap(config interface{}) (map[string]string, error) { function UpdateConfigFromMap (line 273) | func UpdateConfigFromMap(config interface{}, configMap map[string]string... FILE: setting/console_setting/config.go type ConsoleSetting (line 5) | type ConsoleSetting struct function init (line 31) | func init() { function GetConsoleSetting (line 37) | func GetConsoleSetting() *ConsoleSetting { FILE: setting/console_setting/validation.go function parseJSONArray (line 25) | func parseJSONArray(jsonStr string, typeName string) ([]map[string]inter... function validateURL (line 33) | func validateURL(urlStr string, index int, itemType string) error { function checkDangerousContent (line 43) | func checkDangerousContent(content string, index int, itemType string) e... function getJSONList (line 53) | func getJSONList(jsonStr string) []map[string]interface{} { function ValidateConsoleSettings (line 62) | func ValidateConsoleSettings(settingsStr string, settingType string) err... function validateApiInfo (line 81) | func validateApiInfo(apiInfoStr string) error { function GetApiInfo (line 137) | func GetApiInfo() []map[string]interface{} { function validateAnnouncements (line 141) | func validateAnnouncements(announcementsStr string) error { function validateFAQ (line 187) | func validateFAQ(faqStr string) error { function getPublishTime (line 214) | func getPublishTime(item map[string]interface{}) time.Time { function GetAnnouncements (line 225) | func GetAnnouncements() []map[string]interface{} { function GetFAQ (line 233) | func GetFAQ() []map[string]interface{} { function validateUptimeKumaGroups (line 237) | func validateUptimeKumaGroups(groupsStr string) error { function GetUptimeKumaGroups (line 302) | func GetUptimeKumaGroups() []map[string]interface{} { FILE: setting/model_setting/claude.go type ClaudeSettings (line 17) | type ClaudeSettings struct method WriteHeaders (line 51) | func (c *ClaudeSettings) WriteHeaders(originModel string, httpHeader *... method GetDefaultMaxTokens (line 84) | func (c *ClaudeSettings) GetDefaultMaxTokens(model string) int { function init (line 37) | func init() { function GetClaudeSettings (line 43) | func GetClaudeSettings() *ClaudeSettings { function normalizeHeaderListValues (line 65) | func normalizeHeaderListValues(values []string) []string { FILE: setting/model_setting/gemini.go type GeminiSettings (line 8) | type GeminiSettings struct function init (line 43) | func init() { function GetGeminiSettings (line 49) | func GetGeminiSettings() *GeminiSettings { function GetGeminiSafetySetting (line 54) | func GetGeminiSafetySetting(key string) string { function GetGeminiVersionSetting (line 62) | func GetGeminiVersionSetting(key string) string { function IsGeminiModelSupportImagine (line 69) | func IsGeminiModelSupportImagine(model string) bool { FILE: setting/model_setting/global.go type ChatCompletionsToResponsesPolicy (line 10) | type ChatCompletionsToResponsesPolicy struct method IsChannelEnabled (line 18) | func (p ChatCompletionsToResponsesPolicy) IsChannelEnabled(channelID i... type GlobalSettings (line 35) | type GlobalSettings struct function init (line 57) | func init() { function GetGlobalSettings (line 62) | func GetGlobalSettings() *GlobalSettings { function ShouldPreserveThinkingSuffix (line 67) | func ShouldPreserveThinkingSuffix(modelName string) bool { FILE: setting/model_setting/grok.go type GrokSettings (line 6) | type GrokSettings struct function init (line 18) | func init() { function GetGrokSettings (line 22) | func GetGrokSettings() *GrokSettings { FILE: setting/model_setting/qwen.go type QwenSettings (line 10) | type QwenSettings struct function init (line 32) | func init() { function GetQwenSettings (line 38) | func GetQwenSettings() *QwenSettings { function IsSyncImageModel (line 43) | func IsSyncImageModel(model string) bool { FILE: setting/operation_setting/channel_affinity_setting.go type ChannelAffinityKeySource (line 5) | type ChannelAffinityKeySource struct type ChannelAffinityRule (line 11) | type ChannelAffinityRule struct type ChannelAffinitySetting (line 29) | type ChannelAffinitySetting struct function buildPassHeaderTemplate (line 61) | func buildPassHeaderTemplate(headers []string) map[string]interface{} { function init (line 114) | func init() { function GetChannelAffinitySetting (line 118) | func GetChannelAffinitySetting() *ChannelAffinitySetting { FILE: setting/operation_setting/checkin_setting.go type CheckinSetting (line 6) | type CheckinSetting struct function init (line 19) | func init() { function GetCheckinSetting (line 25) | func GetCheckinSetting() *CheckinSetting { function IsCheckinEnabled (line 30) | func IsCheckinEnabled() bool { function GetCheckinQuotaRange (line 35) | func GetCheckinQuotaRange() (min, max int) { FILE: setting/operation_setting/general_setting.go constant QuotaDisplayTypeUSD (line 7) | QuotaDisplayTypeUSD = "USD" constant QuotaDisplayTypeCNY (line 8) | QuotaDisplayTypeCNY = "CNY" constant QuotaDisplayTypeTokens (line 9) | QuotaDisplayTypeTokens = "TOKENS" constant QuotaDisplayTypeCustom (line 10) | QuotaDisplayTypeCustom = "CUSTOM" type GeneralSetting (line 13) | type GeneralSetting struct function init (line 35) | func init() { function GetGeneralSetting (line 40) | func GetGeneralSetting() *GeneralSetting { function IsCurrencyDisplay (line 45) | func IsCurrencyDisplay() bool { function IsCNYDisplay (line 50) | func IsCNYDisplay() bool { function GetQuotaDisplayType (line 55) | func GetQuotaDisplayType() string { function GetCurrencySymbol (line 60) | func GetCurrencySymbol() string { function GetUsdToCurrencyRate (line 77) | func GetUsdToCurrencyRate(usdToCny float64) float64 { FILE: setting/operation_setting/monitor_setting.go type MonitorSetting (line 10) | type MonitorSetting struct function init (line 21) | func init() { function GetMonitorSetting (line 26) | func GetMonitorSetting() *MonitorSetting { FILE: setting/operation_setting/operation_setting.go function AutomaticDisableKeywordsToString (line 18) | func AutomaticDisableKeywordsToString() string { function AutomaticDisableKeywordsFromString (line 22) | func AutomaticDisableKeywordsFromString(s string) { FILE: setting/operation_setting/payment_setting.go type PaymentSetting (line 5) | type PaymentSetting struct function init (line 16) | func init() { function GetPaymentSetting (line 21) | func GetPaymentSetting() *PaymentSetting { FILE: setting/operation_setting/payment_setting_old.go function UpdatePayMethodsByJsonString (line 39) | func UpdatePayMethodsByJsonString(jsonString string) error { function PayMethods2JsonString (line 44) | func PayMethods2JsonString() string { function ContainsPayMethod (line 52) | func ContainsPayMethod(method string) bool { FILE: setting/operation_setting/quota_setting.go type QuotaSetting (line 5) | type QuotaSetting struct function init (line 14) | func init() { function GetQuotaSetting (line 19) | func GetQuotaSetting() *QuotaSetting { FILE: setting/operation_setting/status_code_ranges.go type StatusCodeRange (line 12) | type StatusCodeRange struct function AutomaticDisableStatusCodesToString (line 40) | func AutomaticDisableStatusCodesToString() string { function AutomaticDisableStatusCodesFromString (line 44) | func AutomaticDisableStatusCodesFromString(s string) error { function ShouldDisableByStatusCode (line 53) | func ShouldDisableByStatusCode(code int) bool { function AutomaticRetryStatusCodesToString (line 57) | func AutomaticRetryStatusCodesToString() string { function AutomaticRetryStatusCodesFromString (line 61) | func AutomaticRetryStatusCodesFromString(s string) error { function IsAlwaysSkipRetryStatusCode (line 70) | func IsAlwaysSkipRetryStatusCode(code int) bool { function IsAlwaysSkipRetryCode (line 75) | func IsAlwaysSkipRetryCode(errorCode types.ErrorCode) bool { function ShouldRetryByStatusCode (line 80) | func ShouldRetryByStatusCode(code int) bool { function statusCodeRangesToString (line 87) | func statusCodeRangesToString(ranges []StatusCodeRange) string { function shouldMatchStatusCodeRanges (line 102) | func shouldMatchStatusCodeRanges(ranges []StatusCodeRange, code int) bool { function ParseHTTPStatusCodeRanges (line 117) | func ParseHTTPStatusCodeRanges(input string) ([]StatusCodeRange, error) { function parseHTTPStatusCodeToken (line 171) | func parseHTTPStatusCodeToken(token string) (StatusCodeRange, error) { FILE: setting/operation_setting/status_code_ranges_test.go function TestParseHTTPStatusCodeRanges_CommaSeparated (line 9) | func TestParseHTTPStatusCodeRanges_CommaSeparated(t *testing.T) { function TestParseHTTPStatusCodeRanges_MergeAndNormalize (line 19) | func TestParseHTTPStatusCodeRanges_MergeAndNormalize(t *testing.T) { function TestParseHTTPStatusCodeRanges_Invalid (line 28) | func TestParseHTTPStatusCodeRanges_Invalid(t *testing.T) { function TestParseHTTPStatusCodeRanges_NoComma_IsInvalid (line 33) | func TestParseHTTPStatusCodeRanges_NoComma_IsInvalid(t *testing.T) { function TestShouldDisableByStatusCode (line 38) | func TestShouldDisableByStatusCode(t *testing.T) { function TestShouldRetryByStatusCode (line 54) | func TestShouldRetryByStatusCode(t *testing.T) { function TestShouldRetryByStatusCode_DefaultMatchesLegacyBehavior (line 71) | func TestShouldRetryByStatusCode_DefaultMatchesLegacyBehavior(t *testing... function TestIsAlwaysSkipRetryStatusCode (line 83) | func TestIsAlwaysSkipRetryStatusCode(t *testing.T) { FILE: setting/operation_setting/token_setting.go type TokenSetting (line 6) | type TokenSetting struct function init (line 15) | func init() { function GetTokenSetting (line 21) | func GetTokenSetting() *TokenSetting { function GetMaxUserTokens (line 26) | func GetMaxUserTokens() int { FILE: setting/operation_setting/tools.go constant WebSearchPriceHigh (line 7) | WebSearchPriceHigh = 25.00 constant WebSearchPrice (line 8) | WebSearchPrice = 10.00 constant FileSearchPrice (line 10) | FileSearchPrice = 2.5 constant GPTImage1Low1024x1024 (line 14) | GPTImage1Low1024x1024 = 0.011 constant GPTImage1Low1024x1536 (line 15) | GPTImage1Low1024x1536 = 0.016 constant GPTImage1Low1536x1024 (line 16) | GPTImage1Low1536x1024 = 0.016 constant GPTImage1Medium1024x1024 (line 17) | GPTImage1Medium1024x1024 = 0.042 constant GPTImage1Medium1024x1536 (line 18) | GPTImage1Medium1024x1536 = 0.063 constant GPTImage1Medium1536x1024 (line 19) | GPTImage1Medium1536x1024 = 0.063 constant GPTImage1High1024x1024 (line 20) | GPTImage1High1024x1024 = 0.167 constant GPTImage1High1024x1536 (line 21) | GPTImage1High1024x1536 = 0.25 constant GPTImage1High1536x1024 (line 22) | GPTImage1High1536x1024 = 0.25 constant Gemini25FlashPreviewInputAudioPrice (line 27) | Gemini25FlashPreviewInputAudioPrice = 1.00 constant Gemini25FlashProductionInputAudioPrice (line 28) | Gemini25FlashProductionInputAudioPrice = 1.00 constant Gemini25FlashLitePreviewInputAudioPrice (line 29) | Gemini25FlashLitePreviewInputAudioPrice = 0.50 constant Gemini25FlashNativeAudioInputAudioPrice (line 30) | Gemini25FlashNativeAudioInputAudioPrice = 3.00 constant Gemini20FlashInputAudioPrice (line 31) | Gemini20FlashInputAudioPrice = 0.70 constant GeminiRoboticsER15InputAudioPrice (line 32) | GeminiRoboticsER15InputAudioPrice = 1.00 constant ClaudeWebSearchPrice (line 37) | ClaudeWebSearchPrice = 10.00 function GetClaudeWebSearchPricePerThousand (line 40) | func GetClaudeWebSearchPricePerThousand() float64 { function GetWebSearchPricePerThousand (line 44) | func GetWebSearchPricePerThousand(modelName string, contextSize string) ... function GetFileSearchPricePerThousand (line 63) | func GetFileSearchPricePerThousand() float64 { function GetGeminiInputAudioPricePerMillionTokens (line 67) | func GetGeminiInputAudioPricePerMillionTokens(modelName string) float64 { function GetGPTImage1PriceOnceCall (line 84) | func GetGPTImage1PriceOnceCall(quality string, size string) float64 { FILE: setting/payment_waffo.go function GetWaffoPayMethods (line 27) | func GetWaffoPayMethods() []constant.WaffoPayMethod { function SetWaffoPayMethods (line 43) | func SetWaffoPayMethods(methods []constant.WaffoPayMethod) error { function copyDefaultWaffoPayMethods (line 54) | func copyDefaultWaffoPayMethods() []constant.WaffoPayMethod { function WaffoPayMethods2JsonString (line 61) | func WaffoPayMethods2JsonString() string { FILE: setting/performance_setting/config.go type PerformanceSetting (line 9) | type PerformanceSetting struct function init (line 42) | func init() { function syncToCommon (line 50) | func syncToCommon() { function GetPerformanceSetting (line 67) | func GetPerformanceSetting() *PerformanceSetting { function UpdateAndSync (line 73) | func UpdateAndSync() { function GetCacheStats (line 78) | func GetCacheStats() common.DiskCacheStats { function ResetStats (line 83) | func ResetStats() { FILE: setting/rate_limit.go function ModelRequestRateLimitGroup2JSONString (line 19) | func ModelRequestRateLimitGroup2JSONString() string { function UpdateModelRequestRateLimitGroupByJSONString (line 30) | func UpdateModelRequestRateLimitGroupByJSONString(jsonStr string) error { function GetGroupRateLimit (line 38) | func GetGroupRateLimit(group string) (totalCount, successCount int, foun... function CheckModelRequestRateLimitGroup (line 53) | func CheckModelRequestRateLimitGroup(jsonStr string) error { FILE: setting/ratio_setting/cache_ratio.go function GetCacheRatioMap (line 103) | func GetCacheRatioMap() map[string]float64 { function CacheRatio2JSONString (line 108) | func CacheRatio2JSONString() string { function CreateCacheRatio2JSONString (line 113) | func CreateCacheRatio2JSONString() string { function UpdateCacheRatioByJSONString (line 118) | func UpdateCacheRatioByJSONString(jsonStr string) error { function UpdateCreateCacheRatioByJSONString (line 123) | func UpdateCreateCacheRatioByJSONString(jsonStr string) error { function GetCacheRatio (line 128) | func GetCacheRatio(name string) (float64, bool) { function GetCreateCacheRatio (line 136) | func GetCreateCacheRatio(name string) (float64, bool) { function GetCacheRatioCopy (line 144) | func GetCacheRatioCopy() map[string]float64 { function GetCreateCacheRatioCopy (line 148) | func GetCreateCacheRatioCopy() map[string]float64 { FILE: setting/ratio_setting/compact_suffix.go constant CompactModelSuffix (line 5) | CompactModelSuffix = "-openai-compact" constant CompactWildcardModelKey (line 6) | CompactWildcardModelKey = "*" + CompactModelSuffix function WithCompactModelSuffix (line 8) | func WithCompactModelSuffix(modelName string) string { FILE: setting/ratio_setting/expose_ratio.go function init (line 7) | func init() { function SetExposeRatioEnabled (line 11) | func SetExposeRatioEnabled(enabled bool) { function IsExposeRatioEnabled (line 15) | func IsExposeRatioEnabled() bool { FILE: setting/ratio_setting/exposed_cache.go constant exposedDataTTL (line 11) | exposedDataTTL = 30 * time.Second type exposedCache (line 13) | type exposedCache struct function InvalidateExposedDataCache (line 23) | func InvalidateExposedDataCache() { function cloneGinH (line 27) | func cloneGinH(src gin.H) gin.H { function GetExposedData (line 35) | func GetExposedData() gin.H { FILE: setting/ratio_setting/group_ratio.go type GroupRatioSetting (line 35) | type GroupRatioSetting struct function init (line 43) | func init() { function GetGroupRatioSetting (line 59) | func GetGroupRatioSetting() *GroupRatioSetting { function GetGroupRatioCopy (line 67) | func GetGroupRatioCopy() map[string]float64 { function ContainsGroupRatio (line 71) | func ContainsGroupRatio(name string) bool { function GroupRatio2JSONString (line 76) | func GroupRatio2JSONString() string { function UpdateGroupRatioByJSONString (line 80) | func UpdateGroupRatioByJSONString(jsonStr string) error { function GetGroupRatio (line 84) | func GetGroupRatio(name string) float64 { function GetGroupGroupRatio (line 93) | func GetGroupGroupRatio(userGroup, usingGroup string) (float64, bool) { function GroupGroupRatio2JSONString (line 105) | func GroupGroupRatio2JSONString() string { function UpdateGroupGroupRatioByJSONString (line 109) | func UpdateGroupGroupRatioByJSONString(jsonStr string) error { function CheckGroupRatio (line 113) | func CheckGroupRatio(jsonStr string) error { FILE: setting/ratio_setting/model_ratio.go constant USD2RMB (line 13) | USD2RMB = 7.3 constant USD (line 14) | USD = 500 constant RMB (line 15) | RMB = USD / USD2RMB function InitRatioSettings (line 337) | func InitRatioSettings() { function GetModelPriceMap (line 348) | func GetModelPriceMap() map[string]float64 { function ModelPrice2JSONString (line 352) | func ModelPrice2JSONString() string { function UpdateModelPriceByJSONString (line 356) | func UpdateModelPriceByJSONString(jsonStr string) error { function GetModelPrice (line 361) | func GetModelPrice(name string, printErr bool) (float64, bool) { function UpdateModelRatioByJSONString (line 385) | func UpdateModelRatioByJSONString(jsonStr string) error { function handleThinkingBudgetModel (line 390) | func handleThinkingBudgetModel(name, prefix, wildcard string) string { function GetModelRatio (line 397) | func GetModelRatio(name string) (float64, bool, string) { function DefaultModelRatio2JSONString (line 413) | func DefaultModelRatio2JSONString() string { function GetDefaultModelRatioMap (line 421) | func GetDefaultModelRatioMap() map[string]float64 { function GetDefaultModelPriceMap (line 425) | func GetDefaultModelPriceMap() map[string]float64 { function CompletionRatio2JSONString (line 429) | func CompletionRatio2JSONString() string { function UpdateCompletionRatioByJSONString (line 433) | func UpdateCompletionRatioByJSONString(jsonStr string) error { function GetCompletionRatio (line 437) | func GetCompletionRatio(name string) float64 { type CompletionRatioInfo (line 455) | type CompletionRatioInfo struct function GetCompletionRatioInfo (line 460) | func GetCompletionRatioInfo(name string) CompletionRatioInfo { function getHardcodedCompletionModelRatio (line 493) | func getHardcodedCompletionModelRatio(name string) (float64, bool) { function GetAudioRatio (line 617) | func GetAudioRatio(name string) float64 { function GetAudioCompletionRatio (line 625) | func GetAudioCompletionRatio(name string) float64 { function ContainsAudioRatio (line 633) | func ContainsAudioRatio(name string) bool { function ContainsAudioCompletionRatio (line 639) | func ContainsAudioCompletionRatio(name string) bool { function ModelRatio2JSONString (line 645) | func ModelRatio2JSONString() string { function ImageRatio2JSONString (line 656) | func ImageRatio2JSONString() string { function UpdateImageRatioByJSONString (line 660) | func UpdateImageRatioByJSONString(jsonStr string) error { function GetImageRatio (line 664) | func GetImageRatio(name string) (float64, bool) { function AudioRatio2JSONString (line 672) | func AudioRatio2JSONString() string { function UpdateAudioRatioByJSONString (line 676) | func UpdateAudioRatioByJSONString(jsonStr string) error { function AudioCompletionRatio2JSONString (line 680) | func AudioCompletionRatio2JSONString() string { function UpdateAudioCompletionRatioByJSONString (line 684) | func UpdateAudioCompletionRatioByJSONString(jsonStr string) error { function GetModelRatioCopy (line 688) | func GetModelRatioCopy() map[string]float64 { function GetModelPriceCopy (line 692) | func GetModelPriceCopy() map[string]float64 { function GetCompletionRatioCopy (line 696) | func GetCompletionRatioCopy() map[string]float64 { function FormatMatchingModelName (line 701) | func FormatMatchingModelName(name string) string { function GetModelRatioOrPrice (line 721) | func GetModelRatioOrPrice(model string) (float64, bool, bool) { // price... FILE: setting/reasoning/suffix.go function TrimEffortSuffix (line 12) | func TrimEffortSuffix(modelName string) (string, string, bool) { FILE: setting/sensitive.go function SensitiveWordsToString (line 22) | func SensitiveWordsToString() string { function SensitiveWordsFromString (line 26) | func SensitiveWordsFromString(s string) { function ShouldCheckPromptSensitive (line 37) | func ShouldCheckPromptSensitive() bool { FILE: setting/system_setting/discord.go type DiscordSettings (line 5) | type DiscordSettings struct function init (line 14) | func init() { function GetDiscordSettings (line 19) | func GetDiscordSettings() *DiscordSettings { FILE: setting/system_setting/fetch_setting.go type FetchSetting (line 5) | type FetchSetting struct function init (line 27) | func init() { function GetFetchSetting (line 32) | func GetFetchSetting() *FetchSetting { FILE: setting/system_setting/legal.go type LegalSettings (line 5) | type LegalSettings struct function init (line 15) | func init() { function GetLegalSettings (line 19) | func GetLegalSettings() *LegalSettings { FILE: setting/system_setting/oidc.go type OIDCSettings (line 5) | type OIDCSettings struct function init (line 18) | func init() { function GetOIDCSettings (line 23) | func GetOIDCSettings() *OIDCSettings { FILE: setting/system_setting/passkey.go type PasskeySettings (line 11) | type PasskeySettings struct function init (line 31) | func init() { function GetPasskeySettings (line 35) | func GetPasskeySettings() *PasskeySettings { FILE: setting/system_setting/system_setting_old.go function EnableWorker (line 8) | func EnableWorker() bool { FILE: setting/user_usable_group.go function GetUserUsableGroupsCopy (line 16) | func GetUserUsableGroupsCopy() map[string]string { function UserUsableGroups2JSONString (line 27) | func UserUsableGroups2JSONString() string { function UpdateUserUsableGroupsByJSONString (line 38) | func UpdateUserUsableGroupsByJSONString(jsonStr string) error { function GetUsableGroupDescription (line 46) | func GetUsableGroupDescription(groupName string) string { FILE: types/channel_error.go type ChannelError (line 3) | type ChannelError struct function NewChannelError (line 12) | func NewChannelError(channelId int, channelType int, channelName string,... FILE: types/error.go type OpenAIError (line 13) | type OpenAIError struct type ClaudeError (line 21) | type ClaudeError struct type ErrorType (line 26) | type ErrorType constant ErrorTypeNewAPIError (line 29) | ErrorTypeNewAPIError ErrorType = "new_api_error" constant ErrorTypeOpenAIError (line 30) | ErrorTypeOpenAIError ErrorType = "openai_error" constant ErrorTypeClaudeError (line 31) | ErrorTypeClaudeError ErrorType = "claude_error" constant ErrorTypeMidjourneyError (line 32) | ErrorTypeMidjourneyError ErrorType = "midjourney_error" constant ErrorTypeGeminiError (line 33) | ErrorTypeGeminiError ErrorType = "gemini_error" constant ErrorTypeRerankError (line 34) | ErrorTypeRerankError ErrorType = "rerank_error" constant ErrorTypeUpstreamError (line 35) | ErrorTypeUpstreamError ErrorType = "upstream_error" type ErrorCode (line 38) | type ErrorCode constant ErrorCodeInvalidRequest (line 41) | ErrorCodeInvalidRequest ErrorCode = "invalid_request" constant ErrorCodeSensitiveWordsDetected (line 42) | ErrorCodeSensitiveWordsDetected ErrorCode = "sensitive_words_detected" constant ErrorCodeViolationFeeGrokCSAM (line 43) | ErrorCodeViolationFeeGrokCSAM ErrorCode = "violation_fee.grok.csam" constant ErrorCodeCountTokenFailed (line 46) | ErrorCodeCountTokenFailed ErrorCode = "count_token_failed" constant ErrorCodeModelPriceError (line 47) | ErrorCodeModelPriceError ErrorCode = "model_price_error" constant ErrorCodeInvalidApiType (line 48) | ErrorCodeInvalidApiType ErrorCode = "invalid_api_type" constant ErrorCodeJsonMarshalFailed (line 49) | ErrorCodeJsonMarshalFailed ErrorCode = "json_marshal_failed" constant ErrorCodeDoRequestFailed (line 50) | ErrorCodeDoRequestFailed ErrorCode = "do_request_failed" constant ErrorCodeGetChannelFailed (line 51) | ErrorCodeGetChannelFailed ErrorCode = "get_channel_failed" constant ErrorCodeGenRelayInfoFailed (line 52) | ErrorCodeGenRelayInfoFailed ErrorCode = "gen_relay_info_failed" constant ErrorCodeChannelNoAvailableKey (line 55) | ErrorCodeChannelNoAvailableKey ErrorCode = "channel:no_available_... constant ErrorCodeChannelParamOverrideInvalid (line 56) | ErrorCodeChannelParamOverrideInvalid ErrorCode = "channel:param_overrid... constant ErrorCodeChannelHeaderOverrideInvalid (line 57) | ErrorCodeChannelHeaderOverrideInvalid ErrorCode = "channel:header_overri... constant ErrorCodeChannelModelMappedError (line 58) | ErrorCodeChannelModelMappedError ErrorCode = "channel:model_mapped_... constant ErrorCodeChannelAwsClientError (line 59) | ErrorCodeChannelAwsClientError ErrorCode = "channel:aws_client_er... constant ErrorCodeChannelInvalidKey (line 60) | ErrorCodeChannelInvalidKey ErrorCode = "channel:invalid_key" constant ErrorCodeChannelResponseTimeExceeded (line 61) | ErrorCodeChannelResponseTimeExceeded ErrorCode = "channel:response_time... constant ErrorCodeReadRequestBodyFailed (line 64) | ErrorCodeReadRequestBodyFailed ErrorCode = "read_request_body_failed" constant ErrorCodeConvertRequestFailed (line 65) | ErrorCodeConvertRequestFailed ErrorCode = "convert_request_failed" constant ErrorCodeAccessDenied (line 66) | ErrorCodeAccessDenied ErrorCode = "access_denied" constant ErrorCodeBadRequestBody (line 69) | ErrorCodeBadRequestBody ErrorCode = "bad_request_body" constant ErrorCodeReadResponseBodyFailed (line 72) | ErrorCodeReadResponseBodyFailed ErrorCode = "read_response_body_failed" constant ErrorCodeBadResponseStatusCode (line 73) | ErrorCodeBadResponseStatusCode ErrorCode = "bad_response_status_code" constant ErrorCodeBadResponse (line 74) | ErrorCodeBadResponse ErrorCode = "bad_response" constant ErrorCodeBadResponseBody (line 75) | ErrorCodeBadResponseBody ErrorCode = "bad_response_body" constant ErrorCodeEmptyResponse (line 76) | ErrorCodeEmptyResponse ErrorCode = "empty_response" constant ErrorCodeAwsInvokeError (line 77) | ErrorCodeAwsInvokeError ErrorCode = "aws_invoke_error" constant ErrorCodeModelNotFound (line 78) | ErrorCodeModelNotFound ErrorCode = "model_not_found" constant ErrorCodePromptBlocked (line 79) | ErrorCodePromptBlocked ErrorCode = "prompt_blocked" constant ErrorCodeQueryDataError (line 82) | ErrorCodeQueryDataError ErrorCode = "query_data_error" constant ErrorCodeUpdateDataError (line 83) | ErrorCodeUpdateDataError ErrorCode = "update_data_error" constant ErrorCodeInsufficientUserQuota (line 86) | ErrorCodeInsufficientUserQuota ErrorCode = "insufficient_user_quota" constant ErrorCodePreConsumeTokenQuotaFailed (line 87) | ErrorCodePreConsumeTokenQuotaFailed ErrorCode = "pre_consume_token_quota... type NewAPIError (line 90) | type NewAPIError struct method Unwrap (line 102) | func (e *NewAPIError) Unwrap() error { method GetErrorCode (line 109) | func (e *NewAPIError) GetErrorCode() ErrorCode { method GetErrorType (line 116) | func (e *NewAPIError) GetErrorType() ErrorType { method Error (line 123) | func (e *NewAPIError) Error() string { method ErrorWithStatusCode (line 134) | func (e *NewAPIError) ErrorWithStatusCode() string { method MaskSensitiveError (line 148) | func (e *NewAPIError) MaskSensitiveError() string { method MaskSensitiveErrorWithStatusCode (line 162) | func (e *NewAPIError) MaskSensitiveErrorWithStatusCode() string { method SetMessage (line 176) | func (e *NewAPIError) SetMessage(message string) { method ToOpenAIError (line 180) | func (e *NewAPIError) ToOpenAIError() OpenAIError { method ToClaudeError (line 213) | func (e *NewAPIError) ToClaudeError() ClaudeError { type NewAPIErrorOptions (line 242) | type NewAPIErrorOptions function NewError (line 244) | func NewError(err error, errorCode ErrorCode, ops ...NewAPIErrorOptions)... function NewOpenAIError (line 266) | func NewOpenAIError(err error, errorCode ErrorCode, statusCode int, ops ... function InitOpenAIError (line 291) | func InitOpenAIError(errorCode ErrorCode, statusCode int, ops ...NewAPIE... function NewErrorWithStatusCode (line 299) | func NewErrorWithStatusCode(err error, errorCode ErrorCode, statusCode i... function WithOpenAIError (line 317) | func WithOpenAIError(openAIError OpenAIError, statusCode int, ops ...New... function WithClaudeError (line 349) | func WithClaudeError(claudeError ClaudeError, statusCode int, ops ...New... function IsChannelError (line 366) | func IsChannelError(err *NewAPIError) bool { function IsSkipRetryError (line 373) | func IsSkipRetryError(err *NewAPIError) bool { function ErrOptionWithSkipRetry (line 381) | func ErrOptionWithSkipRetry() NewAPIErrorOptions { function ErrOptionWithNoRecordErrorLog (line 387) | func ErrOptionWithNoRecordErrorLog() NewAPIErrorOptions { function ErrOptionWithHideErrMsg (line 393) | func ErrOptionWithHideErrMsg(replaceStr string) NewAPIErrorOptions { function IsRecordErrorLog (line 402) | func IsRecordErrorLog(e *NewAPIError) bool { FILE: types/file_data.go type LocalFileData (line 3) | type LocalFileData struct FILE: types/file_source.go type FileSourceType (line 11) | type FileSourceType constant FileSourceTypeURL (line 14) | FileSourceTypeURL FileSourceType = "url" constant FileSourceTypeBase64 (line 15) | FileSourceTypeBase64 FileSourceType = "base64" type FileSource (line 20) | type FileSource struct method Mu (line 34) | func (f *FileSource) Mu() *sync.Mutex { method IsURL (line 157) | func (f *FileSource) IsURL() bool { method IsBase64 (line 162) | func (f *FileSource) IsBase64() bool { method GetIdentifier (line 167) | func (f *FileSource) GetIdentifier() string { method GetRawData (line 181) | func (f *FileSource) GetRawData() string { method SetCache (line 189) | func (f *FileSource) SetCache(data *CachedFileData) { method IsRegistered (line 195) | func (f *FileSource) IsRegistered() bool { method SetRegistered (line 200) | func (f *FileSource) SetRegistered(registered bool) { method GetCache (line 205) | func (f *FileSource) GetCache() *CachedFileData { method HasCache (line 210) | func (f *FileSource) HasCache() bool { method ClearCache (line 215) | func (f *FileSource) ClearCache() { method ClearRawData (line 226) | func (f *FileSource) ClearRawData() { type CachedFileData (line 40) | type CachedFileData struct method GetBase64Data (line 80) | func (c *CachedFileData) GetBase64Data() (string, error) { method SetBase64Data (line 101) | func (c *CachedFileData) SetBase64Data(data string) { method IsDisk (line 108) | func (c *CachedFileData) IsDisk() bool { method Close (line 113) | func (c *CachedFileData) Close() error { function NewMemoryCachedData (line 60) | func NewMemoryCachedData(base64Data string, mimeType string, size int64)... function NewDiskCachedData (line 70) | func NewDiskCachedData(diskPath string, mimeType string, size int64) *Ca... function NewURLFileSource (line 140) | func NewURLFileSource(url string) *FileSource { function NewBase64FileSource (line 148) | func NewBase64FileSource(base64Data string, mimeType string) *FileSource { FILE: types/price_data.go type GroupRatioInfo (line 5) | type GroupRatioInfo struct type PriceData (line 11) | type PriceData struct method AddOtherRatio (line 30) | func (p *PriceData) AddOtherRatio(key string, ratio float64) { method ToSetting (line 40) | func (p *PriceData) ToSetting() string { FILE: types/relay_format.go type RelayFormat (line 3) | type RelayFormat constant RelayFormatOpenAI (line 6) | RelayFormatOpenAI RelayFormat = "openai" constant RelayFormatClaude (line 7) | RelayFormatClaude = "claude" constant RelayFormatGemini (line 8) | RelayFormatGemini = "gemini" constant RelayFormatOpenAIResponses (line 9) | RelayFormatOpenAIResponses = "openai_responses" constant RelayFormatOpenAIResponsesCompaction (line 10) | RelayFormatOpenAIResponsesCompaction = "openai_responses_com... constant RelayFormatOpenAIAudio (line 11) | RelayFormatOpenAIAudio = "openai_audio" constant RelayFormatOpenAIImage (line 12) | RelayFormatOpenAIImage = "openai_image" constant RelayFormatOpenAIRealtime (line 13) | RelayFormatOpenAIRealtime = "openai_realtime" constant RelayFormatRerank (line 14) | RelayFormatRerank = "rerank" constant RelayFormatEmbedding (line 15) | RelayFormatEmbedding = "embedding" constant RelayFormatTask (line 17) | RelayFormatTask = "task" constant RelayFormatMjProxy (line 18) | RelayFormatMjProxy = "mj_proxy" FILE: types/request_meta.go type FileType (line 3) | type FileType constant FileTypeImage (line 6) | FileTypeImage FileType = "image" constant FileTypeAudio (line 7) | FileTypeAudio FileType = "audio" constant FileTypeVideo (line 8) | FileTypeVideo FileType = "video" constant FileTypeFile (line 9) | FileTypeFile FileType = "file" type TokenType (line 12) | type TokenType constant TokenTypeTextNumber (line 15) | TokenTypeTextNumber TokenType = "text_number" constant TokenTypeTokenizer (line 16) | TokenTypeTokenizer TokenType = "tokenizer" constant TokenTypeImage (line 17) | TokenTypeImage TokenType = "image" type TokenCountMeta (line 20) | type TokenCountMeta struct type FileMeta (line 33) | type FileMeta struct method GetIdentifier (line 58) | func (f *FileMeta) GetIdentifier() string { method IsURL (line 66) | func (f *FileMeta) IsURL() bool { method GetRawData (line 72) | func (f *FileMeta) GetRawData() string { function NewFileMeta (line 41) | func NewFileMeta(fileType FileType, source *FileSource) *FileMeta { function NewImageFileMeta (line 49) | func NewImageFileMeta(source *FileSource, detail string) *FileMeta { type RequestMeta (line 79) | type RequestMeta struct FILE: types/rw_map.go type RWMap (line 9) | type RWMap struct method UnmarshalJSON (line 14) | func (m *RWMap[K, V]) UnmarshalJSON(b []byte) error { method MarshalJSON (line 21) | func (m *RWMap[K, V]) MarshalJSON() ([]byte, error) { function NewRWMap (line 27) | func NewRWMap[K comparable, V any]() *RWMap[K, V] { method Get (line 33) | func (m *RWMap[K, V]) Get(key K) (V, bool) { method Set (line 40) | func (m *RWMap[K, V]) Set(key K, value V) { method AddAll (line 46) | func (m *RWMap[K, V]) AddAll(other map[K]V) { method Clear (line 54) | func (m *RWMap[K, V]) Clear() { method ReadAll (line 61) | func (m *RWMap[K, V]) ReadAll() map[K]V { method Len (line 71) | func (m *RWMap[K, V]) Len() int { function LoadFromJsonString (line 77) | func LoadFromJsonString[K comparable, V any](m *RWMap[K, V], jsonStr str... function LoadFromJsonStringWithCallback (line 85) | func LoadFromJsonStringWithCallback[K comparable, V any](m *RWMap[K, V],... method MarshalJSONString (line 97) | func (m *RWMap[K, V]) MarshalJSONString() string { FILE: types/set.go type Set (line 3) | type Set struct function NewSet (line 8) | func NewSet[T comparable]() *Set[T] { method Add (line 14) | func (s *Set[T]) Add(item T) { method Remove (line 19) | func (s *Set[T]) Remove(item T) { method Contains (line 24) | func (s *Set[T]) Contains(item T) bool { method Len (line 30) | func (s *Set[T]) Len() int { method Items (line 36) | func (s *Set[T]) Items() []T { FILE: web/src/App.jsx function DynamicOAuth2Callback (line 59) | function DynamicOAuth2Callback() { function App (line 64) | function App() { FILE: web/src/components/auth/LoginForm.jsx function handleChange (line 214) | function handleChange(name, value) { function handleSubmit (line 218) | async function handleSubmit(e) { FILE: web/src/components/auth/PasswordResetConfirm.jsx function handleSubmit (line 83) | async function handleSubmit(e) { FILE: web/src/components/auth/PasswordResetForm.jsx function handleChange (line 78) | function handleChange(value) { function handleSubmit (line 82) | async function handleSubmit(e) { FILE: web/src/components/auth/RegisterForm.jsx function handleChange (line 214) | function handleChange(name, value) { function handleSubmit (line 218) | async function handleSubmit(e) { FILE: web/src/components/common/logo/LinuxDoIcon.jsx function CustomIcon (line 24) | function CustomIcon() { FILE: web/src/components/common/logo/OIDCIcon.jsx function CustomIcon (line 24) | function CustomIcon() { FILE: web/src/components/common/logo/WeChatIcon.jsx function CustomIcon (line 24) | function CustomIcon() { FILE: web/src/components/common/markdown/MarkdownRenderer.jsx function Mermaid (line 45) | function Mermaid(props) { function SandboxedHtmlPreview (line 96) | function SandboxedHtmlPreview({ code }) { function PreCode (line 139) | function PreCode(props) { function CustomCode (line 280) | function CustomCode(props) { function escapeBrackets (line 343) | function escapeBrackets(text) { function tryWrapHtmlCode (line 361) | function tryWrapHtmlCode(text) { function _MarkdownContent (line 381) | function _MarkdownContent(props) { function MarkdownRenderer (line 637) | function MarkdownRenderer(props) { FILE: web/src/components/common/ui/RenderUtils.jsx function renderLimitedItems (line 26) | function renderLimitedItems({ items, renderItem, maxDisplay = 3 }) { FILE: web/src/components/playground/CodeViewer.jsx constant PERFORMANCE_CONFIG (line 26) | const PERFORMANCE_CONFIG = { FILE: web/src/components/playground/configStorage.js constant MESSAGES_STORAGE_KEY (line 25) | const MESSAGES_STORAGE_KEY = 'playground_messages'; FILE: web/src/components/settings/ChannelSelectorModal.jsx constant OFFICIAL_RATIO_PRESET_ID (line 38) | const OFFICIAL_RATIO_PRESET_ID = -100; constant MODELS_DEV_PRESET_ID (line 39) | const MODELS_DEV_PRESET_ID = -101; constant OFFICIAL_RATIO_PRESET_NAME (line 40) | const OFFICIAL_RATIO_PRESET_NAME = '官方倍率预设'; constant MODELS_DEV_PRESET_NAME (line 41) | const MODELS_DEV_PRESET_NAME = 'models.dev 价格预设'; constant OFFICIAL_RATIO_PRESET_BASE_URL (line 42) | const OFFICIAL_RATIO_PRESET_BASE_URL = 'https://basellm.github.io'; constant MODELS_DEV_PRESET_BASE_URL (line 43) | const MODELS_DEV_PRESET_BASE_URL = 'https://models.dev'; FILE: web/src/components/settings/ChatsSetting.jsx function onRefresh (line 55) | async function onRefresh() { FILE: web/src/components/settings/CustomOAuthSetting.jsx constant OAUTH_PRESETS (line 49) | const OAUTH_PRESETS = { constant OAUTH_PRESET_ICONS (line 129) | const OAUTH_PRESET_ICONS = { constant PRESET_RESET_VALUES (line 141) | const PRESET_RESET_VALUES = { constant DISCOVERY_FIELD_LABELS (line 159) | const DISCOVERY_FIELD_LABELS = { constant ACCESS_POLICY_TEMPLATES (line 170) | const ACCESS_POLICY_TEMPLATES = { constant ACCESS_DENIED_TEMPLATES (line 187) | const ACCESS_DENIED_TEMPLATES = { FILE: web/src/components/settings/DashboardSetting.jsx function onRefresh (line 75) | async function onRefresh() { FILE: web/src/components/settings/DrawingSetting.jsx function onRefresh (line 57) | async function onRefresh() { FILE: web/src/components/settings/HttpStatusCodeRulesInput.jsx function HttpStatusCodeRulesInput (line 23) | function HttpStatusCodeRulesInput(props) { FILE: web/src/components/settings/ModelDeploymentSetting.jsx function onRefresh (line 58) | async function onRefresh() { FILE: web/src/components/settings/ModelSetting.jsx function onRefresh (line 92) | async function onRefresh() { FILE: web/src/components/settings/OperationSetting.jsx function onRefresh (line 106) | async function onRefresh() { FILE: web/src/components/settings/OtherSetting.jsx constant LEGAL_USER_AGREEMENT_KEY (line 37) | const LEGAL_USER_AGREEMENT_KEY = 'legal.user_agreement'; constant LEGAL_PRIVACY_POLICY_KEY (line 38) | const LEGAL_PRIVACY_POLICY_KEY = 'legal.privacy_policy'; FILE: web/src/components/settings/PaymentSetting.jsx function onRefresh (line 117) | async function onRefresh() { FILE: web/src/components/settings/PerformanceSetting.jsx function onRefresh (line 53) | async function onRefresh() { FILE: web/src/components/settings/RateLimitSetting.jsx function onRefresh (line 61) | async function onRefresh() { FILE: web/src/components/table/channels/modals/EditChannelModal.jsx constant MODEL_MAPPING_EXAMPLE (line 89) | const MODEL_MAPPING_EXAMPLE = { constant STATUS_CODE_MAPPING_EXAMPLE (line 93) | const STATUS_CODE_MAPPING_EXAMPLE = { constant REGION_EXAMPLE (line 97) | const REGION_EXAMPLE = { constant UPSTREAM_DETECTED_MODEL_PREVIEW_LIMIT (line 103) | const UPSTREAM_DETECTED_MODEL_PREVIEW_LIMIT = 8; constant PARAM_OVERRIDE_LEGACY_TEMPLATE (line 105) | const PARAM_OVERRIDE_LEGACY_TEMPLATE = { constant PARAM_OVERRIDE_OPERATIONS_TEMPLATE (line 109) | const PARAM_OVERRIDE_OPERATIONS_TEMPLATE = { constant MODEL_FETCHABLE_TYPES (line 128) | const MODEL_FETCHABLE_TYPES = new Set([ function type2secretPrompt (line 132) | function type2secretPrompt(type) { FILE: web/src/components/table/channels/modals/EditTagModal.jsx constant MODEL_MAPPING_EXAMPLE (line 55) | const MODEL_MAPPING_EXAMPLE = { FILE: web/src/components/table/channels/modals/OllamaModelModal.jsx constant CHANNEL_TYPE_OLLAMA (line 56) | const CHANNEL_TYPE_OLLAMA = 4; FILE: web/src/components/table/channels/modals/ParamOverrideEditorModal.jsx constant OPERATION_MODE_OPTIONS (line 46) | const OPERATION_MODE_OPTIONS = [ constant OPERATION_MODE_VALUES (line 72) | const OPERATION_MODE_VALUES = new Set( constant CONDITION_MODE_OPTIONS (line 76) | const CONDITION_MODE_OPTIONS = [ constant CONDITION_MODE_VALUES (line 87) | const CONDITION_MODE_VALUES = new Set( constant MODE_META (line 91) | const MODE_META = { constant VALUE_REQUIRED_MODES (line 117) | const VALUE_REQUIRED_MODES = new Set([ constant FROM_REQUIRED_MODES (line 128) | const FROM_REQUIRED_MODES = new Set([ constant TO_REQUIRED_MODES (line 138) | const TO_REQUIRED_MODES = new Set([ constant MODE_DESCRIPTIONS (line 146) | const MODE_DESCRIPTIONS = { constant HEADER_VALUE_JSONC_EXAMPLE (line 233) | const HEADER_VALUE_JSONC_EXAMPLE = `{ constant SYNC_TARGET_TYPE_OPTIONS (line 273) | const SYNC_TARGET_TYPE_OPTIONS = [ constant LEGACY_TEMPLATE (line 278) | const LEGACY_TEMPLATE = { constant OPERATION_TEMPLATE (line 283) | const OPERATION_TEMPLATE = { constant HEADER_PASSTHROUGH_TEMPLATE (line 302) | const HEADER_PASSTHROUGH_TEMPLATE = { constant GEMINI_IMAGE_4K_TEMPLATE (line 313) | const GEMINI_IMAGE_4K_TEMPLATE = { constant AWS_BEDROCK_ANTHROPIC_COMPAT_TEMPLATE (line 343) | const AWS_BEDROCK_ANTHROPIC_COMPAT_TEMPLATE = { constant TEMPLATE_GROUP_OPTIONS (line 390) | const TEMPLATE_GROUP_OPTIONS = [ constant TEMPLATE_PRESET_CONFIG (line 395) | const TEMPLATE_PRESET_CONFIG = { constant FIELD_GUIDE_TARGET_OPTIONS (line 440) | const FIELD_GUIDE_TARGET_OPTIONS = [ constant BUILTIN_FIELD_SECTIONS (line 446) | const BUILTIN_FIELD_SECTIONS = [ constant OPERATION_MODE_LABEL_MAP (line 489) | const OPERATION_MODE_LABEL_MAP = OPERATION_MODE_OPTIONS.reduce((acc, ite... FILE: web/src/components/table/channels/modals/statusCodeRiskGuard.js constant NON_REDIRECTABLE_STATUS_CODES (line 1) | const NON_REDIRECTABLE_STATUS_CODES = new Set([504, 524]); constant STATUS_CODE_RISK_I18N_KEYS (line 3) | const STATUS_CODE_RISK_I18N_KEYS = { constant STATUS_CODE_RISK_CHECKLIST_KEYS (line 14) | const STATUS_CODE_RISK_CHECKLIST_KEYS = [ function parseStatusCodeKey (line 21) | function parseStatusCodeKey(rawKey) { function parseStatusCodeMappingTarget (line 32) | function parseStatusCodeMappingTarget(rawValue) { function collectInvalidStatusCodeEntries (line 47) | function collectInvalidStatusCodeEntries(statusCodeMappingStr) { function collectDisallowedStatusCodeRedirects (line 78) | function collectDisallowedStatusCodeRedirects(statusCodeMappingStr) { function collectNewDisallowedStatusCodeRedirects (line 116) | function collectNewDisallowedStatusCodeRedirects( FILE: web/src/components/table/mj-logs/MjLogsColumnDefs.jsx function renderType (line 69) | function renderType(type, t) { function renderCode (line 196) | function renderCode(code, t) { function renderStatus (line 235) | function renderStatus(type, t) { function renderDuration (line 302) | function renderDuration(submit_time, finishTime, t) { FILE: web/src/components/table/model-deployments/DeploymentsColumnDefs.jsx constant STATUS_TAG_CONFIG (line 48) | const STATUS_TAG_CONFIG = { constant DEFAULT_STATUS_CONFIG (line 101) | const DEFAULT_STATUS_CONFIG = { FILE: web/src/components/table/model-deployments/modals/CreateDeploymentModal.jsx constant BUILTIN_IMAGE (line 54) | const BUILTIN_IMAGE = 'ollama/ollama:latest'; constant DEFAULT_TRAFFIC_PORT (line 55) | const DEFAULT_TRAFFIC_PORT = 11434; FILE: web/src/components/table/model-deployments/modals/ViewLogsModal.jsx constant ALL_CONTAINERS (line 57) | const ALL_CONTAINERS = '__all__'; FILE: web/src/components/table/model-pricing/layout/header/PricingVendorIntro.jsx constant CONFIG (line 34) | const CONFIG = { constant THEME_COLORS (line 40) | const THEME_COLORS = { constant COMPONENT_STYLES (line 51) | const COMPONENT_STYLES = { constant CONTENT_TEXTS (line 64) | const CONTENT_TEXTS = { FILE: web/src/components/table/model-pricing/layout/header/PricingVendorIntroSkeleton.jsx constant THEME_COLORS (line 23) | const THEME_COLORS = { constant SIZES (line 40) | const SIZES = { constant SKELETON_STYLES (line 49) | const SKELETON_STYLES = { FILE: web/src/components/table/model-pricing/modal/components/ModelHeader.jsx constant CARD_STYLES (line 26) | const CARD_STYLES = { FILE: web/src/components/table/model-pricing/view/card/PricingCardView.jsx constant CARD_STYLES (line 48) | const CARD_STYLES = { FILE: web/src/components/table/model-pricing/view/table/PricingTableColumns.jsx function renderQuotaType (line 36) | function renderQuotaType(type, t) { function renderSupportedEndpoints (line 89) | function renderSupportedEndpoints(endpoints) { FILE: web/src/components/table/models/ModelsColumnDefs.jsx function renderTimestamp (line 42) | function renderTimestamp(timestamp) { FILE: web/src/components/table/models/components/SelectionNotification.jsx constant NOTICE_ID (line 24) | const NOTICE_ID = 'models-batch-actions'; FILE: web/src/components/table/models/index.jsx constant MARKETPLACE_DISPLAY_NOTICE_STORAGE_KEY (line 34) | const MARKETPLACE_DISPLAY_NOTICE_STORAGE_KEY = FILE: web/src/components/table/models/modals/EditModelModal.jsx constant ENDPOINT_TEMPLATE (line 45) | const ENDPOINT_TEMPLATE = { FILE: web/src/components/table/models/modals/EditPrefillGroupModal.jsx constant ENDPOINT_TEMPLATE (line 43) | const ENDPOINT_TEMPLATE = { FILE: web/src/components/table/models/modals/UpstreamConflictModal.jsx constant FIELD_LABELS (line 38) | const FIELD_LABELS = { constant FIELD_KEYS (line 46) | const FIELD_KEYS = Object.keys(FIELD_LABELS); FILE: web/src/components/table/subscriptions/SubscriptionsColumnDefs.jsx function formatDuration (line 37) | function formatDuration(plan, t) { function formatResetPeriod (line 52) | function formatResetPeriod(plan, t) { FILE: web/src/components/table/task-logs/TaskLogsColumnDefs.jsx function renderDuration (line 80) | function renderDuration(submit_time, finishTime) { FILE: web/src/components/table/tokens/TokensColumnDefs.jsx function renderTimestamp (line 59) | function renderTimestamp(timestamp) { FILE: web/src/components/table/tokens/index.jsx function TokensPage (line 46) | function TokensPage() { FILE: web/src/components/table/tokens/modals/CCSwitchModal.jsx constant APP_CONFIGS (line 32) | const APP_CONFIGS = { function getServerAddress (line 55) | function getServerAddress() { function buildCCSwitchURL (line 66) | function buildCCSwitchURL(app, name, models, apiKey) { function CCSwitchModal (line 83) | function CCSwitchModal({ FILE: web/src/components/table/usage-logs/UsageLogsColumnDefs.jsx function formatRatio (line 58) | function formatRatio(ratio) { function buildChannelAffinityTooltip (line 68) | function buildChannelAffinityTooltip(affinity, t) { function renderType (line 97) | function renderType(type, t) { function renderIsStream (line 144) | function renderIsStream(bool, t) { function renderUseTime (line 160) | function renderUseTime(type, t) { function renderFirstUseTime (line 186) | function renderFirstUseTime(type, t) { function renderBillingTag (line 213) | function renderBillingTag(record, t) { function renderModelName (line 225) | function renderModelName(record, copyText, t) { function toTokenNumber (line 288) | function toTokenNumber(value) { function formatTokenCount (line 296) | function formatTokenCount(value) { function getPromptCacheSummary (line 300) | function getPromptCacheSummary(other) { function normalizeDetailText (line 326) | function normalizeDetailText(detail) { function getUsageLogGroupSummary (line 332) | function getUsageLogGroupSummary(groupRatio, userGroupRatio, t) { function renderCompactDetailSummary (line 343) | function renderCompactDetailSummary(summarySegments) { function getUsageLogDetailSummary (line 380) | function getUsageLogDetailSummary(record, text, billingDisplayMode, t) { FILE: web/src/components/table/usage-logs/modals/ChannelAffinityUsageCacheModal.jsx function formatRate (line 26) | function formatRate(hit, total) { function formatTokenRate (line 33) | function formatTokenRate(n, d) { function formatCachedTokenRate (line 42) | function formatCachedTokenRate(cachedTokens, promptTokens, mode) { function hasTextValue (line 53) | function hasTextValue(value) { FILE: web/src/components/table/users/modals/UserSubscriptionsModal.jsx function formatTs (line 43) | function formatTs(ts) { function renderStatusTag (line 48) | function renderStatusTag(sub, t) { FILE: web/src/components/topup/SubscriptionPlansCard.jsx function getEpayMethods (line 45) | function getEpayMethods(payMethods = []) { function submitEpayForm (line 52) | function submitEpayForm({ url, params }) { FILE: web/src/components/topup/modals/TopupHistoryModal.jsx constant STATUS_CONFIG (line 43) | const STATUS_CONFIG = { constant PAYMENT_METHOD_MAP (line 51) | const PAYMENT_METHOD_MAP = { FILE: web/src/constants/channel-affinity-template.constants.js constant CODEX_CLI_HEADER_PASSTHROUGH_HEADERS (line 30) | const CODEX_CLI_HEADER_PASSTHROUGH_HEADERS = [ constant CLAUDE_CLI_HEADER_PASSTHROUGH_HEADERS (line 38) | const CLAUDE_CLI_HEADER_PASSTHROUGH_HEADERS = [ constant CODEX_CLI_HEADER_PASSTHROUGH_TEMPLATE (line 54) | const CODEX_CLI_HEADER_PASSTHROUGH_TEMPLATE = buildPassHeadersTemplate( constant CLAUDE_CLI_HEADER_PASSTHROUGH_TEMPLATE (line 58) | const CLAUDE_CLI_HEADER_PASSTHROUGH_TEMPLATE = buildPassHeadersTemplate( constant CHANNEL_AFFINITY_RULE_TEMPLATES (line 62) | const CHANNEL_AFFINITY_RULE_TEMPLATES = { FILE: web/src/constants/channel.constants.js constant CHANNEL_OPTIONS (line 20) | const CHANNEL_OPTIONS = [ constant MODEL_FETCHABLE_CHANNEL_TYPES (line 195) | const MODEL_FETCHABLE_CHANNEL_TYPES = new Set([ constant MODEL_TABLE_PAGE_SIZE (line 199) | const MODEL_TABLE_PAGE_SIZE = 10; FILE: web/src/constants/common.constant.js constant ITEMS_PER_PAGE (line 20) | const ITEMS_PER_PAGE = 10; constant DEFAULT_ENDPOINT (line 22) | const DEFAULT_ENDPOINT = '/api/ratio_config'; constant TABLE_COMPACT_MODES_KEY (line 24) | const TABLE_COMPACT_MODES_KEY = 'table_compact_modes'; constant API_ENDPOINTS (line 26) | const API_ENDPOINTS = [ constant TASK_ACTION_GENERATE (line 42) | const TASK_ACTION_GENERATE = 'generate'; constant TASK_ACTION_TEXT_GENERATE (line 43) | const TASK_ACTION_TEXT_GENERATE = 'textGenerate'; constant TASK_ACTION_FIRST_TAIL_GENERATE (line 44) | const TASK_ACTION_FIRST_TAIL_GENERATE = 'firstTailGenerate'; constant TASK_ACTION_REFERENCE_GENERATE (line 45) | const TASK_ACTION_REFERENCE_GENERATE = 'referenceGenerate'; constant TASK_ACTION_REMIX_GENERATE (line 46) | const TASK_ACTION_REMIX_GENERATE = 'remixGenerate'; FILE: web/src/constants/console.constants.js constant DATE_RANGE_PRESETS (line 23) | const DATE_RANGE_PRESETS = [ FILE: web/src/constants/dashboard.constants.js constant CHART_CONFIG (line 21) | const CHART_CONFIG = { mode: 'desktop-browser' }; constant CARD_PROPS (line 23) | const CARD_PROPS = { constant FORM_FIELD_PROPS (line 29) | const FORM_FIELD_PROPS = { constant ICON_BUTTON_CLASS (line 34) | const ICON_BUTTON_CLASS = 'text-white hover:bg-opacity-80 !rounded-full'; constant FLEX_CENTER_GAP2 (line 35) | const FLEX_CENTER_GAP2 = 'flex items-center gap-2'; constant ILLUSTRATION_SIZE (line 37) | const ILLUSTRATION_SIZE = { width: 96, height: 96 }; constant TIME_OPTIONS (line 40) | const TIME_OPTIONS = [ constant DEFAULT_TIME_INTERVALS (line 46) | const DEFAULT_TIME_INTERVALS = { constant DEFAULT_TIME_RANGE (line 53) | const DEFAULT_TIME_RANGE = { constant DEFAULT_CHART_SPECS (line 60) | const DEFAULT_CHART_SPECS = { constant ANNOUNCEMENT_LEGEND_DATA (line 121) | const ANNOUNCEMENT_LEGEND_DATA = [ constant UPTIME_STATUS_MAP (line 130) | const UPTIME_STATUS_MAP = { constant STORAGE_KEYS (line 138) | const STORAGE_KEYS = { constant DEFAULTS (line 144) | const DEFAULTS = { FILE: web/src/constants/playground.constants.js constant MESSAGE_STATUS (line 20) | const MESSAGE_STATUS = { constant MESSAGE_ROLES (line 27) | const MESSAGE_ROLES = { constant DEFAULT_MESSAGES (line 52) | const DEFAULT_MESSAGES = [ constant DEBUG_TABS (line 70) | const DEBUG_TABS = { constant API_ENDPOINTS (line 77) | const API_ENDPOINTS = { constant DEFAULT_CONFIG (line 84) | const DEFAULT_CONFIG = { constant THINK_TAG_REGEX (line 113) | const THINK_TAG_REGEX = /([\s\S]*?)<\/think>/g; constant ERROR_MESSAGES (line 116) | const ERROR_MESSAGES = { constant STORAGE_KEYS (line 128) | const STORAGE_KEYS = { FILE: web/src/constants/redemption.constants.js constant REDEMPTION_STATUS (line 20) | const REDEMPTION_STATUS = { constant REDEMPTION_STATUS_MAP (line 27) | const REDEMPTION_STATUS_MAP = { constant REDEMPTION_ACTIONS (line 43) | const REDEMPTION_ACTIONS = { FILE: web/src/helpers/api.js constant API (line 29) | let API = axios.create({ function redirectToOAuthUrl (line 40) | function redirectToOAuthUrl(url, options = {}) { function patchAPIInstance (line 53) | function patchAPIInstance(instance) { function updateAPI (line 83) | function updateAPI() { function getOAuthState (line 232) | async function getOAuthState() { function prepareOAuthState (line 248) | async function prepareOAuthState(options = {}) { function onDiscordOAuthClicked (line 260) | async function onDiscordOAuthClicked(client_id, options = {}) { function onOIDCClicked (line 271) | async function onOIDCClicked( function onGitHubOAuthClicked (line 288) | async function onGitHubOAuthClicked(github_client_id, options = {}) { function onLinuxDOOAuthClicked (line 296) | async function onLinuxDOOAuthClicked( function onCustomOAuthClicked (line 317) | async function onCustomOAuthClicked(provider, options = {}) { function loadChannelModels (line 360) | async function loadChannelModels() { function getChannelModels (line 370) | function getChannelModels(type) { FILE: web/src/helpers/auth.jsx function authHeader (line 24) | function authHeader() { function PrivateRoute (line 45) | function PrivateRoute({ children }) { function AdminRoute (line 52) | function AdminRoute({ children }) { FILE: web/src/helpers/data.js function setStatusData (line 20) | function setStatusData(data) { function setUserData (line 59) | function setUserData(data) { FILE: web/src/helpers/log.js function getLogOther (line 20) | function getLogOther(otherStr) { FILE: web/src/helpers/passkey.js function base64UrlToBuffer (line 19) | function base64UrlToBuffer(base64url) { function bufferToBase64Url (line 32) | function bufferToBase64Url(buffer) { function prepareCredentialCreationOptions (line 46) | function prepareCredentialCreationOptions(payload) { function prepareCredentialRequestOptions (line 81) | function prepareCredentialRequestOptions(payload) { function buildRegistrationResult (line 105) | function buildRegistrationResult(credential) { function buildAssertionResult (line 128) | function buildAssertionResult(assertion) { function isPasskeySupported (line 150) | async function isPasskeySupported() { FILE: web/src/helpers/render.jsx function getLucideIcon (line 106) | function getLucideIcon(key, selected = false) { function getChannelIcon (line 326) | function getChannelIcon(channelType) { function getLobeHubIcon (line 423) | function getLobeHubIcon(iconName, size = 14) { function isHttpUrl (line 527) | function isHttpUrl(value) { function isSimpleEmoji (line 531) | function isSimpleEmoji(value) { function normalizeOAuthIconKey (line 537) | function normalizeOAuthIconKey(raw) { function getOAuthProviderIcon (line 554) | function getOAuthProviderIcon(iconName, size = 20) { function modelToColor (line 703) | function modelToColor(modelName) { function stringToColor (line 725) | function stringToColor(str) { function renderModelTag (line 735) | function renderModelTag(modelName, options = {}) { function renderText (line 768) | function renderText(text, limit) { function renderGroup (line 780) | function renderGroup(group) { function renderRatio (line 824) | function renderRatio(ratio) { function truncateText (line 867) | function truncateText(text, maxWidth = 200) { function renderNumber (line 981) | function renderNumber(num) { function renderQuotaNumberWithDigit (line 993) | function renderQuotaNumberWithDigit(num, digits = 2) { function renderNumberWithPoint (line 1018) | function renderNumberWithPoint(num) { function getQuotaPerUnit (line 1047) | function getQuotaPerUnit() { function renderUnitWithQuota (line 1053) | function renderUnitWithQuota(quota) { function getQuotaWithUnit (line 1060) | function getQuotaWithUnit(quota, digits = 6) { function renderQuotaWithAmount (line 1066) | function renderQuotaWithAmount(amount) { function getCurrencyConfig (line 1097) | function getCurrencyConfig() { function convertUSDToCurrency (line 1131) | function convertUSDToCurrency(usdAmount, digits = 2) { function renderQuota (line 1137) | function renderQuota(quota, digits = 2) { function isValidGroupRatio (line 1180) | function isValidGroupRatio(ratio) { function getEffectiveRatio (line 1190) | function getEffectiveRatio(groupRatio, user_group_ratio) { function getQuotaDisplayType (line 1204) | function getQuotaDisplayType() { function resolveBillingDisplayMode (line 1208) | function resolveBillingDisplayMode(displayMode, modelPrice = -1) { function isPriceDisplayMode (line 1218) | function isPriceDisplayMode(displayMode, modelPrice = -1) { function shouldUseRatioBillingProcess (line 1222) | function shouldUseRatioBillingProcess(modelPrice = -1) { function formatCompactDisplayPrice (line 1226) | function formatCompactDisplayPrice(usdAmount, digits = 6) { function appendPricePart (line 1232) | function appendPricePart(parts, condition, key, vars) { function joinBillingSummary (line 1239) | function joinBillingSummary(parts) { function getGroupRatioText (line 1243) | function getGroupRatioText(groupRatio, user_group_ratio) { function formatRatioValue (line 1251) | function formatRatioValue(value, digits = 6) { function renderDisplayAmountFromUsd (line 1259) | function renderDisplayAmountFromUsd(usdAmount, digits = 6) { function formatBillingDisplayPrice (line 1263) | function formatBillingDisplayPrice(usdAmount, rate, digits = 6) { function buildBillingText (line 1267) | function buildBillingText(key, vars) { function buildBillingPriceText (line 1271) | function buildBillingPriceText( function renderBillingArticle (line 1282) | function renderBillingArticle(lines, { showReferenceNote = true } = {}) { function renderPriceSimpleCore (line 1299) | function renderPriceSimpleCore({ function renderModelPrice (line 1623) | function renderModelPrice( function renderLogContent (line 2081) | function renderLogContent( function renderModelPriceSimple (line 2211) | function renderModelPriceSimple( function renderAudioModelPrice (line 2252) | function renderAudioModelPrice( function renderQuotaWithPrompt (line 2530) | function renderQuotaWithPrompt(quota, digits) { function renderClaudeModelPrice (line 2538) | function renderClaudeModelPrice( function renderClaudeLogContent (line 2947) | function renderClaudeLogContent( function rehypeSplitWordsIntoSpans (line 3097) | function rehypeSplitWordsIntoSpans(options = {}) { FILE: web/src/helpers/secureApiCall.js function isVerificationRequiredError (line 30) | function isVerificationRequiredError(error) { function extractVerificationInfo (line 54) | function extractVerificationInfo(error) { FILE: web/src/helpers/statusCodeRules.js function parseHttpStatusCodeRules (line 19) | function parseHttpStatusCodeRules(input) { function parseToken (line 70) | function parseToken(token) { function isNumber (line 94) | function isNumber(s) { function mergeRanges (line 98) | function mergeRanges(ranges) { FILE: web/src/helpers/subscriptionFormat.js function formatSubscriptionDuration (line 1) | function formatSubscriptionDuration(plan, t) { function formatSubscriptionResetPeriod (line 20) | function formatSubscriptionResetPeriod(plan, t) { FILE: web/src/helpers/token.js function fetchTokenKey (line 27) | async function fetchTokenKey(tokenId) { function fetchTokenKeys (line 40) | async function fetchTokenKeys() { function getServerAddress (line 64) | function getServerAddress() { FILE: web/src/helpers/utils.jsx function isAdmin (line 35) | function isAdmin() { function isRoot (line 42) | function isRoot() { function getSystemName (line 49) | function getSystemName() { function getLogo (line 55) | function getLogo() { function getUserIdFromLocalStorage (line 61) | function getUserIdFromLocalStorage() { function getFooterHTML (line 68) | function getFooterHTML() { function copy (line 72) | async function copy(text) { function showError (line 122) | function showError(error) { function showWarning (line 153) | function showWarning(message) { function showSuccess (line 157) | function showSuccess(message) { function showInfo (line 161) | function showInfo(message) { function showNotice (line 165) | function showNotice(message, isHTML = false) { function openPage (line 173) | function openPage(url) { function removeTrailingSlash (line 177) | function removeTrailingSlash(url) { function getTodayStartTimestamp (line 186) | function getTodayStartTimestamp() { function timestamp2string (line 192) | function timestamp2string(timestamp) { function timestamp2string1 (line 220) | function timestamp2string1( function isDataCrossYear (line 264) | function isDataCrossYear(timestamps) { function downloadTextAsFile (line 272) | function downloadTextAsFile(text, filename) { function verifyJSONPromise (line 290) | function verifyJSONPromise(value) { function shouldShowPrompt (line 299) | function shouldShowPrompt(id) { function setPromptShown (line 304) | function setPromptShown(id) { function compareObjects (line 314) | function compareObjects(oldObject, newObject) { function readTableCompactModes (line 567) | function readTableCompactModes() { function writeTableCompactModes (line 576) | function writeTableCompactModes(modes) { function getTableCompactMode (line 584) | function getTableCompactMode(tableKey = 'global') { function setTableCompactMode (line 589) | function setTableCompactMode(compact, tableKey = 'global') { constant DEFAULT_PRICING_FILTERS (line 942) | const DEFAULT_PRICING_FILTERS = { FILE: web/src/hooks/chat/useTokenKeys.js function useTokenKeys (line 24) | function useTokenKeys(id) { FILE: web/src/hooks/common/useIsMobile.js constant MOBILE_BREAKPOINT (line 20) | const MOBILE_BREAKPOINT = 768; FILE: web/src/hooks/common/useSidebar.js constant SIDEBAR_REFRESH_EVENT (line 26) | const SIDEBAR_REFRESH_EVENT = 'sidebar-refresh'; constant DEFAULT_ADMIN_CONFIG (line 28) | const DEFAULT_ADMIN_CONFIG = { FILE: web/src/hooks/common/useSidebarCollapsed.js constant KEY (line 22) | const KEY = 'default_collapse_sidebar'; FILE: web/src/hooks/common/useTableCompactMode.js function useTableCompactMode (line 29) | function useTableCompactMode(tableKey = 'global') { FILE: web/src/index.jsx function SemiLocaleWrapper (line 46) | function SemiLocaleWrapper({ children }) { FILE: web/src/pages/Playground/index.jsx function onMessageSend (line 239) | function onMessageSend(content, attachment) { FILE: web/src/pages/Setting/Chat/SettingsChats.jsx function SettingsChats (line 53) | function SettingsChats(props) { FILE: web/src/pages/Setting/Dashboard/SettingsDataDashboard.jsx function DataDashboard (line 31) | function DataDashboard(props) { FILE: web/src/pages/Setting/Drawing/SettingsDrawing.jsx function SettingsDrawing (line 31) | function SettingsDrawing(props) { FILE: web/src/pages/Setting/Model/SettingClaudeModel.jsx constant CLAUDE_HEADER (line 33) | const CLAUDE_HEADER = { constant CLAUDE_HEADER_APPEND_CONFIG (line 42) | const CLAUDE_HEADER_APPEND_CONFIG = { constant CLAUDE_HEADER_APPEND_BEFORE (line 48) | const CLAUDE_HEADER_APPEND_BEFORE = `anthropic-beta: output-128k-2025-02... constant CLAUDE_HEADER_APPEND_AFTER (line 50) | const CLAUDE_HEADER_APPEND_AFTER = `anthropic-beta: output-128k-2025-02-... constant CLAUDE_DEFAULT_MAX_TOKENS (line 52) | const CLAUDE_DEFAULT_MAX_TOKENS = { function SettingClaudeModel (line 59) | function SettingClaudeModel(props) { FILE: web/src/pages/Setting/Model/SettingGeminiModel.jsx constant GEMINI_SETTING_EXAMPLE (line 33) | const GEMINI_SETTING_EXAMPLE = { constant GEMINI_VERSION_EXAMPLE (line 37) | const GEMINI_VERSION_EXAMPLE = { constant DEFAULT_GEMINI_INPUTS (line 41) | const DEFAULT_GEMINI_INPUTS = { function SettingGeminiModel (line 51) | function SettingGeminiModel(props) { FILE: web/src/pages/Setting/Model/SettingGlobalModel.jsx function SettingGlobalModel (line 77) | function SettingGlobalModel(props) { FILE: web/src/pages/Setting/Model/SettingGrokModel.jsx constant XAI_VIOLATION_FEE_DOC_URL (line 31) | const XAI_VIOLATION_FEE_DOC_URL = constant DEFAULT_GROK_INPUTS (line 34) | const DEFAULT_GROK_INPUTS = { function SettingGrokModel (line 39) | function SettingGrokModel(props) { FILE: web/src/pages/Setting/Model/SettingModelDeployment.jsx function SettingModelDeployment (line 42) | function SettingModelDeployment(props) { FILE: web/src/pages/Setting/Operation/SettingsChannelAffinity.jsx constant KEY_ENABLED (line 63) | const KEY_ENABLED = 'channel_affinity_setting.enabled'; constant KEY_SWITCH_ON_SUCCESS (line 64) | const KEY_SWITCH_ON_SUCCESS = 'channel_affinity_setting.switch_on_success'; constant KEY_MAX_ENTRIES (line 65) | const KEY_MAX_ENTRIES = 'channel_affinity_setting.max_entries'; constant KEY_DEFAULT_TTL (line 66) | const KEY_DEFAULT_TTL = 'channel_affinity_setting.default_ttl_seconds'; constant KEY_RULES (line 67) | const KEY_RULES = 'channel_affinity_setting.rules'; constant KEY_SOURCE_TYPES (line 69) | const KEY_SOURCE_TYPES = [ constant CONTEXT_KEY_PRESETS (line 75) | const CONTEXT_KEY_PRESETS = [ constant RULES_JSON_PLACEHOLDER (line 87) | const RULES_JSON_PLACEHOLDER = `[ function SettingsChannelAffinity (line 194) | function SettingsChannelAffinity(props) { FILE: web/src/pages/Setting/Operation/SettingsCheckin.jsx function SettingsCheckin (line 31) | function SettingsCheckin(props) { FILE: web/src/pages/Setting/Operation/SettingsCreditLimit.jsx function SettingsCreditLimit (line 31) | function SettingsCreditLimit(props) { FILE: web/src/pages/Setting/Operation/SettingsGeneral.jsx function GeneralSettings (line 42) | function GeneralSettings(props) { FILE: web/src/pages/Setting/Operation/SettingsHeaderNavModules.jsx function SettingsHeaderNavModules (line 36) | function SettingsHeaderNavModules(props) { FILE: web/src/pages/Setting/Operation/SettingsLog.jsx function SettingsLog (line 43) | function SettingsLog(props) { FILE: web/src/pages/Setting/Operation/SettingsMonitoring.jsx function SettingsMonitoring (line 33) | function SettingsMonitoring(props) { FILE: web/src/pages/Setting/Operation/SettingsSensitiveWords.jsx function SettingsSensitiveWords (line 31) | function SettingsSensitiveWords(props) { FILE: web/src/pages/Setting/Operation/SettingsSidebarModulesAdmin.jsx function SettingsSidebarModulesAdmin (line 36) | function SettingsSidebarModulesAdmin(props) { FILE: web/src/pages/Setting/Payment/SettingsGeneralPayment.jsx function SettingsGeneralPayment (line 30) | function SettingsGeneralPayment(props) { FILE: web/src/pages/Setting/Payment/SettingsPaymentGateway.jsx function SettingsPaymentGateway (line 32) | function SettingsPaymentGateway(props) { FILE: web/src/pages/Setting/Payment/SettingsPaymentGatewayCreem.jsx function SettingsPaymentGatewayCreem (line 39) | function SettingsPaymentGatewayCreem(props) { FILE: web/src/pages/Setting/Payment/SettingsPaymentGatewayStripe.jsx function SettingsPaymentGateway (line 39) | function SettingsPaymentGateway(props) { FILE: web/src/pages/Setting/Payment/SettingsPaymentGatewayWaffo.jsx function SettingsPaymentGatewayWaffo (line 39) | function SettingsPaymentGatewayWaffo(props) { FILE: web/src/pages/Setting/Performance/SettingsPerformance.jsx function formatBytes (line 46) | function formatBytes(bytes, decimals = 2) { function SettingsPerformance (line 58) | function SettingsPerformance(props) { FILE: web/src/pages/Setting/RateLimit/SettingsRequestRateLimit.jsx function RequestRateLimit (line 32) | function RequestRateLimit(props) { FILE: web/src/pages/Setting/Ratio/GroupRatioSettings.jsx function GroupRatioSettings (line 32) | function GroupRatioSettings(props) { FILE: web/src/pages/Setting/Ratio/ModelRatioSettings.jsx function ModelRatioSettings (line 40) | function ModelRatioSettings(props) { FILE: web/src/pages/Setting/Ratio/ModelRationNotSetEditor.jsx function ModelRatioNotSetEditor (line 25) | function ModelRatioNotSetEditor(props) { FILE: web/src/pages/Setting/Ratio/ModelSettingsVisualEditor.jsx function ModelSettingsVisualEditor (line 23) | function ModelSettingsVisualEditor(props) { FILE: web/src/pages/Setting/Ratio/UpstreamRatioSync.jsx constant OFFICIAL_RATIO_PRESET_ID (line 56) | const OFFICIAL_RATIO_PRESET_ID = -100; constant OFFICIAL_RATIO_PRESET_NAME (line 57) | const OFFICIAL_RATIO_PRESET_NAME = '官方倍率预设'; constant OFFICIAL_RATIO_PRESET_BASE_URL (line 58) | const OFFICIAL_RATIO_PRESET_BASE_URL = 'https://basellm.github.io'; constant OFFICIAL_RATIO_PRESET_ENDPOINT (line 59) | const OFFICIAL_RATIO_PRESET_ENDPOINT = constant MODELS_DEV_PRESET_ID (line 61) | const MODELS_DEV_PRESET_ID = -101; constant MODELS_DEV_PRESET_NAME (line 62) | const MODELS_DEV_PRESET_NAME = 'models.dev 价格预设'; constant MODELS_DEV_PRESET_BASE_URL (line 63) | const MODELS_DEV_PRESET_BASE_URL = 'https://models.dev'; constant MODELS_DEV_PRESET_ENDPOINT (line 64) | const MODELS_DEV_PRESET_ENDPOINT = 'https://models.dev/api.json'; function ConflictConfirmModal (line 66) | function ConflictConfirmModal({ t, visible, items, onOk, onCancel }) { function UpstreamRatioSync (line 101) | function UpstreamRatioSync(props) { FILE: web/src/pages/Setting/Ratio/components/ModelPricingEditor.jsx constant EMPTY_CANDIDATE_MODEL_NAMES (line 54) | const EMPTY_CANDIDATE_MODEL_NAMES = []; function ModelPricingEditor (line 87) | function ModelPricingEditor({ FILE: web/src/pages/Setting/Ratio/hooks/useModelPricingEditorState.js constant PAGE_SIZE (line 4) | const PAGE_SIZE = 10; constant PRICE_SUFFIX (line 5) | const PRICE_SUFFIX = '$/1M tokens'; constant EMPTY_CANDIDATE_MODEL_NAMES (line 6) | const EMPTY_CANDIDATE_MODEL_NAMES = []; constant EMPTY_MODEL (line 8) | const EMPTY_MODEL = { constant NUMERIC_INPUT_REGEX (line 33) | const NUMERIC_INPUT_REGEX = /^(\d+(\.\d*)?|\.\d*)?$/; function useModelPricingEditorState (line 527) | function useModelPricingEditorState({ FILE: web/src/services/secureVerification.js class SecureVerificationService (line 31) | class SecureVerificationService { method checkAvailableVerificationMethods (line 36) | static async checkAvailableVerificationMethods() { method verify2FA (line 95) | static async verify2FA(code) { method verifyPasskey (line 117) | static async verifyPasskey() { method verify (line 175) | static async verify(method, code = '') { FILE: web/vite.config.js method transform (line 40) | async transform(code, id) {