1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-04 02:20:04 +08:00
SpaceVim/bundle/github.vim/autoload/github/api/activity.vim
2022-04-28 21:46:05 +08:00

346 lines
12 KiB
VimL
Vendored

""
" @public
" List public events
"
" Github API : GET /events
function! github#api#activity#List_events() abort
return github#api#util#Get('events', [])
endfunction
""
" @public
" List repository events
"
" Github API : GET /repos/:owner/:repo/events
function! github#api#activity#List_repo_events(owner,repo) abort
return github#api#util#Get(join(['repos', a:owner, a:repo, 'events'], '/'), [])
endfunction
""
" @public
" List public events for a network of repositories
"
" Github API : GET /networks/:owner/:repo/events
function! github#api#activity#List_net_events(owner,repo) abort
return github#api#util#Get(join(['networks', a:owner, a:repo, 'events'], '/'), [])
endfunction
""
" @public
" List public events for an organization
"
" Github API : GET /orgs/:org/events
function! github#api#activity#List_org_events(org) abort
return github#api#util#Get(join(['orgs/', a:org, 'events'], '/'), [])
endfunction
""
" @public
" List events that a user has received
"
" These are events that you've received by watching repos and following users.
" If you are authenticated as the given user, you will see private events.
" Otherwise, you'll only see public events.
"
" Github API : GET /users/:username/received_events
function! github#api#activity#List_user_events(user) abort
return github#api#util#Get(join(['users', a:user, 'received_events'], '/'), [])
endfunction
""
" @public
" List public events that a user has received
"
" Github API : GET /users/:username/received_events/public
function! github#api#activity#List_public_user_events(user) abort
return github#api#util#Get(join(['users', a:user, 'received_events', 'public'], '/'), [])
endfunction
""
" @public
" List events performed by a user
"
" If you are authenticated as the given user, you will see your private events.
" Otherwise, you'll only see public events.
"
" Github API : GET /users/:username/events
function! github#api#activity#Performed_events(user) abort
return github#api#util#Get(join(['users', a:user, 'events'], '/'), [])
endfunction
""
" @public
" List public events performed by a user
"
" Github API : GET /users/:username/events/public
function! github#api#activity#Performed_public_events(user) abort
return github#api#util#Get(join(['users', a:user, 'events', 'public'], '/'), [])
endfunction
""
" @public
" List events for an organization
"
" NOTE:This is the user's organization dashboard. You must be authenticated as the user to view this.
"
" Github API : GET /users/:username/events/orgs/:org
function! github#api#activity#List_user_org_events(user,org,password) abort
return github#api#util#Get(join(['users', a:user, 'events', 'org', a:org], '/'),
\ ['-u', a:user . ':' . a:password])
endfunction
" Notification Reasons
function! s:notification_reason(n) abort
let reasons = {
\ 'subscribed': 'The notification arrived because you`re watching the repository',
\ 'manual': 'The notification arrived because you`ve specifically decided'
\ . ' to subscribe to the thread (via an Issue or Pull Request)',
\ 'author': 'The notification arrived because you`ve created the thread',
\ 'comment': 'The notification arrived because you`ve commented on the thread',
\ 'mention': 'The notification arrived because you were specifically @mentioned in the content',
\ 'team_mention': 'The notification arrived because you were on a team that was mentioned (like @org/team)',
\ 'state_change': 'The notification arrived because you changed the thread state '
\ . '(like closing an Issue or merging a Pull Request)',
\ 'assign': 'The notification arrived because you were assigned to the Issue',
\}
return { 'reason' : a:n.reason . '->' . reasons[a:n.reason]}
endfunction
""
" @public
" List your notifications
"
" Github API : /notifications
function! github#api#activity#List_notifications(user,password) abort
return github#api#util#Get('notifications', ['-u', a:user . ':' . a:password])
endfunction
""
" @public
" List your notifications in a repository
"
" Github API : GET /repos/:owner/:repo/notifications
function! github#api#activity#List_notifications_for_repo(onwer,repo,user,password) abort
return github#api#util#Get(join(['repos', a:onwer, a:repo, 'notifications'], '/'),
\ ['-u', a:user . ':' . a:password])
endfunction
""
" @public
" Mark as read,you need use {last_read_at} as args.
" This is a timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ. Default: Time.now
"
" Github API : PUT /notifications
function! github#api#activity#Mark_All_as_read(user,password,last_read_at) abort
let time = !empty(a:last_read_at) ? a:last_read_at : github#api#util#Get_current_time()
let data = {}
let data.last_read_at = time
return github#api#util#GetStatus('notifications', ['-d', json_encode(data),
\ '-X', 'PUT', '-u', a:user . ':' . a:password]) == 205
endfunction
""
" @public
" Mark notifications as read in a repository
"
" Github API : PUT /repos/:owner/:repo/notifications
function! github#api#activity#Mark_All_as_read_for_repo(owner,repo,user,password,last_read_at) abort
let time = !empty(a:last_read_at) ? a:last_read_at : github#api#util#Get_current_time()
let data = {}
let data.last_read_at = time
return github#api#util#GetStatus(join(['repos', a:owner, a:repo, 'notifications'], '/'),
\ ['-d', json_encode(data),
\ '-X', 'PUT', '-u', a:user . ':' . a:password])
endfunction
""
" @public
" View a single thread
"
" Github API : GET /notifications/threads/:id
function! github#api#activity#Get_thread(id,user,password) abort
return github#api#util#Get(join(['notifications', 'threads', a:id], '/'),
\ ['-u', a:user . ':' . a:password])
endfunction
""
" @public
" Mark a thread as read
"
" Github API : PATCH /notifications/threads/:id
function! github#api#activity#Mark_thread(id,user,password) abort
return github#api#util#GetStatus(join(['notifications', 'threads', a:id], '/'),
\ ['-X', 'PATCH',
\ '-u', a:user . ':' . a:password]) == 205
endfunction
""
" @public
" Get a Thread Subscription
"
" Github API : GET /notifications/threads/:id/subscription
function! github#api#activity#Get_thread_sub(id,user,password) abort
return github#api#util#Get(join(['notifications', 'threads', a:id, 'subscription'], '/'),
\ ['-u', a:user . ':' . a:password])
endfunction
""
" @public
" Set a Thread Subscription
"
" This lets you subscribe or unsubscribe from a conversation.
" Unsubscribing from a conversation mutes all future notifications
" (until you comment or get @mentioned once more).
"
" Github API : PUT /notifications/threads/:id/subscription
function! github#api#activity#Set_thread_sub(id,user,password,subscribed,ignored) abort
let data = {}
let data.subscribed = a:subscribed
let data.ignored = a:ignored
return github#api#util#Get(join(['notifications', 'threads', a:id, 'subscription'], '/'),
\ ['-X', 'PUT', '-d', json_encode(data),
\ '-u', a:user . ':' . a:password])
endfunction
""
" @public
" Delete a Thread Subscription
"
" Github API : DELETE /notifications/threads/:id/subscription
function! github#api#activity#Del_thread_sub(id,user,password) abort
return github#api#util#GetStatus(join(['notifications', 'threads', a:id, 'subscription'], '/'),
\ ['-u', a:user . ':' . a:password]) == 204
endfunction
""
" @public
" List stargazers of the repo
"
" Github API : GET /repos/:owner/:repo/stargazers
function! github#api#activity#List_stargazers(owner,repo, ...) abort
if a:0 > 0
let page = a:1
let repo = github#api#repos#get_repo(a:owner, a:repo)
if has_key(repo, 'id')
let repo_id = repo.id
" https://api.github.com/repositories/77358263/stargazers?page=97
return github#api#util#Get(join(['repositories', repo_id, 'stargazers?page=' . page], '/'), [])
else
return repo
endif
else
return github#api#util#Get(join(['repos', a:owner, a:repo, 'stargazers'], '/'), [])
endif
endfunction
""
" @public
" List all stargazers of the repo
"
" Github API : GET /repos/:owner/:repo/stargazers
function! github#api#activity#List_all_stargazers(owner, repo) abort
let issues = []
for i in range(1,github#api#util#GetLastPage('repos/' . a:owner . '/' . a:repo . '/' . 'stargazers'))
call extend(issues,github#api#util#Get('repos/' . a:owner . '/' . a:repo . '/' . 'stargazers?page=' . i, []))
endfor
return issues
endfunction
""
" @public
" Check starred
"
" Github API : GET /user/starred/:owner/:repo
function! github#api#activity#CheckStarred(owner,repo,user,password) abort
return github#api#util#GetStatus(join(['user', 'starred', a:owner, a:repo], '/'),
\ ['-u', a:user . ':' . a:password]) == 204
endfunction
""
" @public
" Star a repository
"
" Github API : PUT /user/starred/:owner/:repo
function! github#api#activity#Star(owner,repo,user,password) abort
return github#api#util#GetStatus(join(['user', 'starred', a:owner, a:repo], '/'),
\ ['-X', 'PUT',
\ '-u', a:user . ':' . a:password]) == 204
endfunction
""
" @public
" Unstar a repository
"
" Github API : DELETE /user/starred/:owner/:repo
function! github#api#activity#Unstar(owner,repo,user,password) abort
return github#api#util#GetStatus(join(['user', 'starred', a:owner, a:repo], '/'),
\ ['-X', 'DELETE',
\ '-u', a:user . ':' . a:password]) == 204
endfunction
""
" @public
" List watchers
"
" Github API : GET /repos/:owner/:repo/subscribers
function! github#api#activity#List_watchers(owner,repo) abort
return github#api#util#Get(join(['repos', a:owner, a:repo , 'subscribers'], '/'), [])
endfunction
""
" @public
" List repositories being watched by a user.
"
" Github API : GET /users/:username/subscriptions
function! github#api#activity#List_watched_repo(user) abort
return github#api#util#Get(join(['users', a:user, 'subscriptions'], '/'), [])
endfunction
""
" @public
" List repositories being watched by the authenticated user.
"
" Github API : GET /user/subscriptions
function! github#api#activity#List_auth_watched_repo(user,password) abort
return github#api#util#Get(join(['user', 'subscriptions'], '/'),
\ ['-u', a:user . ':' . a:password])
endfunction
""
" @public
" Get a Repository Subscription
"
" Github API : GET /repos/:owner/:repo/subscription
function! github#api#activity#Check_repo_Sub(owner,repo,user,password) abort
return github#api#util#Get(join(['repos', a:owner, a:repo, 'subscription'], '/'),
\ ['-u', a:user . ':' . a:password])
endfunction
""
" @public
" Set a Repository Subscription
"
" If you would like to watch a repository, set {sub} to 1. If you would like to ignore
" notifications made within a repository, set {ignore} to 1. If you would like to stop
" watching a repository, delete the repository's subscription completely.
"
" Github API : PUT /repos/:owner/:repo/subscription
function! github#api#activity#Set_repo_sub(owner,repo,user,password,sub,ignore) abort
let data = {}
let data.subscribed = a:sub == 1 ? v:true : v:false
let data.ignored = a:ignore == 1 ? v:true : v:false
return github#api#util#Get(join(['repos', a:owner, a:repo, 'subscription'], '/'),
\ ['-X', 'PUT', '-d', json_encode(data),
\ '-u', a:user . ':' . a:password])
endfunction
""
" @public
" Delete a Repository Subscription
"
" Github API : DELETE /repos/:owner/:repo/subscription
function! github#api#activity#Del_repo_sub(owner,repo,user,password) abort
return github#api#util#GetStatus(join(['repos', a:owner, a:repo, 'subscription'], '/'),
\ ['-X', 'DELETE',
\ '-u', a:user . ':' . a:password]) == 204
endfunction