@candriajs/git-neko-kit
Version:
Github, Gitee, GitCode API封装库
1 lines • 3.44 kB
JavaScript
import{FailedToRemoveOrgMemberMsg as e,GitHubClient as t,MissingOrgParamMsg as n,MissingUserNameParamMsg as r,OrgForUserNotFoundMsg as i,OrgNotFoundMsg as a,PermissionDeniedMsg as o,RemoveOrgMemberSuccessMsg as s,RepoOrPermissionDeniedMsg as c}from"./client-sGV7POG-.mjs";import{isEmpty as l}from"radash";var u=class extends t{constructor(e){super(e),this.userToken=e.userToken,this.api_url=e.api_url,this.base_url=e.base_url}async get_org_info(e){if(!e.org)throw Error(n);let{org:t}=e;try{this.setRequestConfig({token:this.userToken});let e=await this.get(`/orgs/${t}`);if(e.statusCode===404)throw Error(a);if(e.data){let t={id:e.data.id,login:e.data.login,name:l(e.data.name)?null:e.data.name,avatar_url:e.data.avatar_url,description:e.data.description,html_url:e.data.html_url};e.data=t}return e}catch(e){throw Error(`[GitHub] 获取组织信息失败: ${e.message}`)}}async get_org_member_info(e){if(!e.org)throw Error(n);if(!e.username)throw Error(r);try{this.setRequestConfig({token:this.userToken});let{org:t,username:n}=e,r=await this.get(`/orgs/${t}/members/${n}`);if(r.statusCode===403)throw Error(o);if(r.statusCode===404)throw Error(i);if(r.data){let e={state:r.data.state,role:r.data.role,organization:{id:r.data.organization.id,login:r.data.organization.login,name:l(r.data.organization.name)?null:r.data.organization.name,html_url:r.data.organization.html_url},user:{id:r.data.user.id,login:r.data.user.login,name:l(r.data.user.name)?null:r.data.user.name,avatar_url:r.data.user.avatar_url,html_url:r.data.user.html_url}};r.data=e}return r}catch(e){throw Error(`[GitHub] 获取组织成员信息失败: ${e.message}`)}}async get_org_member_list(e){if(!e.org)throw Error(n);try{this.setRequestConfig({token:this.userToken});let{org:t}=e,n={};e.per_page&&(n.per_page=e.per_page),e.page&&(n.page=e.page);let r=await this.get(`/user/memberships/orgs`,n);if(r.statusCode===403)throw Error(o);if(r.statusCode===404)throw Error(i);if(r.data){let e=r.data.filter(e=>e.organization.login===t).map(e=>({id:e.user.id,login:e.user.login,name:l(e.user.name)?null:e.user.name,role:e.role,avatar_url:e.user.avatar_url,html_url:e.user.html_url}));r.data=e}return r}catch(e){throw Error(`[GitHub] 获取组织成员列表失败: ${e.message}`)}}async add_member(e){if(!e.org)throw Error(n);if(!e.username)throw Error(r);try{this.setRequestConfig({token:this.userToken});let t,n,{org:r,username:i,role:a}=e;if(i){let e=await this.get_user();try{t=await e.get_user_id()}catch{n=await e.get_user_email()}}let s={};t?s.invitee_id=t:n&&(s.email=n),a===`admin`?s.role=`admin`:s.role=`direct_member`;let l=await this.post(`/orgs/${r}/invitations`,s);if(l.statusCode===404)throw Error(c);if(l.statusCode===422){let e=l.data.message;if(e&&e.includes(`is not a valid permission`))throw Error(o)}if(l.data){let e={id:l.data.inviter.id,login:l.data.inviterlogin,name:l.data.inviter.name,html_url:`${this.Client_Secret}/${r}`,role:a};l.data=e}return l}catch(e){throw Error(`[GitHub] 添加组织成员失败: ${e.message}`)}}async remove_org_member(t){if(!t.org)throw Error(n);if(!t.username)throw Error(r);try{this.setRequestConfig({token:this.userToken});let{org:n,username:r}=t,i=await this.delete(`/orgs/${n}/members/${r}`);if(i.statusCode===403)throw Error(o);let a;return a=i.statusCode===204?{success:!0,message:s(r)}:{success:!1,message:e(r)},i.data=a,i}catch(e){throw Error(`[GitHub] 移除组织成员失败: ${e.message}`)}}};export{u as Org};