1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import CacheUtils from "./CacheUtils.js"
- export default class GithubUtils {
- static async getTop100Contributors(repo,modifier){
- const cacheKey="ghrepo/"+repo+"/contribs";
- let contributors=CacheUtils.get(cacheKey);
- if(!contributors){
- const endPoint=this.githubContribEndpoint(repo);
- contributors= await fetch(endPoint, {
- method: 'GET',
- headers: {
- 'Content-Type': 'application/json',
- 'Accept': 'application/json',
- }
- }).then((res) =>{
- if(res.ok&&res.status==200)return res.json() ;
- else throw "Failed to fetch!";
- });
- contributors=contributors.filter(u=>u.type=="User");
- if(!contributors)throw "Undefined contributors?";
- if(modifier)contributors=modifier(contributors);
- CacheUtils.set(cacheKey,contributors);
- }
- return contributors;
-
- }
- static async resolveUser(userId){
- const cacheKey="ghuser/"+userId;
- let userData=CacheUtils.get(cacheKey);
- if(!userData){
- const endPoint=this.githubUserEndPoint(userId);
- userData= await fetch(endPoint, {
- method: 'GET',
- headers: {
- 'Content-Type': 'application/json',
- 'Accept': 'application/json',
- }
- }).then((res) =>{
- if(res.ok&&res.status==200)return res.json() ;
- else throw "Failed to fetch!";
- });
- if(!userData)throw "Undefined userData?";
- CacheUtils.set(cacheKey,userData);
- }
- return userData;
-
- }
- }
- GithubUtils.githubContribEndpoint = (repo)=> `https://api.github.com/repos/${repo}/contributors?per_page=100`;
- GithubUtils.githubUserEndPoint = (user)=> `https://api.github.com/users/${user}`;
|