1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-04 05:00:03 +08:00
SpaceVim/bundle/github.vim/autoload/github/api/orgs.vim

176 lines
5.6 KiB
VimL
Raw Normal View History

2022-04-28 21:46:05 +08:00
" List organization repositories
" GET /orgs/:org/repos
function! github#api#orgs#ListRepos(org) abort
let repos = []
for i in range(1,github#api#util#GetLastPage('orgs/' . a:org . '/repos'))
call extend(repos,github#api#util#Get('orgs/' . a:org . '/repos?page=' . i,[]))
endfor
return repos
endfunction
""
" @public
" Get an organization
"
" Github API : GET /orgs/:org
function! github#api#orgs#Get(org) abort
return github#api#util#Get(join(['orgs', a:org], '/'), [])
endfunction
""
" @public
" Edit an organization
"
" Input: >
" {
" "billing_email": "support@github.com",
" "blog": "https://github.com/blog",
" "company": "GitHub",
" "email": "support@github.com",
" "location": "San Francisco",
" "name": "github",
" "description": "GitHub, the company."
" }
" <
" Github API : PATCH /orgs/:org
function! github#api#orgs#Edit(org,orgdata,user,password) abort
return github#api#util#Get(join(['orgs', a:org], '/'),
\ ['-X', 'PATCH', '-d', json_encode(a:orgdata),
\ '-u', a:user .':'. a:password])
endfunction
""
" @public
" List all users who are members of an organization.
"
" {filter}Filter members returned in the list. Can be one of:
" * 2fa_disabled: Members without two-factor authentication enabled. Available for organization owners.
" * all: All members the authenticated user can see.
" * Default: all.
"
" {role}Filter members returned by their role. Can be one of:
" * all: All members of the organization, regardless of role.
" * admin: Organization owners.
" * member: Non-owner organization members.
" * Default: all.
"
" Github API : GET /orgs/:org/members
function! github#api#orgs#ListMembers(org,filter,role) abort
let url = join(['orgs', a:org, 'members'], '/')
if index(['2fa_disabled', 'all'], a:filter) == -1
let url = url . '?filter=all'
else
let url = url . '?filter=' . a:filter
endif
if index(['admin', 'member', 'all'], a:role) == -1
let url = url . '&role=all'
else
let url = url . '&role=' . a:role
endif
return github#api#util#Get(url,[])
endfunction
""
" @public
" Check if a user is, publicly or privately, a member of the organization.
"
" Status:
"
" * 204: requester is an organization member and user is a member
" * 404: requester is an organization member and user is not a member,
" requester is not an organization member and is inquiring about themselves
" * 302: requester is not an organization member
"
" Github API : GET /orgs/:org/members/:username
function! github#api#orgs#CheckMembership(org,username,user,password) abort
return github#api#util#GetStatus(join(['orgs', a:org, 'members', a:username], '/'),
\ ['-u', a:user . ':' . a:password])
endfunction
""
" @public
" Remove a member
"
" Github API : DELETE /orgs/:org/members/:username
function! github#api#orgs#DeleteMember(org,username,user,password) abort
return github#api#util#GetStatus(join(['orgs', a:org, 'members', a:username], '/'),
\['-u', a:user . ':' . a:password])
endfunction
""
" @public
" List public members of an org
"
" Github API : GET /orgs/:org/public_members
function! github#api#orgs#ListPublicMembers(org) abort
return github#api#util#Get(join(['orgs', a:org, 'public_members'], '/'), [])
endfunction
""
" @public
" Check public membership
"
" Github API : GET /orgs/:org/public_members/:username
function! github#api#orgs#CheckPublicMembership(org,username) abort
return github#api#util#GetStatus(join(['orgs', a:org, 'public_members', a:username], '/'), []) == 204
endfunction
""
" @public
" Publicize a user's membership
" The user can publicize their own membership. (A user cannot publicize the membership for another user.)
"
" Github API : PUT /orgs/:org/public_members/:username
function! github#api#orgs#Publicize(org,user,password) abort
return github#api#util#GetStatus(join(['orgs', a:org, 'public_members', a:user], '/'),
\ ['-X', 'PUT',
\ '-u', a:user . ':' . a:password]) == 204
endfunction
""
" @public
" Conceal a user's membership
"
" Github API : DELETE /orgs/:org/public_members/:username
function! github#api#orgs#ConcealUser(org,user,password) abort
return github#api#util#GetStatus(join(['orgs', a:org, 'public_members', a:user], '/'),
\ ['-X', 'DELETE',
\ '-u', a:user . ':' . a:password]) == 204
endfunction
""
" @public
" Get organization membership
"
" Github API : GET /orgs/:org/memberships/:username
function! github#api#orgs#GetMemberships(org,username,user,password) abort
return github#api#util#Get(join(['orgs', a:org, 'memberships', a:username], '/'),
\ ['-u', a:user . ':' . a:password])
endfunction
""
" @public
" Add or update organization membership,use admin or member for {role}
"
" Github API : PUT /orgs/:org/memberships/:username
function! github#api#orgs#UpdateMembership(org,username,user,password,role) abort
let url = join(['orgs', a:org, 'memberships', a:username], '/')
if index(['admin', 'member'], a:role) == -1
let url .= '?role=member'
else
let url .= '?role=' . a:role
endif
return github#api#util#Get(url,['-X', 'PUT', '-u', a:user . ':' . a:password])
endfunction
""
" @public
" Remove organization membership
"
" Github API : DELETE /orgs/:org/memberships/:username
function! github#api#orgs#RemoveMembership(org,username,user,password) abort
return github#api#util#GetStatus(join(['orgs', a:org, 'memberships', a:username], '/'),
\ ['-X', 'DELETE',
\ '-u', a:user . ':' . a:password]) == 204
endfunction