Fix cuiCloud

This commit is contained in:
Him188 2020-03-31 10:25:24 +08:00
parent 03d477ab16
commit 8bc10f7bdf
3 changed files with 55 additions and 24 deletions

View File

@ -9,16 +9,20 @@
package upload
import io.ktor.client.request.forms.MultiPartFormDataContent
import io.ktor.client.request.forms.formData
import io.ktor.client.request.post
import io.ktor.client.statement.HttpResponse
import io.ktor.http.isSuccess
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
import org.gradle.api.Project
import org.gradle.kotlin.dsl.provideDelegate
import org.jsoup.Connection
import org.jsoup.Jsoup
import java.io.File
import java.util.*
@Suppress("DEPRECATION")
object CuiCloud {
private fun getUrl(project: Project): String {
kotlin.runCatching {
@ -83,23 +87,48 @@ object CuiCloud {
}
}
@UseExperimental(ExperimentalStdlibApi::class)
private suspend fun uploadToCuiCloud(
cuiCloudUrl: String,
cuiToken: String,
filePath: String,
content: ByteArray
) {
println("uploading to $cuiCloudUrl")
println("filePath=$filePath")
println("key=$cuiToken")
println("content=${content.size / 1024 / 1024} MB")
val response = withContext(Dispatchers.IO) {
Jsoup.connect(cuiCloudUrl).method(Connection.Method.POST)
.data("base64", Base64.getEncoder().encodeToString(content))
.data("filePath", filePath)
.data("key", cuiToken)
.timeout(Int.MAX_VALUE)
.execute()
Http.post<HttpResponse>(cuiCloudUrl) {
body = MultiPartFormDataContent(
formData {
append("base64", Base64.getEncoder().encodeToString(content))
append("filePath", filePath)
append("key", cuiToken)
}
)
}
}
if (response.statusCode() != 200) {
println(response.body())
error("Cui Cloud Does Not Return 200")
if (response.status.isSuccess()) {
println(response.status)
val buffer = ByteArray(4096)
val resp = buildList<Byte> {
while (true) {
val read = response.content.readAvailable(buffer, 0, buffer.size)
if (read == -1) {
break
}
addAll(buffer.toList().take(read))
}
}
println(String(resp.toByteArray()))
error("Cui cloud response: ${response.status}")
}
}
}
}
inline fun <E> buildList(builderAction: MutableList<E>.() -> Unit): List<E> {
return ArrayList<E>().apply(builderAction)
}

View File

@ -18,6 +18,17 @@ import org.jsoup.Jsoup
import java.io.File
import java.util.*
internal val Http = HttpClient(CIO) {
engine {
requestTimeout = 600_000
}
install(HttpTimeout) {
socketTimeoutMillis = 600_000
requestTimeoutMillis = 600_000
connectTimeoutMillis = 600_000
}
}
object GitHub {
private fun getGithubToken(project: Project): String {
@ -53,16 +64,7 @@ object GitHub {
fun upload(file: File, url: String, project: Project) = runBlocking {
val token = getGithubToken(project)
println("token.length=${token.length}")
HttpClient(CIO) {
engine {
requestTimeout = 600_000
}
install(HttpTimeout) {
socketTimeoutMillis = 600_000
requestTimeoutMillis = 600_000
connectTimeoutMillis = 600_000
}
}.put<String>("$url?access_token=$token") {
Http.put<String>("$url?access_token=$token") {
val sha = getGithubSha("mirai-repo", "shadow/${project.name}/${file.name}", "master", project)
println("sha=$sha")
val content = String(Base64.getEncoder().encode(file.readBytes()))

View File

@ -1,5 +1,5 @@
#Thu Feb 06 14:10:33 CST 2020
distributionUrl=https\://services.gradle.org/distributions/gradle-6.2.2-bin.zip
#Tue Mar 31 10:18:00 CST 2020
distributionUrl=https\://services.gradle.org/distributions/gradle-6.2.2-all.zip
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStorePath=wrapper/dists