diff --git a/build.gradle b/build.gradle index 998c121c99b93596337ee516e158be630cc3573a..e6a4f68e74e4751199474cca5d76d5880e40534f 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.6.3' + classpath 'com.android.tools.build:gradle:4.0.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" classpath "gradle.plugin.com.github.salomonbrys.gradle.kotlin.js:kotlin-js-npm-bundle:1.0.0" @@ -29,6 +29,5 @@ allprojects { repositories { google() jcenter() - } } diff --git a/example-jvm/.gitignore b/example-jvm/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..42afabfd2abebf31384ca7797186a27a4b7dbee8 --- /dev/null +++ b/example-jvm/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/example-jvm/build.gradle b/example-jvm/build.gradle new file mode 100644 index 0000000000000000000000000000000000000000..aa65faac6880a3073e6aee408739ef158a7a964f --- /dev/null +++ b/example-jvm/build.gradle @@ -0,0 +1,25 @@ +apply plugin: 'java' +apply plugin: 'kotlin' +apply plugin: 'application' + +compileKotlin { + kotlinOptions { + jvmTarget = "1.8" + } +} + +compileTestKotlin { + kotlinOptions { + jvmTarget = "1.8" + } +} + +mainClassName = "me.jfenn.gitrest.example.jvm.MainKt" + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7" + + implementation project(':gitrest') +} diff --git a/example-jvm/src/main/java/me/jfenn/gitrest/example/jvm/Main.kt b/example-jvm/src/main/java/me/jfenn/gitrest/example/jvm/Main.kt new file mode 100644 index 0000000000000000000000000000000000000000..4077a3d34f679c4a31f11d3f66402ec707983cbb --- /dev/null +++ b/example-jvm/src/main/java/me/jfenn/gitrest/example/jvm/Main.kt @@ -0,0 +1,33 @@ +package me.jfenn.gitrest.example.jvm + +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch +import me.jfenn.gitrest.RequestProviderDelegate +import me.jfenn.gitrest.impl.gitea.GiteaProvider +import me.jfenn.gitrest.impl.github.GithubProvider +import me.jfenn.gitrest.impl.gitlab.GitlabProvider + +val delegate = RequestProviderDelegate(arrayOf( + GithubProvider, + GitlabProvider, + GiteaProvider +)) + +suspend fun fetchRepository(repoId: String) { + delegate.getRepo(repoId)?.let { + println(""" + ${it.slug}: + ${it.description} + ${it.url} + ${it.websiteUrl} + """.trimIndent()) + } ?: run { + println("ERROR: failed to fetch repo $repoId") + } +} + +suspend fun main() { + fetchRepository("gitea@code.horrific.dev:james/git-rest-wrapper") + fetchRepository("github:fennifith/Attribouter") + fetchRepository("gitlab@salsa.debian.org:reproducible-builds/reproducible-website") +} diff --git a/example-kotlinbrowser/src/main/kotlin/Main.kt b/example-kotlinbrowser/src/main/kotlin/Main.kt index b162ec0cd6a1ab4c9e44071462bae94d2ba56397..5f42c1551351bc071eff89cc8bbc35ad85546c4c 100644 --- a/example-kotlinbrowser/src/main/kotlin/Main.kt +++ b/example-kotlinbrowser/src/main/kotlin/Main.kt @@ -1,7 +1,7 @@ -import gitrest.RequestProviderDelegate -import gitrest.impl.gitea.GiteaProvider -import gitrest.impl.github.GithubProvider -import gitrest.impl.gitlab.GitlabProvider +import me.jfenn.gitrest.RequestProviderDelegate +import me.jfenn.gitrest.impl.gitea.GiteaProvider +import me.jfenn.gitrest.impl.github.GithubProvider +import me.jfenn.gitrest.impl.gitlab.GitlabProvider import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import kotlinx.html.InputType diff --git a/gitrest/build.gradle b/gitrest/build.gradle index f5c553855cee3052c92d61c573f5a815791ef274..05f72cc24718dc3541a1d16b8c526eb267a2e393 100644 --- a/gitrest/build.gradle +++ b/gitrest/build.gradle @@ -5,6 +5,8 @@ apply plugin: 'maven-publish' group 'gitrest' version '0.0.1' +project.plugins.apply(org.jetbrains.kotlin.gradle.targets.js.npm.NpmResolverPlugin) + kotlin { js { compilations.main.kotlinOptions.moduleKind = 'umd' @@ -25,6 +27,8 @@ kotlin { } } + jvm() + sourceSets { commonMain { dependencies { @@ -90,3 +94,6 @@ kotlin { } task run dependsOn "check" + +// this doesn't launch properly on Arch & always fails (unsure why, but it's lengthy & a bit heavy for CI testing regardless) +gradle.startParameter.excludedTaskNames += ["jsBrowserTest"] diff --git a/gitrest/src/commonMain/kotlin/gitrest/RequestProviderDelegate.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/RequestProviderDelegate.kt similarity index 88% rename from gitrest/src/commonMain/kotlin/gitrest/RequestProviderDelegate.kt rename to gitrest/src/commonMain/kotlin/me/jfenn/gitrest/RequestProviderDelegate.kt index 1c3deccfc0123d19bec90194f447e87239e18bb5..cd92a3ee6f49237c53df41f3ae9d3727a791f9f0 100644 --- a/gitrest/src/commonMain/kotlin/gitrest/RequestProviderDelegate.kt +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/RequestProviderDelegate.kt @@ -1,8 +1,9 @@ -package gitrest +package me.jfenn.gitrest -import gitrest.base.RequestProvider -import gitrest.base.ServiceBuilder -import gitrest.model.* +import me.jfenn.gitrest.base.RequestProvider +import me.jfenn.gitrest.base.ServiceBuilder +import me.jfenn.gitrest.model.* +import me.jfenn.gitrest.model.DelegateResource class RequestProviderDelegate(private val services: Array>) : RequestProvider { diff --git a/gitrest/src/commonMain/kotlin/gitrest/base/RequestProvider.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/base/RequestProvider.kt similarity index 63% rename from gitrest/src/commonMain/kotlin/gitrest/base/RequestProvider.kt rename to gitrest/src/commonMain/kotlin/me/jfenn/gitrest/base/RequestProvider.kt index 9f269d7bea8ee9ed410e5f4e5712b8167ec79ed5..17b30f4fe01e39a633ebe16ecae2c90dfc19ca27 100644 --- a/gitrest/src/commonMain/kotlin/gitrest/base/RequestProvider.kt +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/base/RequestProvider.kt @@ -1,8 +1,8 @@ -package gitrest.base +package me.jfenn.gitrest.base -import gitrest.model.License -import gitrest.model.Repo -import gitrest.model.User +import me.jfenn.gitrest.model.License +import me.jfenn.gitrest.model.Repo +import me.jfenn.gitrest.model.User interface RequestProvider { diff --git a/gitrest/src/commonMain/kotlin/gitrest/base/ServiceBuilder.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/base/ServiceBuilder.kt similarity index 95% rename from gitrest/src/commonMain/kotlin/gitrest/base/ServiceBuilder.kt rename to gitrest/src/commonMain/kotlin/me/jfenn/gitrest/base/ServiceBuilder.kt index f6c9c30e8185c88e6512352698ea260d9fb78f1f..faa0de50b9c8a640c8832f4e8fbc965118541d4b 100644 --- a/gitrest/src/commonMain/kotlin/gitrest/base/ServiceBuilder.kt +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/base/ServiceBuilder.kt @@ -1,4 +1,4 @@ -package gitrest.base +package me.jfenn.gitrest.base import io.ktor.client.HttpClient import io.ktor.client.HttpClientConfig diff --git a/gitrest/src/commonMain/kotlin/gitrest/impl/gitea/GiteaProvider.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitea/GiteaProvider.kt similarity index 81% rename from gitrest/src/commonMain/kotlin/gitrest/impl/gitea/GiteaProvider.kt rename to gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitea/GiteaProvider.kt index c53aa6b2dec6871fbd05f8847a861e1573425ede..bec522242abe83ab9e992d2cb5ddf8bdd203abc3 100644 --- a/gitrest/src/commonMain/kotlin/gitrest/impl/gitea/GiteaProvider.kt +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitea/GiteaProvider.kt @@ -1,10 +1,10 @@ -package gitrest.impl.gitea +package me.jfenn.gitrest.impl.gitea -import gitrest.base.RequestProvider -import gitrest.base.ServiceBuilder -import gitrest.impl.gitea.model.GiteaRepo -import gitrest.impl.gitea.model.GiteaUser -import gitrest.model.License +import me.jfenn.gitrest.base.RequestProvider +import me.jfenn.gitrest.base.ServiceBuilder +import me.jfenn.gitrest.impl.gitea.model.GiteaRepo +import me.jfenn.gitrest.impl.gitea.model.GiteaUser +import me.jfenn.gitrest.model.License import io.ktor.client.HttpClient import io.ktor.client.features.defaultRequest import io.ktor.client.request.get @@ -29,7 +29,7 @@ class GiteaProvider( val tokens: MutableMap = HashMap() override fun create(context: String?): GiteaProvider { - val client = gitrest.impl.github.GithubProvider.ktor { + val client = ktor { defaultRequest { url { protocol = URLProtocol.HTTPS diff --git a/gitrest/src/commonMain/kotlin/gitrest/impl/gitea/model/GiteaLicense.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitea/model/GiteaLicense.kt similarity index 61% rename from gitrest/src/commonMain/kotlin/gitrest/impl/gitea/model/GiteaLicense.kt rename to gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitea/model/GiteaLicense.kt index fee1abac4c2813591987bc7555a9fab4264c605e..2308060e286e0ab8e3166d075be1e6d3777029b5 100644 --- a/gitrest/src/commonMain/kotlin/gitrest/impl/gitea/model/GiteaLicense.kt +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitea/model/GiteaLicense.kt @@ -1,3 +1,3 @@ -package gitrest.impl.gitea.model +package me.jfenn.gitrest.impl.gitea.model // TODO: placeholder file - Gitea has no "license" implementation diff --git a/gitrest/src/commonMain/kotlin/gitrest/impl/gitea/model/GiteaRepo.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitea/model/GiteaRepo.kt similarity index 62% rename from gitrest/src/commonMain/kotlin/gitrest/impl/gitea/model/GiteaRepo.kt rename to gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitea/model/GiteaRepo.kt index d23c4b45c02e46b801cea7b05370cc17722a1e63..c28b1e2e39bf4196af95b900bd4e591226cd1142 100644 --- a/gitrest/src/commonMain/kotlin/gitrest/impl/gitea/model/GiteaRepo.kt +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitea/model/GiteaRepo.kt @@ -1,20 +1,25 @@ -package gitrest.impl.gitea.model +package me.jfenn.gitrest.impl.gitea.model -import gitrest.model.Repo +import me.jfenn.gitrest.model.Repo import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import me.jfenn.gitrest.util.OptionalStringSerializer +@Serializable class GiteaRepo : Repo() { @SerialName("full_name") override val slug: String? = null @SerialName("description") + @Serializable(with = OptionalStringSerializer::class) override val description: String? = null @SerialName("html_url") override val url: String? = null @SerialName("website") + @Serializable(with = OptionalStringSerializer::class) override val websiteUrl: String? = null @SerialName("clone_url") diff --git a/gitrest/src/commonMain/kotlin/gitrest/impl/gitea/model/GiteaUser.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitea/model/GiteaUser.kt similarity index 80% rename from gitrest/src/commonMain/kotlin/gitrest/impl/gitea/model/GiteaUser.kt rename to gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitea/model/GiteaUser.kt index 632b0c3ae90dcf598e9d6e1d5693e9976d8b507c..e48e1a2a77ae48fd20dd9194e37d714f284fdf22 100644 --- a/gitrest/src/commonMain/kotlin/gitrest/impl/gitea/model/GiteaUser.kt +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitea/model/GiteaUser.kt @@ -1,8 +1,10 @@ -package gitrest.impl.gitea.model +package me.jfenn.gitrest.impl.gitea.model -import gitrest.model.User +import me.jfenn.gitrest.model.User import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +@Serializable class GiteaUser : User() { @SerialName("login") diff --git a/gitrest/src/commonMain/kotlin/gitrest/impl/github/GithubProvider.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/github/GithubProvider.kt similarity index 82% rename from gitrest/src/commonMain/kotlin/gitrest/impl/github/GithubProvider.kt rename to gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/github/GithubProvider.kt index 066e58bcd76f0cdd2721d0efc48fea098e015453..b7a0394e2c9be3ec7feb21e2f89b440d86b71395 100644 --- a/gitrest/src/commonMain/kotlin/gitrest/impl/github/GithubProvider.kt +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/github/GithubProvider.kt @@ -1,10 +1,10 @@ -package gitrest.impl.github +package me.jfenn.gitrest.impl.github -import gitrest.base.RequestProvider -import gitrest.base.ServiceBuilder -import gitrest.impl.github.model.GithubLicense -import gitrest.impl.github.model.GithubRepo -import gitrest.impl.github.model.GithubUser +import me.jfenn.gitrest.base.RequestProvider +import me.jfenn.gitrest.base.ServiceBuilder +import me.jfenn.gitrest.impl.github.model.GithubLicense +import me.jfenn.gitrest.impl.github.model.GithubRepo +import me.jfenn.gitrest.impl.github.model.GithubUser import io.ktor.client.HttpClient import io.ktor.client.features.defaultRequest import io.ktor.client.request.get diff --git a/gitrest/src/commonMain/kotlin/gitrest/impl/github/model/GithubLicense.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/github/model/GithubLicense.kt similarity index 89% rename from gitrest/src/commonMain/kotlin/gitrest/impl/github/model/GithubLicense.kt rename to gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/github/model/GithubLicense.kt index 08ff70f99ba12ca3cfd47ced73ff2928571f2530..f7b2b77a987131827f341a6be923a21c0725a2d2 100644 --- a/gitrest/src/commonMain/kotlin/gitrest/impl/github/model/GithubLicense.kt +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/github/model/GithubLicense.kt @@ -1,6 +1,6 @@ -package gitrest.impl.github.model +package me.jfenn.gitrest.impl.github.model -import gitrest.model.License +import me.jfenn.gitrest.model.License import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/gitrest/src/commonMain/kotlin/gitrest/impl/github/model/GithubRepo.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/github/model/GithubRepo.kt similarity index 71% rename from gitrest/src/commonMain/kotlin/gitrest/impl/github/model/GithubRepo.kt rename to gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/github/model/GithubRepo.kt index 28797a3ebf73e1a46886339fd116cfb7f47e76bc..8584b91fe8e979fd3be68578d3e532d141efaa3c 100644 --- a/gitrest/src/commonMain/kotlin/gitrest/impl/github/model/GithubRepo.kt +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/github/model/GithubRepo.kt @@ -1,8 +1,9 @@ -package gitrest.impl.github.model +package me.jfenn.gitrest.impl.github.model -import gitrest.model.Repo +import me.jfenn.gitrest.model.Repo import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import me.jfenn.gitrest.util.OptionalStringSerializer @Serializable class GithubRepo : Repo() { @@ -11,12 +12,14 @@ class GithubRepo : Repo() { override val slug: String? = null @SerialName("description") + @Serializable(with = OptionalStringSerializer::class) override val description: String? = null @SerialName("html_url") override val url: String? = null @SerialName("homepage") + @Serializable(with = OptionalStringSerializer::class) override val websiteUrl: String? = null @SerialName("clone_url") diff --git a/gitrest/src/commonMain/kotlin/gitrest/impl/github/model/GithubUser.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/github/model/GithubUser.kt similarity index 88% rename from gitrest/src/commonMain/kotlin/gitrest/impl/github/model/GithubUser.kt rename to gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/github/model/GithubUser.kt index 5a22c42e69bdb996786c6434fbf5871251bec65b..178fdd6ee9cb91b5328623247061b5280dd68c29 100644 --- a/gitrest/src/commonMain/kotlin/gitrest/impl/github/model/GithubUser.kt +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/github/model/GithubUser.kt @@ -1,6 +1,6 @@ -package gitrest.impl.github.model +package me.jfenn.gitrest.impl.github.model -import gitrest.model.User +import me.jfenn.gitrest.model.User import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/gitrest/src/commonMain/kotlin/gitrest/impl/gitlab/GitlabProvider.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitlab/GitlabProvider.kt similarity index 84% rename from gitrest/src/commonMain/kotlin/gitrest/impl/gitlab/GitlabProvider.kt rename to gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitlab/GitlabProvider.kt index 17b43f151f80a945491ca331b38bc249a4602902..b9a25782c553f9c3f71e400ffdfd7c09ae28c3c4 100644 --- a/gitrest/src/commonMain/kotlin/gitrest/impl/gitlab/GitlabProvider.kt +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitlab/GitlabProvider.kt @@ -1,10 +1,10 @@ -package gitrest.impl.gitlab +package me.jfenn.gitrest.impl.gitlab -import gitrest.base.RequestProvider -import gitrest.base.ServiceBuilder -import gitrest.impl.gitlab.model.GitlabLicense -import gitrest.impl.gitlab.model.GitlabRepo -import gitrest.impl.gitlab.model.GitlabUser +import me.jfenn.gitrest.base.RequestProvider +import me.jfenn.gitrest.base.ServiceBuilder +import me.jfenn.gitrest.impl.gitlab.model.GitlabLicense +import me.jfenn.gitrest.impl.gitlab.model.GitlabRepo +import me.jfenn.gitrest.impl.gitlab.model.GitlabUser import io.ktor.client.HttpClient import io.ktor.client.features.defaultRequest import io.ktor.client.request.get diff --git a/gitrest/src/commonMain/kotlin/gitrest/impl/gitlab/model/GitlabLicense.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitlab/model/GitlabLicense.kt similarity index 90% rename from gitrest/src/commonMain/kotlin/gitrest/impl/gitlab/model/GitlabLicense.kt rename to gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitlab/model/GitlabLicense.kt index 675be402d8319f10bff2013c672e76e33cb24242..4fa28b3a930e43692d152b4fca4398797e1ffa65 100644 --- a/gitrest/src/commonMain/kotlin/gitrest/impl/gitlab/model/GitlabLicense.kt +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitlab/model/GitlabLicense.kt @@ -1,6 +1,6 @@ -package gitrest.impl.gitlab.model +package me.jfenn.gitrest.impl.gitlab.model -import gitrest.model.License +import me.jfenn.gitrest.model.License import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/gitrest/src/commonMain/kotlin/gitrest/impl/gitlab/model/GitlabRepo.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitlab/model/GitlabRepo.kt similarity index 88% rename from gitrest/src/commonMain/kotlin/gitrest/impl/gitlab/model/GitlabRepo.kt rename to gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitlab/model/GitlabRepo.kt index 7345196528bf3625d87bef0c6e722848bdc5418d..e777cb684e7712b6e28dd9f88a92e862c9c11e3e 100644 --- a/gitrest/src/commonMain/kotlin/gitrest/impl/gitlab/model/GitlabRepo.kt +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitlab/model/GitlabRepo.kt @@ -1,6 +1,6 @@ -package gitrest.impl.gitlab.model +package me.jfenn.gitrest.impl.gitlab.model -import gitrest.model.Repo +import me.jfenn.gitrest.model.Repo import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/gitrest/src/commonMain/kotlin/gitrest/impl/gitlab/model/GitlabUser.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitlab/model/GitlabUser.kt similarity index 88% rename from gitrest/src/commonMain/kotlin/gitrest/impl/gitlab/model/GitlabUser.kt rename to gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitlab/model/GitlabUser.kt index 6449adb17c4726c769f97fdd15d73ab128f37863..5834cb6a185890f160c10724b5fcea0015155254 100644 --- a/gitrest/src/commonMain/kotlin/gitrest/impl/gitlab/model/GitlabUser.kt +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/impl/gitlab/model/GitlabUser.kt @@ -1,6 +1,6 @@ -package gitrest.impl.gitlab.model +package me.jfenn.gitrest.impl.gitlab.model -import gitrest.model.User +import me.jfenn.gitrest.model.User import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/gitrest/src/commonMain/kotlin/gitrest/model/DelegateResource.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/model/DelegateResource.kt similarity index 87% rename from gitrest/src/commonMain/kotlin/gitrest/model/DelegateResource.kt rename to gitrest/src/commonMain/kotlin/me/jfenn/gitrest/model/DelegateResource.kt index 41ccdc9e8e89f273c346a21a77174a578a175e80..e0fb8303527eb19d1c2bbc9887a12db662cd9e60 100644 --- a/gitrest/src/commonMain/kotlin/gitrest/model/DelegateResource.kt +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/model/DelegateResource.kt @@ -1,4 +1,4 @@ -package gitrest.model +package me.jfenn.gitrest.model import kotlinx.serialization.Transient diff --git a/gitrest/src/commonMain/kotlin/gitrest/model/License.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/model/License.kt similarity index 92% rename from gitrest/src/commonMain/kotlin/gitrest/model/License.kt rename to gitrest/src/commonMain/kotlin/me/jfenn/gitrest/model/License.kt index d47104606921d7ea9d0797098733e61483e048a8..6d48d60819260e67887d0ffd859fd8cb080db8ff 100644 --- a/gitrest/src/commonMain/kotlin/gitrest/model/License.kt +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/model/License.kt @@ -1,4 +1,4 @@ -package gitrest.model +package me.jfenn.gitrest.model open class License : DelegateResource() { open val key: String? = null diff --git a/gitrest/src/commonMain/kotlin/gitrest/model/ProviderString.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/model/ProviderString.kt similarity index 98% rename from gitrest/src/commonMain/kotlin/gitrest/model/ProviderString.kt rename to gitrest/src/commonMain/kotlin/me/jfenn/gitrest/model/ProviderString.kt index 022ee6374caf35eb4058a66668b22d5db5cf9ca4..72e19828485ca8f92ef9e167c51d7e32525922d9 100644 --- a/gitrest/src/commonMain/kotlin/gitrest/model/ProviderString.kt +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/model/ProviderString.kt @@ -1,4 +1,4 @@ -package gitrest.model +package me.jfenn.gitrest.model class ProviderString { diff --git a/gitrest/src/commonMain/kotlin/gitrest/model/Repo.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/model/Repo.kt similarity index 63% rename from gitrest/src/commonMain/kotlin/gitrest/model/Repo.kt rename to gitrest/src/commonMain/kotlin/me/jfenn/gitrest/model/Repo.kt index 642561321d8ab0f5e9a2e8e35dd2cffc0a10d684..71f901acf543c65cc04bac8218fb0156f2d33396 100644 --- a/gitrest/src/commonMain/kotlin/gitrest/model/Repo.kt +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/model/Repo.kt @@ -1,4 +1,4 @@ -package gitrest.model +package me.jfenn.gitrest.model open class Repo : DelegateResource() { open val slug: String? = null @@ -13,11 +13,13 @@ open class Repo : DelegateResource() { super.setId(id) license?.apply { key?.let { licenseKey -> - setId(ProviderString( - provider = id.provider, - context = id.context, - id = licenseKey - )) + setId( + ProviderString( + provider = id.provider, + context = id.context, + id = licenseKey + ) + ) } } } diff --git a/gitrest/src/commonMain/kotlin/gitrest/model/User.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/model/User.kt similarity index 90% rename from gitrest/src/commonMain/kotlin/gitrest/model/User.kt rename to gitrest/src/commonMain/kotlin/me/jfenn/gitrest/model/User.kt index 139fb34558d7c720cbba2ca748b9ff00af06afca..e382b808d95bb231d5bc110ec09aa8198d0e9d90 100644 --- a/gitrest/src/commonMain/kotlin/gitrest/model/User.kt +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/model/User.kt @@ -1,4 +1,4 @@ -package gitrest.model +package me.jfenn.gitrest.model open class User : DelegateResource() { open val login: String? = null diff --git a/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/util/Serialization.kt b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/util/Serialization.kt new file mode 100644 index 0000000000000000000000000000000000000000..48c0123d80556b35de0f29d517efe32cbe71a76a --- /dev/null +++ b/gitrest/src/commonMain/kotlin/me/jfenn/gitrest/util/Serialization.kt @@ -0,0 +1,23 @@ +package me.jfenn.gitrest.util + +import kotlinx.serialization.* +import kotlinx.serialization.builtins.serializer + +/** + * Custom kotlin.String serializer that returns empty/blank strings as null. + */ +open class OptionalStringSerializer : KSerializer { + + final override val descriptor: SerialDescriptor = PrimitiveDescriptor("kotlin.OptionalString", PrimitiveKind.STRING) + private val valueSerializer = String.serializer() + + final override fun deserialize(decoder: Decoder): String? { + val str = valueSerializer.deserialize(decoder) + return if (str.isNotBlank()) str else null + } + + final override fun serialize(encoder: Encoder, value: String?) { + value?.let { valueSerializer.serialize(encoder, it) } + } + +} diff --git a/gitrest/src/jsTest/kotlin/gitrest/BasicTest.kt b/gitrest/src/commonTest/kotlin/BasicTest.kt similarity index 83% rename from gitrest/src/jsTest/kotlin/gitrest/BasicTest.kt rename to gitrest/src/commonTest/kotlin/BasicTest.kt index d1128eaa4f55b6df77365a18bea0302b5e39e439..5cdc40e93fee1a589769692ff666ad79ba4ff93b 100644 --- a/gitrest/src/jsTest/kotlin/gitrest/BasicTest.kt +++ b/gitrest/src/commonTest/kotlin/BasicTest.kt @@ -1,5 +1,3 @@ -package gitrest - import kotlin.test.Test class BasicTest { diff --git a/gitrest/src/commonTest/kotlin/gitrest/ProviderStringTest.kt b/gitrest/src/commonTest/kotlin/ProviderStringTest.kt similarity index 93% rename from gitrest/src/commonTest/kotlin/gitrest/ProviderStringTest.kt rename to gitrest/src/commonTest/kotlin/ProviderStringTest.kt index 4d305a25d3d6c4f54be79d9b0b76c29766d3ef3b..9557a2dcad108e4f0d3693bdf9f7f37b94c099f7 100644 --- a/gitrest/src/commonTest/kotlin/gitrest/ProviderStringTest.kt +++ b/gitrest/src/commonTest/kotlin/ProviderStringTest.kt @@ -1,6 +1,4 @@ -package gitrest - -import gitrest.model.ProviderString +import me.jfenn.gitrest.model.ProviderString import kotlin.test.Test import kotlin.test.assertEquals diff --git a/gitrest/src/jsMain/kotlin/RequestProvider.kt b/gitrest/src/jsMain/kotlin/RequestProvider.kt index 071f6b13fa77cf6cb435a637e699f0e28cb8ba21..d699710a86c6c8f68896a191fc68be133646fd0e 100644 --- a/gitrest/src/jsMain/kotlin/RequestProvider.kt +++ b/gitrest/src/jsMain/kotlin/RequestProvider.kt @@ -1,8 +1,8 @@ -import gitrest.RequestProviderDelegate -import gitrest.base.ServiceBuilder -import gitrest.impl.gitea.GiteaProvider -import gitrest.impl.github.GithubProvider -import gitrest.impl.gitlab.GitlabProvider +import me.jfenn.gitrest.RequestProviderDelegate +import me.jfenn.gitrest.base.ServiceBuilder +import me.jfenn.gitrest.impl.gitea.GiteaProvider +import me.jfenn.gitrest.impl.github.GithubProvider +import me.jfenn.gitrest.impl.gitlab.GitlabProvider import gitrest.js.License import gitrest.js.Repo import gitrest.js.User diff --git a/gitrest/src/jsMain/kotlin/gitrest/js/License.kt b/gitrest/src/jsMain/kotlin/gitrest/js/License.kt index 6c88a2bb9fc247fc68a8eff7e94fee0f43cc1053..2682843937b84860c960021f8b5881df7fe1c661 100644 --- a/gitrest/src/jsMain/kotlin/gitrest/js/License.kt +++ b/gitrest/src/jsMain/kotlin/gitrest/js/License.kt @@ -1,8 +1,8 @@ package gitrest.js -import gitrest.model.ProviderString +import me.jfenn.gitrest.model.ProviderString -class License(license: gitrest.model.License) { +class License(license: me.jfenn.gitrest.model.License) { val id: ProviderString? = license.id val key: String? = license.key val name: String? = license.name diff --git a/gitrest/src/jsMain/kotlin/gitrest/js/Repo.kt b/gitrest/src/jsMain/kotlin/gitrest/js/Repo.kt index a9496c8e0296cca5c5d6f8828cecb5b7bc4eb79b..21e68d2f3cbe54d5c7326ce276d50208c6507ae8 100644 --- a/gitrest/src/jsMain/kotlin/gitrest/js/Repo.kt +++ b/gitrest/src/jsMain/kotlin/gitrest/js/Repo.kt @@ -1,8 +1,8 @@ package gitrest.js -import gitrest.model.ProviderString +import me.jfenn.gitrest.model.ProviderString -class Repo(repo: gitrest.model.Repo) { +class Repo(repo: me.jfenn.gitrest.model.Repo) { val id: ProviderString? = repo.id val slug: String? = repo.slug val description: String? = repo.description diff --git a/gitrest/src/jsMain/kotlin/gitrest/js/User.kt b/gitrest/src/jsMain/kotlin/gitrest/js/User.kt index 54fcebe701c7c607862b98a329f11368d5b05f36..a94817b0174cd0e6a8ea8a4ba341434494f41841 100644 --- a/gitrest/src/jsMain/kotlin/gitrest/js/User.kt +++ b/gitrest/src/jsMain/kotlin/gitrest/js/User.kt @@ -1,8 +1,8 @@ package gitrest.js -import gitrest.model.ProviderString +import me.jfenn.gitrest.model.ProviderString -class User(user: gitrest.model.User) { +class User(user: me.jfenn.gitrest.model.User) { val id: ProviderString? = user.id val login: String? = user.login val name: String? = user.name diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index cda0e9a36722c05607616a4121a90eca83358121..b926dfc51cd00d83eda2e2201978114270c67891 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sat May 09 17:04:07 EDT 2020 +#Tue Jun 23 06:47:08 EDT 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip diff --git a/settings.gradle b/settings.gradle index 1de6002a1e83b5bb75d249228f828f11075f3f03..d145cd2c16d1118c420c2bc4bf77d1fbebf9d22d 100644 --- a/settings.gradle +++ b/settings.gradle @@ -5,3 +5,4 @@ include ':example-android' include ':example-js' include ':example-nodejs' include ':example-kotlinbrowser' +include ':example-jvm'