diff --git a/src/main/kotlin/com/lagradost/cloudstream3/gradle/CloudstreamExtension.kt b/src/main/kotlin/com/lagradost/cloudstream3/gradle/CloudstreamExtension.kt index 7607891..ba441e5 100644 --- a/src/main/kotlin/com/lagradost/cloudstream3/gradle/CloudstreamExtension.kt +++ b/src/main/kotlin/com/lagradost/cloudstream3/gradle/CloudstreamExtension.kt @@ -24,16 +24,44 @@ abstract class CloudstreamExtension @Inject constructor(project: Project) { apkinfo!!.urlPrefix = url } - fun setRepo(user: String, repo: String) { - repository = Repo(user, repo) + fun setRepo(user: String, repo: String, url: String, rawLinkFormat: String) { + repository = Repo(user, repo, url, rawLinkFormat) } - fun setRepo(identifier: String) { - val split = identifier - .removePrefix("https://") - .removePrefix("github.com") - .removeSurrounding("/") - .split("/") - repository = Repo(split[0], split[1]) + fun setRepo(user: String, repo: String, type: String) { + when { + type == "github" -> setRepo(user, repo, "https://github.com/${user}/${repo}", "https://raw.githubusercontent.com/${user}/${repo}/%branch%/%filename%") + type == "gitlab" -> setRepo(user, repo, "https://gitlab.com/${user}/${repo}", "https://gitlab.com/${user}/${repo}/-/raw/%branch%/%filename%") + type.startsWith("gitlab-") -> { + val domain = type.removePrefix("gitlab-") + setRepo(user, repo, "https://${domain}/${user}/${repo}", "https://${domain}/${user}/${repo}/-/raw/%branch%/%filename%") + } + type.startsWith("gitea-") -> { + val domain = type.removePrefix("gitea-") + setRepo(user, repo, "https://${domain}/${user}/${repo}", "https://${domain}/${user}/${repo}/raw/branch/%branch%/%filename%") + } + else -> throw IllegalArgumentException("Unknown type ${type}. Use github, gitlab, gitlab- or gitea- or set repository via setRepo(user, repo, url, rawLinkFormat)") + } + } + fun setRepo(url: String) { + when { + url.startsWith("https://github.com") -> { + val split = url + .removePrefix("https://") + .removePrefix("github.com") + .removeSurrounding("/") + .split("/") + setRepo(split[0], split[1], "github") + } + url.startsWith("https://gitlab.com") -> { + val split = url + .removePrefix("https://") + .removePrefix("gitlab.com") + .removeSurrounding("/") + .split("/") + setRepo(split[0], split[1], "gitlab") + } + else -> throw IllegalArgumentException("Unknown domain, please set repository via setRepo(user, repo, type)") + } } internal var pluginClassName: String? = null @@ -55,12 +83,11 @@ class ApkInfo(extension: CloudstreamExtension, release: String) { val jarFile = cache.resolve("cloudstream.jar") } -class Repo(val user: String, val repo: String) { - val url: String - get() = "https://github.com/${user}/${repo}" - +class Repo(val user: String, val repo: String, val url: String, val rawLinkFormat: String) { fun getRawLink(filename: String, branch: String): String { - return "https://raw.githubusercontent.com/${user}/${repo}/${branch}/${filename}" + return rawLinkFormat + .replace("%filename%", filename) + .replace("%branch%", branch) } }