@candriajs/git-neko-kit
Version:
Github, Gitee, GitCode API封装库
1 lines • 3.12 kB
JavaScript
const e=require(`./client-Bmkb1ges.cjs`);var t=class extends e.GitHubClient{constructor(e){super(e),this.userToken=e.userToken,this.api_url=e.api_url,this.base_url=e.base_url}async get_token_by_code(t){if(!this.is_app_client)throw Error(e.MissingAppClientMsg);if(!t.code)throw Error(e.MissingAccessCodeMsg);try{this.setRequestConfig({url:this.base_url});let n=await this.post(`/login/oauth/access_token`,{client_id:this.Client_ID,client_secret:this.Client_Secret,code:t.code},{Accept:`application/json`}),r=n.status===`ok`&&n.statusCode===200&&!n.data.error;if(!r)throw Error(e.FailedToFetchAccessTokenMsg);if(n.data){let t={success:r,message:e.AccessTokenSuccessMsg,access_token:n.data.access_token,expires_in:n.data.expires_in??null,refresh_token:n.data.refresh_token??null,refresh_token_expires_in:n.data.refresh_token_expires_in??null,scope:n.data.scope,token_type:n.data.token_type};n.data=t}return n}catch(e){throw Error(`[GitHub] 获取访问令牌失败: ${e.message}`)}}async check_token_status(t){try{if(!this.is_app_client)throw Error(e.MissingAppClientMsg);let n=t?.access_token??this.userToken;if(!n)throw Error(e.InvalidAccessTokenMsg);if(!n.startsWith(`ghu_`))throw Error(e.MissingAccessTokenMsg);this.setRequestConfig({url:this.api_url,tokenType:`Basic`,token:`${this.Client_ID}:${this.Client_Secret}`});let r=await this.post(`/applications/${this.Client_ID}/token`,{access_token:n}),i=!(r.status===`ok`&&(r.statusCode===404||r.statusCode===422)),a={success:i,message:i?e.AccessTokenValidMsg:e.ExpiredAccessTokenMsg};return r.data=a,r}catch(e){throw Error(`[GitHub] 获取访问令牌状态失败: ${e.message}`)}}async refresh_token(t){try{if(!this.is_app_client)throw Error(e.MissingAppClientMsg);if(!t.refresh_token)throw Error(e.MissingAccessCodeMsg);if(!t.refresh_token.startsWith(`ghr_`))throw Error(e.MissingRefreshTokenMsg);this.setRequestConfig({url:this.base_url});let n=await this.post(`/login/oauth/access_token`,{client_id:this.Client_ID,client_secret:this.Client_Secret,grant_type:`refresh_token`,refresh_token:t.refresh_token},{Accept:`application/json`}),r=n.status===`ok`&&n.statusCode===200&&!n.data.error,i=e.FailedToRefreshAccessTokenMsg;switch(n.data.error){case`bad_refresh_token`:i=e.MissingRefreshTokenMsg;break;case`unauthorized`:i=e.PermissionDeniedMsg;break}if(!r)throw Error(i);if(n.data){let t={success:r,message:e.RefreshAccessTokenSuccessMsg,access_token:n.data.access_token,expires_in:n.data.expires_in??null,refresh_token:n.data.refresh_token??null,refresh_token_expires_in:n.data.refresh_token_expires_in??null,scope:n.data.scope,token_type:n.data.token_type};n.data=t}return n}catch(e){throw Error(`[GitHub] 刷新访问令牌失败: ${e.message}`)}}async create_auth_link(t){try{if(!this.is_app_client)throw Error(e.MissingAppClientMsg);let n=new URL(`/login/oauth/authorize`,this.base_url);return n.search=new URLSearchParams({client_id:this.Client_ID,...t&&{state:t}}).toString(),Promise.resolve(n.toString())}catch(e){throw Error(`[GitHub] 生成授权链接失败: ${e.message}`)}}};Object.defineProperty(exports,`Auth`,{enumerable:!0,get:function(){return t}});