moved packages (u need to update ur scripts!!!)

This commit is contained in:
Yoshman29
2023-04-12 02:00:34 +02:00
parent 42fc092a7e
commit f85d8b1675
76 changed files with 160 additions and 122 deletions
+134
View File
@@ -0,0 +1,134 @@
package funkin.system.github;
#if GITHUB_API
import haxe.Json;
import haxe.Exception;
import haxe.Http;
// TODO: Document further and perhaps make this a Haxelib.
class GitHub {
/**
* Gets all the releases from a specific GitHub repository using the GitHub API.
* @param user
* @param repository
* @return Releases
*/
public static function getReleases(user:String, repository:String, ?onError:Exception->Void):Array<GitHubRelease> {
try {
var url = 'https://api.github.com/repos/${user}/${repository}/releases';
var data = Json.parse(__requestOnGitHubServers(url));
if (!(data is Array))
throw __parseGitHubException(data);
return data;
} catch(e) {
if (onError != null)
onError(e);
}
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
* @param keepPrereleases Whenever to keep Pre-Releases.
* @param keepDrafts Whenever to keep Drafts.
* @return Filtered releases.
*/
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];
public static function __requestOnGitHubServers(url:String) {
var h = new Http(url);
h.setHeader("User-Agent", "request");
var r = null;
h.onData = function(d) {
r = d;
}
h.onError = function(e) {
throw e;
}
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)";
if (Reflect.hasField(obj, "message"))
msg = Reflect.field(obj, "message");
if (Reflect.hasField(obj, "documentation_url"))
url = Reflect.field(obj, "documentation_url");
return new GitHubException(msg, url);
}
}
#else
import haxe.Json;
import haxe.Exception;
class GitHub {
/**
* Gets all the releases from a specific GitHub repository using the GitHub API.
* @param user
* @param repository
* @return Releases
*/
public static function getReleases(user:String, repository:String, ?onError:Exception->Void):Array<GitHubRelease> {
return [];
}
public static function getContributors(user:String, repository:String, ?onError:Exception->Void):Array<GitHubContributor> {
return [];
}
/**
* Filters all releases gotten by `getReleases`
* @param releases Releases
* @param keepPrereleases Whenever to keep Pre-Releases.
* @param keepDrafts Whenever to keep Drafts.
* @return Filtered releases.
*/
public static inline function filterReleases(releases:Array<GitHubRelease>, keepPrereleases:Bool = true, keepDrafts:Bool = false)
return releases;
public static function __requestOnGitHubServers(url:String) {
return null;
}
public static function __requestBytesOnGitHubServers(url:String) {
return null;
}
private static function __parseGitHubException(obj:Dynamic):GitHubException {
return null;
}
}
#end
@@ -0,0 +1,19 @@
package funkin.system.github;
import funkin.system.github.GitHubUser;
typedef GitHubAsset = {
var url:String;
var id:Int;
var node_id:String;
var name:String;
var label:String;
var uploader:GitHubUser;
var content_type:String;
var state:String;
var size:UInt;
var download_count:Int;
var created_at:String;
var updated_at:String;
var browser_download_url:String;
}
@@ -0,0 +1,23 @@
package funkin.system.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;
}
@@ -0,0 +1,15 @@
package funkin.system.github;
import haxe.Exception;
class GitHubException extends Exception {
public var apiMessage:String;
public var documentationUrl:String;
public function new(apiMessage:String, documentationUrl:String) {
super('[GitHubException] ${apiMessage} (Check ${documentationUrl})');
this.apiMessage = apiMessage;
this.documentationUrl = documentationUrl;
}
}
@@ -0,0 +1,13 @@
package funkin.system.github;
typedef GitHubReactions = {
var url:String;
var total_count:Int;
// +1 and -1 cant be added, you need to use Reflect.field
var laugh:Int;
var hooray:Int;
var confused:Int;
var heart:Int;
var rocket:Int;
var eyes:Int;
}
@@ -0,0 +1,62 @@
package funkin.system.github;
typedef GitHubRelease = {
/**
* Body of the GitHub request (Markdown)
*/
var body:String;
/**
* Url of the release (GitHub API)
*/
var url:String;
/**
* Url for the assets JSON. Also accessible via `GitHubRelease.assets`
*/
var assets_url:String;
/**
* Template URL for asset download link.
*/
var upload_url:String;
/**
* Link to the release on the GitHub website.
*/
var html_url:String;
/**
* ID of the release.
*/
var id:Int;
/**
* Author of the release
*/
var author:GitHubUser;
var node_id:String;
var tag_name:String;
var target_commitish:String;
var name:String;
var draft:Bool;
var prerelease:Bool;
var created_at:String;
var published_at:String;
var assets:Array<GitHubAsset>;
var tarball_url:String;
var zipball_url:String;
var reactions:GitHubReactions;
}
+132
View File
@@ -0,0 +1,132 @@
package funkin.system.github;
typedef GitHubUser = {
/**
* Username of the user.
*/
var login:String;
/**
* ID of the user.
*/
var id:Int;
/**
* ID of the current node on the GitHub database.
*/
var node_id:String;
/**
* Link to the avatar (profile picture).
*/
var avatar_url:String;
/**
* Unknown
*/
var gravatar_id:String;
/**
* URL to the user on GitHub's servers.
*/
var url:String;
/**
* URL to the user on GitHub's website.
*/
var html_url:String;
/**
* URL on GitHub's API to access this user's followers.
*/
var followers_url:String;
/**
* URL on GitHub's API to access the accounts this user is following.
*/
var following_url:String;
/**
* URL on GitHub's API to access this user's gists.
*/
var gists_url:String;
/**
* URL on GitHub's API to access this user's starred repositories.
*/
var starred_url:String;
// NOT COMPLETE: MISSING repos_url, organizations_url, subscriptions_url, events_url, received_events_url.
/**
* Type of the user.
*/
var type:GitHubUserType;
/**
* Whenever the user is a GitHub administrator.
*/
var site_admin:Bool;
/**
* Name of the user.
*/
var name:String;
/**
* The company this user belongs to. Can be `null`.
*/
var company:String;
var blog:String;
var location:String;
var email:String;
var hireable:Null<Bool>;
var bio:String;
/**
* Twitter username of the user. Can be null.
*/
var twitter_username:String;
/**
* Number of public repos this user own.
*/
var public_repos:Int;
/**
* Number of public gists this user own.
*/
var public_gists:Int;
/**
* Number of followers this user have
*/
var followers:Int;
/**
* Number of accounts this user follows.
*/
var following:Int;
/**
* Date of creation of the account
*/
var created_at:String;
/**
* Date of last account update.
*/
var updated_at:String;
}
@:enum
abstract GitHubUserType(String) {
var USER = "User";
var ORGANIZATION = "Organization";
}