mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-04 04:40:05 +08:00
346 lines
12 KiB
VimL
346 lines
12 KiB
VimL
|
""
|
||
|
" @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
|