1
0
Fork 0
mirror of https://github.com/ethauvin/kobalt.git synced 2025-04-26 08:27:12 -07:00

Retrofit 2.

This commit is contained in:
Cedric Beust 2016-03-14 21:43:26 +04:00
parent df87e6303e
commit 124bb62975
2 changed files with 19 additions and 12 deletions

View file

@ -10,6 +10,10 @@ import javax.inject.Singleton
@Singleton
class Http {
companion object {
// HTTP statuses
val CREATED = 201
}
class TypedFile(val mimeType: String, val file: File) {
override fun toString() = file.name
}

View file

@ -3,6 +3,7 @@ package com.beust.kobalt.misc
import com.beust.kobalt.KobaltException
import com.beust.kobalt.internal.DocUrl
import com.beust.kobalt.maven.Http
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName
import com.google.inject.Inject
import okhttp3.OkHttpClient
@ -63,27 +64,29 @@ class GithubApi2 @Inject constructor(
.build()
.create(Api::class.java)
// JSON Retrofit error
class Error(val code: String)
class RetrofitError(var message: String = "", var errors : List<Error> = arrayListOf())
fun uploadRelease(packageName: String, tagName: String, zipFile: File) {
log(1, "Uploading release ${zipFile.name}")
val username = localProperties.get(PROPERTY_USERNAME, DOC_URL)
val accessToken = localProperties.get(PROPERTY_ACCESS_TOKEN, DOC_URL)
try {
val response = service.createRelease(username, packageName, accessToken, CreateRelease(tagName))
.execute()
.body()
val response = service.createRelease(username, packageName, accessToken, CreateRelease(tagName))
.execute()
val code = response.code()
if (code != Http.CREATED) {
val error = Gson().fromJson(response.errorBody().string(), RetrofitError::class.java)
throw KobaltException("Couldn't upload release, ${error.message}: " + error.errors[0].code)
} else {
val body = response.body()
uploadAsset(accessToken, response.uploadUrl!!, Http.TypedFile("application/zip", zipFile),
tagName)
.toBlocking()
uploadAsset(accessToken, body.uploadUrl!!, Http.TypedFile("application/zip", zipFile), tagName)
.toBlocking()
.forEach { action ->
log(1, "\n${zipFile.name} successfully uploaded")
}
} catch(e: Exception) {
throw KobaltException("Couldn't upload release: " + e.message, e)
// val error = parseRetrofitError(e)
// throw KobaltException("Couldn't upload release, ${error.message}: "
// + error.errors[0].code + " field: " + error.errors[0].field)
}
}