UNPKG

@candriajs/git-neko-kit

Version:

Github, Gitee, GitCode API封装库

1 lines 9.11 kB
const e=require(`./root-s6IKP4Xz.cjs`),t=require(`./client-Bmkb1ges.cjs`),n=e.__toESM(require(`radash`));var r=class extends t.GitHubClient{constructor(e){super(e),this.userToken=e.userToken,this.base_url=e.base_url,this.api_url=e.api_url}async get_app_info(e){if(!e.app_slug)throw Error(t.MissingAppSlugMsg);if(!this.userToken)throw Error(t.MissingAccessTokenMsg);try{this.setRequestConfig({token:this.userToken});let{app_slug:r}=e,i=await this.get(`/apps/${r}`);if(i.data){let[e,r]=await Promise.all([this.format?t.format_date(i.data.created_at):i.data.created_at,this.format?t.format_date(i.data.updated_at):i.data.updated_at]),a={id:i.data.id,name:i.data.name,client_id:i.data.client_id,slug:i.data.slug,owner:{id:i.data.owner.id,login:i.data.owner.login,name:(0,n.isEmpty)(i.data.owner.name)?null:i.data.owner.name,email:(0,n.isEmpty)(i.data.owner.email)?null:i.data.owner.email,html_url:i.data.owner.html_url,avatar_url:i.data.owner.avatar_url,type:(0,n.capitalize)(i.data.owner.type.toLowerCase())},description:i.data.description,external_url:i.data.external_url,html_url:i.data.html_url,permissions:i.data.permissions,events:i.data.events,created_at:e,updated_at:r};i.data=a}return i}catch(e){throw Error(`[GitHub] 获取应用信息失败: ${e.message}`)}}async get_app_info_by_auth(){if(!this.is_app_client)throw Error(t.MissingAppClientMsg);try{this.setRequestConfig({token:this.jwtToken});let e=await this.get(`/app`);if(e.data){let[r,i]=await Promise.all([this.format?t.format_date(e.data.created_at):e.data.created_at,this.format?t.format_date(e.data.updated_at):e.data.updated_at]),a={id:e.data.id,name:e.data.name,client_id:e.data.client_id,slug:e.data.slug,owner:{id:e.data.owner.id,login:e.data.owner.login,name:(0,n.isEmpty)(e.data.owner.name)?null:e.data.owner.name,email:(0,n.isEmpty)(e.data.owner.email)?null:e.data.owner.email,html_url:e.data.owner.html_url,avatar_url:e.data.owner.avatar_url,type:(0,n.capitalize)(e.data.owner.type.toLowerCase())},description:e.data.description,external_url:e.data.external_url,html_url:e.data.html_url,permissions:e.data.permissions,events:e.data.events,created_at:r,updated_at:i};e.data=a}return e}catch(e){throw Error(`[GitHub] 获取应用信息失败: ${e.message}`)}}async get_app_installation_by_repo(e){if(!this.is_app_client)throw Error(t.MissingAppClientMsg);if(!e.owner||!e.repo)throw Error(t.MissingRepoOwnerOrNameMsg);try{this.setRequestConfig({token:this.jwtToken});let{owner:r,repo:i}=e,a=await this.get(`/repos/${r}/${i}/installation`);switch(a.statusCode){case 404:throw Error(t.RepoNotFoundMsg);case 301:throw Error(t.RepoMovedMsg)}if(a.data){let[e,r]=await Promise.all([this.format?t.format_date(a.data.created_at):a.data.created_at,this.format?t.format_date(a.data.updated_at):a.data.updated_at]),i={id:a.data.id,html_url:a.data.html_url,app_id:a.data.app_id,app_slug:a.data.app_slug,target_id:a.data.target_id,target_type:a.data.target_type,account:{id:a.data.account.id,login:a.data.account.login,name:(0,n.isEmpty)(a.data.account.name)?null:a.data.account.name,email:(0,n.isEmpty)(a.data.account.email)?null:a.data.account.email,html_url:a.data.account.html_url,avatar_url:a.data.account.avatar_url,type:(0,n.capitalize)(a.data.account.type.toLowerCase())},repository_selection:a.data.repository_selection,access_tokens_url:a.data.access_tokens_url,repositories_url:a.data.repositories_url,permissions:a.data.permissions,events:a.data.events,created_at:e,updated_at:r};a.data=i}return a}catch(e){throw Error(`[GitHub] 获取存储库安装应用信息失败: ${e.message}`)}}async get_app_installation_by_user(e){if(!this.is_app_client)throw Error(t.MissingAppClientMsg);if(!e.username)throw Error(t.MissingUserNameParamMsg);try{this.setRequestConfig({token:this.jwtToken});let{username:r}=e,i=await this.get(`/users/${r}/installation`);switch(i.statusCode){case 404:throw Error(t.RepoNotFoundMsg);case 301:throw Error(t.RepoMovedMsg)}if(i.data){let[e,r]=await Promise.all([this.format?t.format_date(i.data.created_at):i.data.created_at,this.format?t.format_date(i.data.updated_at):i.data.updated_at]),a={id:i.data.id,html_url:i.data.html_url,app_id:i.data.app_id,app_slug:i.data.app_slug,target_id:i.data.target_id,target_type:i.data.target_type,account:{id:i.data.account.id,login:i.data.account.login,name:(0,n.isEmpty)(i.data.account.name)?null:i.data.account.name,email:(0,n.isEmpty)(i.data.account.email)?null:i.data.account.email,html_url:i.data.account.html_url,avatar_url:i.data.account.avatar_url,type:(0,n.capitalize)(i.data.account.type.toLowerCase())},repository_selection:i.data.repository_selection,access_tokens_url:i.data.access_tokens_url,repositories_url:i.data.repositories_url,permissions:i.data.permissions,events:i.data.events,created_at:e,updated_at:r};i.data=a}return i}catch(e){throw Error(`[GitHub] 获取存储库安装应用信息失败: ${e.message}`)}}async get_app_installation_by_org(e){if(!this.is_app_client)throw Error(t.MissingAppClientMsg);if(!e.org)throw Error(t.MissingOrgParamMsg);try{this.setRequestConfig({token:this.jwtToken});let{org:r}=e,i=await this.get(`/orgs/${r}/installation`);switch(i.statusCode){case 404:throw Error(t.RepoNotFoundMsg);case 301:throw Error(t.RepoMovedMsg)}if(i.data){let[e,r]=await Promise.all([this.format?t.format_date(i.data.created_at):i.data.created_at,this.format?t.format_date(i.data.updated_at):i.data.updated_at]),a={id:i.data.id,html_url:i.data.html_url,app_id:i.data.app_id,app_slug:i.data.app_slug,target_id:i.data.target_id,target_type:i.data.target_type,account:{id:i.data.account.id,login:i.data.account.login,name:(0,n.isEmpty)(i.data.account.name)?null:i.data.account.name,email:(0,n.isEmpty)(i.data.account.email)?null:i.data.account.email,html_url:i.data.account.html_url,avatar_url:i.data.account.avatar_url,type:(0,n.capitalize)(i.data.account.type.toLowerCase())},repository_selection:i.data.repository_selection,access_tokens_url:i.data.access_tokens_url,repositories_url:i.data.repositories_url,permissions:i.data.permissions,events:i.data.events,created_at:e,updated_at:r};i.data=a}return i}catch(e){throw Error(`[GitHub] 获取存储库安装应用信息失败: ${e.message}`)}}async create_access_token_for_app(e){if(!e.installation_id)throw Error(t.MissingAppInstallIdMsg);try{this.setRequestConfig({token:this.jwtToken});let r={};e.repositories&&(r.repositories=e.repositories),e.repository_ids&&(r.repository_ids=e.repository_ids),e.permissions&&(r.permissions=e.permissions);let i=await this.post(`app/installations/${e.installation_id}/access_tokens`,r);if(i.statusCode===201&&i.data){let e=this.format?await t.format_date(i.data.expires_at):i.data.expires_at,r={token:i.data.token,expires_at:e,permissions:i.data.permissions,repository_selection:i.data.repository_selection,repositories:await Promise.all(i.data.repositories.map(async e=>({id:e.id,name:e.name,full_name:e.full_name,owner:{id:e.owner.id,login:e.owner.login,name:(0,n.isEmpty)(i.data.owner.name)?null:i.data.owner.name,avatar_url:e.owner.avatar_url,type:e.owner.type,html_url:e.owner.html_url},public:!e.private,private:e.private,visibility:e.private?`private`:`public`,fork:e.fork,archived:e.archived,disabled:e.disabled,html_url:e.html_url,description:e.description,stargazers_count:e.stargazers_count,watchers_count:e.watchers_count,language:e.language,forks_count:e.forks_count,open_issues_count:e.open_issues_count,default_branch:e.default_branch,created_at:this.format?await t.format_date(e.created_at):e.created_at,updated_at:this.format?await t.format_date(e.updated_at):e.updated_at,pushed_at:this.format?await t.format_date(e.pushed_at):e.pushed_at})))};i.data=r}return i}catch(e){throw Error(`[GitHub] 为应用程序创建访问令牌失败: ${e.message}`)}}async revoke_access_token_for_app(){this.setRequestConfig({token:this.jwtToken});let e=await this.delete(`/installation/token`),n=!1,r=`error`,i,a=400,o;return e.statusCode===201?(n=!0,r=`ok`,a=200,i=`请求成功`,o={success:n,message:t.RevokeAccessTokenSuccessMsg}):(n=!1,r=`error`,a=403,i=`请求失败`,o={success:n,message:t.FailedRevokeAppAccrssTokenMsg}),Promise.resolve({success:n,status:r,statusCode:a,msg:i,data:o})}async create_install_link(e){try{if(!this.is_app_client)throw Error(t.MissingAppClientMsg);let n=new URL(`apps/${await this.get_app_name()}/installations/new`,this.base_url);return n.search=new URLSearchParams({...e&&{state:e}}).toString(),n.toString()}catch(e){throw Error(`[GitHub] 生成应用安装链接失败: ${e.message}`)}}async create_config_install_link(e){try{if(!this.is_app_client)throw Error(t.MissingAppClientMsg);let n=new URL(`apps/${await this.get_app_name()}/installations/new`,this.base_url);return n.search=new URLSearchParams({...e&&{state:e}}).toString(),n.toString()}catch(e){throw Error(`[GitHub] 生成应用配置链接失败: ${e.message}`)}}async get_app_name(){return(await this.get_app_info_by_auth()).data.name}async is_app_installed_in_repo(e){try{let t=await this.get_app_installation_by_repo({owner:e.owner,repo:e.repo});return!!t}catch{return!1}}};Object.defineProperty(exports,`App`,{enumerable:!0,get:function(){return r}});