"" " @public " Get all users " " Github API : GET /users function! github#api#users#GetAllUsers() abort return github#api#util#Get('users', []) endfunction function! github#api#users#starred(user,page) abort return json_decode(join(systemlist('curl -s https://api.github.com/users/' . \a:user . '/starred' . '?page=' . a:page ),"\n")) endfunction function! github#api#users#starred_pages(user) abort let result = system('curl -si https://api.github.com/users/' . a:user . '/starred') if !v:shell_error let i = filter(split(result, "\n"), 'v:val =~# "^Link"')[0] return split(matchstr(i,'=\d\+',0,2),'=')[0] endif return 0 endfunction function! github#api#users#GetStarred(user) abort let rel = [] let pages = github#api#users#starred_pages(a:user) for page in range(1,pages) let repos = github#api#users#starred(a:user, page) for repo in repos call add(rel, repo) endfor endfor return rel endfunction " get a single user " GET /users/:username function! github#api#users#GetUser(username) abort return github#api#util#Get('users/' . a:username, []) endfunction "List followers of a user "GET /users/:username/followers function! github#api#users#ListFollowers(username) abort let followers = [] for i in range(1,github#api#util#GetLastPage('users/' . a:username . '/followers')) call extend(followers,github#api#util#Get('users/' . a:username . '/followers?page=' . i, [])) endfor return followers endfunction "List users followed by another user "GET /users/:username/following function! github#api#users#ListFollowing(username) abort let following = [] for i in range(1,github#api#util#GetLastPage('users/' . a:username . '/following')) call extend(following,github#api#util#Get('users/' . a:username . '/following?page=' . i, [])) endfor return following endfunction "" " @public " List orgs of a specified user. " " Github API : /users/:username/orgs function! github#api#users#ListAllOrgs(user) abort return github#api#util#Get(join(['users', a:user, 'orgs'], '/')) endfunction "" " @public " Check if one user follows another " " Github API : GET /users/:username/following/:target_user function! github#api#users#CheckTargetFollow(username,target) abort return github#api#util#GetStatus(join(['users', a:username, 'following', a:target], '/'),[]) endfunction