Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var AccountProviderSet = wire.NewSet(NewRedisManager)
View Source
var ErrAccountNotFoundInContext = errors.New("account not found in context")
View Source
var (
ErrNoAvailableAccount = errors.New("no available account in redis")
)
Functions ¶
Types ¶
type Account ¶
type Account struct {
Username string `json:"username"`
CookieJSON string `json:"cookie_json"`
UserAgent string `json:"user_agent"`
Status AccountStatus `json:"status"`
LoginURL string `json:"login_url"`
BaseURL string `json:"base_url"`
Timeout int `json:"timeout"`
Message string `json:"message"`
LastUsedAt int64 `json:"last_used_at"`
RestUntil int64 `json:"rest_until,omitempty"`
RestrictedQueues []string `json:"restricted_queues,omitempty"`
}
Account 是账号实体,包含了认证、状态和元数据信息。
func FromContext ¶
FromContext 从 context 中安全地提取唯一的 Account 对象。
func (*Account) FormatCookieHeader ¶
FormatCookieHeader 将存储的CookieJSON解析并格式化为标准的HTTP Cookie头字符串。 例如:"name1=value1; name2=value2"
func (*Account) FormatCookiesForHeadless ¶
func (a *Account) FormatCookiesForHeadless() ([]*network.CookieParam, error)
FormatCookiesForHeadless 将存储的CookieJSON解析并格式化为 Headless 浏览器(chromedp)所需的格式。
type AccountStatus ¶
type AccountStatus string
AccountStatus 定义了账号可能存在的几种状态。
const ( // StatusHealthy 表示账号健康,随时可以被调度使用。 StatusHealthy AccountStatus = "healthy" // StatusWorking 表示账号当前正在被一个Worker使用。 StatusWorking AccountStatus = "working" // StatusResting 表示账号处于强制休息状态,暂时不可用。 StatusResting AccountStatus = "resting" // StatusExpired 表示账号的Cookie已失效,需要重新登录。 StatusExpired AccountStatus = "expired" // StatusRequiresManualIntervention 表示账号登录需要人工介入(如输入验证码)。 StatusRequiresManualIntervention AccountStatus = "requires_manual_intervention" // StatusBanned 表示账号已被平台封禁。 StatusBanned AccountStatus = "banned" )
type Manager ¶
type Manager interface {
AcquireAccount(ctx context.Context) (*Account, error)
AcquireAccountFor(ctx context.Context, baseURL string) (*Account, error)
ReleaseAccount(ctx context.Context, username string, newStatus AccountStatus, message ...string) error
RestAccount(ctx context.Context, username string, restDuration time.Duration) error
UpdateAccount(ctx context.Context, account *Account) error
GetAllAccounts(ctx context.Context) ([]*Account, error)
GetAccount(ctx context.Context, username string) (*Account, error)
AddRestrictedQueue(ctx context.Context, username, queueName string) error
IsRestricted(ctx context.Context, username, queueName string) (bool, error)
GetRestrictedQueues(ctx context.Context, username string) ([]string, error)
UpdateAccountStatus(ctx context.Context, username string, status AccountStatus) error
}
ResourceManager 是唯一的资源管理器接口
Click to show internal directories.
Click to hide internal directories.