common

package
v0.0.1 Latest Latest
Warning

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

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

Documentation

Index

Constants

View Source
const (
	EmailVerificationPurpose = "v"
	PasswordResetPurpose     = "r"
)

Variables

View Source
var (
	Port         = flag.Int("port", 3011, "the listening port")
	PrintVersion = flag.Bool("version", false, "print version and exit")
	PrintHelp    = flag.Bool("help", false, "print help and exit")
	LogDir       = flag.String("log-dir", "./logs", "specify the log directory")
)
View Source
var RedisEnabled = true
View Source
var SQLiteBusyTimeout = env.Int("SQLITE_BUSY_TIMEOUT", 3000)
View Source
var SQLitePath = "one-api.db"
View Source
var StartTime = time.Now().Unix() // unit: second
View Source
var UsingMySQL = false
View Source
var UsingPostgreSQL = false
View Source
var UsingSQLite = false
View Source
var VerificationValidMinutes = 10
View Source
var Version = "v0.0.0" // this hard coding will be replaced automatically when building, no need to manually change

Functions

func ConsumeWalletNonce

func ConsumeWalletNonce(address string)

ConsumeWalletNonce removes a nonce (used after successful auth)

func DeleteKey

func DeleteKey(key string, purpose string)

func EmbedFolder

func EmbedFolder(fsEmbed embed.FS, targetPath string) static.ServeFileSystem

func GenerateVerificationCode

func GenerateVerificationCode(length int) string

func GenerateWalletJWT

func GenerateWalletJWT(userID int, walletAddress string) (token string, expiresAt time.Time, err error)

GenerateWalletJWT issues a JWT for the given user id and wallet address.

func GenerateWalletNonce

func GenerateWalletNonce(address, messagePrefix, chainId string) (nonce string, message string)

GenerateWalletNonce creates a nonce & message and stores them for later verification

func GenerateWalletRefreshJWT

func GenerateWalletRefreshJWT(userID int, walletAddress string) (token string, expiresAt time.Time, err error)

GenerateWalletRefreshJWT issues a refresh token for the given user id and wallet address.

func GetRequestBody

func GetRequestBody(c *gin.Context) ([]byte, error)

func GetWalletNonce

func GetWalletNonce(address string) (walletNonceValue, bool)

GetWalletNonce returns stored nonce entry if valid

func Init

func Init()

func InitRedisClient

func InitRedisClient() (err error)

InitRedisClient This function is called after init()

func IsUcanToken

func IsUcanToken(token string) bool

func IsValidEthAddress

func IsValidEthAddress(addr string) bool

IsValidEthAddress performs a basic checksum/length check

func LogQuota

func LogQuota(quota int64) string

func ParseRedisOption

func ParseRedisOption() *redis.Options

func Password2Hash

func Password2Hash(password string) (string, error)

func RedisDecrease

func RedisDecrease(key string, value int64) error

func RedisDel

func RedisDel(key string) error

func RedisGet

func RedisGet(key string) (string, error)

func RedisSet

func RedisSet(key string, value string, expiration time.Duration) error

func RegisterVerificationCodeWithKey

func RegisterVerificationCodeWithKey(key string, code string, purpose string)

func ResolveUcanAudience

func ResolveUcanAudience() string

func SetEventStreamHeaders

func SetEventStreamHeaders(c *gin.Context)

func UnmarshalBodyReusable

func UnmarshalBodyReusable(c *gin.Context, v any) error

func ValidatePasswordAndHash

func ValidatePasswordAndHash(password string, hash string) bool

func VerifyCodeWithKey

func VerifyCodeWithKey(key string, code string, purpose string) bool

func VerifyUcanInvocation

func VerifyUcanInvocation(token string, expectedAud string, required []UcanCapability) (string, error)

Types

type CustomEvent

type CustomEvent struct {
	Event string
	Id    string
	Retry uint
	Data  interface{}
}

func (CustomEvent) Render

func (r CustomEvent) Render(w http.ResponseWriter) error

func (CustomEvent) WriteContentType

func (r CustomEvent) WriteContentType(w http.ResponseWriter)

type InMemoryRateLimiter

type InMemoryRateLimiter struct {
	// contains filtered or unexported fields
}

func (*InMemoryRateLimiter) Init

func (l *InMemoryRateLimiter) Init(expirationDuration time.Duration)

func (*InMemoryRateLimiter) Request

func (l *InMemoryRateLimiter) Request(key string, maxRequestNum int, duration int64) bool

Request parameter duration's unit is seconds

type UcanCapability

type UcanCapability struct {
	Resource string `json:"resource"`
	Action   string `json:"action"`
}

type WalletClaims

type WalletClaims struct {
	UserID        int    `json:"user_id"`
	WalletAddress string `json:"wallet_address"`
	TokenType     string `json:"token_type,omitempty"`
	jwt.RegisteredClaims
}

WalletClaims defines JWT claims for wallet login.

func VerifyWalletJWT

func VerifyWalletJWT(tokenString string) (*WalletClaims, error)

VerifyWalletJWT validates token and returns claims.

func VerifyWalletRefreshJWT

func VerifyWalletRefreshJWT(tokenString string) (*WalletClaims, error)

VerifyWalletRefreshJWT validates refresh token and returns claims.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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