This commit is contained in:
2026-01-12 03:16:35 +08:00
parent c2dcc53018
commit 5310ff28ae
48 changed files with 1349 additions and 254 deletions

View File

@@ -1,21 +1,29 @@
import { CNBCore, CNBCoreOptions } from "../cnb-core.ts";
import { Result } from "@kevisual/query";
export class User extends CNBCore {
constructor(options: CNBCoreOptions<{}>) {
super({ token: options.token, cookie: options.cookie });
}
/**
* 获取当前用户信息
* @returns
* 获取当前用户信息,使用 Cookie 认证
* @returns
*/
getCurrentUser(): Promise<any> {
getCurrentUser(): Promise<Result<UserInfo>> {
const url = `https://cnb.cool/user`;
return this.get({
url,
useCookie: true,
});
}
/**
* 使用 Token 获取用户信息
* @returns
*/
getUser(): Promise<Result<UserInfo>> {
const url = '/user';
return this.get({ url });
}
createAccessToken(data?: { description?: string, scope?: string }): Promise<AccessTokenResponse> {
const scope = data?.scope || 'mission-manage:rw,mission-delete:rw,group-delete:rw,group-manage:rw,group-resource:rw,account-engage:rw,account-email:r,account-profile:rw,registry-delete:rw,registry-manage:rw,registry-package-delete:rw,registry-package:rw,repo-security:r,repo-delete:rw,repo-manage:rw,repo-basic-info:r,repo-cnb-detail:rw,repo-cnb-history:r,repo-cnb-trigger:rw,repo-commit-status:rw,repo-contents:rw,repo-notes:rw,repo-issue:rw,repo-pr:rw,repo-code:rw'
const url = 'https://cnb.cool/user/personal_access_tokens'
@@ -52,4 +60,57 @@ export class User extends CNBCore {
type AccessTokenResponse = {
token: string;
description: string;
}
type UserInfo = {
id: string;
username: string;
nickname: string;
type: number;
verified: number;
verified_expire_in: string;
created_at: string;
freeze: boolean;
locked: boolean;
avatar: string;
email: string;
next_updated_name_at: string;
updated_name_at: string;
updated_nick_at: string;
editable: {
avatar: boolean;
email: boolean;
logoff: boolean;
nickname: boolean;
'sync-data': boolean;
username: boolean;
};
language: string;
appearance: string;
gender: number;
bio: string;
company: string;
location: string;
site: string;
address: string;
wechat_mp: string;
wechat_mp_qrcode: string;
appreciate_status: number;
follow_count: number;
follower_count: number;
reward_count: number;
reward_amount: number;
stars_count: number;
group_count: number;
repo_count: number;
mission_count: number;
registry_count: number;
public_repo_count: number;
public_mission_count: number;
public_registry_count: number;
follow_repo_count: number;
follow_mission_count: number;
readme_repo_path: string;
last_login_at: string;
last_login_ip: string;
}