contributors menu

This commit is contained in:
Yoshman29
2022-12-24 03:40:31 +01:00
parent 6fd67ee268
commit 2fe22a61fb
7 changed files with 149 additions and 33 deletions
+30 -1
View File
@@ -28,6 +28,22 @@ class GitHub {
return [];
}
public static function getContributors(user:String, repository:String, ?onError:Exception->Void):Array<GitHubContributor> {
try {
var url = 'https://api.github.com/repos/${user}/${repository}/contributors';
var data = Json.parse(__requestOnGitHubServers(url));
if (!(data is Array))
throw __parseGitHubException(data);
return data;
} catch(e) {
if (onError != null)
onError(e);
}
return [];
}
/**
* Filters all releases gotten by `getReleases`
* @param releases Releases
@@ -38,7 +54,7 @@ class GitHub {
public static inline function filterReleases(releases:Array<GitHubRelease>, keepPrereleases:Bool = true, keepDrafts:Bool = false)
return [for(release in releases) if (release != null && (!release.prerelease || (release.prerelease && keepPrereleases)) && (!release.draft || (release.draft && keepDrafts))) release];
private static function __requestOnGitHubServers(url:String) {
public static function __requestOnGitHubServers(url:String) {
var h = new Http(url);
h.setHeader("User-Agent", "request");
var r = null;
@@ -51,6 +67,19 @@ class GitHub {
h.request(false);
return r;
}
public static function __requestBytesOnGitHubServers(url:String) {
var h = new Http(url);
h.setHeader("User-Agent", "request");
var r = null;
h.onBytes = function(d) {
r = d;
}
h.onError = function(e) {
throw e;
}
h.request(false);
return r;
}
private static function __parseGitHubException(obj:Dynamic):GitHubException {
var msg:String = "(No message)";
var url:String = "(No API url)";
+23
View File
@@ -0,0 +1,23 @@
package funkin.github;
typedef GitHubContributor = {
var login:String;
var id:Int;
var node_id:String;
var avatar_url:String;
var gravatar_id:String;
var url:String;
var html_url:String;
var followers_url:String;
var following_url:String;
var gists_url:String;
var starred_url:String;
var subscriptions_url:String;
var organizations_url:String;
var repos_url:String;
var events_url:String;
var received_events_url:String;
var type:String;
var site_admin:Bool;
var contributions:Int;
}