mirror of
https://github.com/sekwah41/Advanced-Portals.git
synced 2025-02-12 18:31:30 +01:00
82 lines
2.9 KiB
Groovy
82 lines
2.9 KiB
Groovy
import org.apache.http.HttpEntity
|
|
import org.apache.http.client.methods.CloseableHttpResponse
|
|
import org.apache.http.client.methods.HttpPost
|
|
import org.apache.http.entity.ContentType
|
|
import org.apache.http.entity.mime.MultipartEntityBuilder
|
|
import org.apache.http.impl.client.CloseableHttpClient
|
|
import org.apache.http.impl.client.HttpClients
|
|
|
|
buildscript {
|
|
repositories {
|
|
mavenCentral()
|
|
}
|
|
dependencies {
|
|
classpath "org.apache.httpcomponents:httpmime:4.5.13"
|
|
}
|
|
}
|
|
|
|
apply from: 'env-variables.gradle'
|
|
apply from: 'changelog-util.gradle'
|
|
|
|
task discordupload {
|
|
dependsOn(jar)
|
|
|
|
doLast {
|
|
|
|
String discordWebhook = isRelease ? System.getenv("DISCORD_RELEASE_WEBHOOK") : System.getenv("DISCORD_WEBHOOK")
|
|
|
|
if(discordWebhook != null) {
|
|
|
|
CloseableHttpClient httpClient = HttpClients.createDefault()
|
|
HttpPost uploadFile = new HttpPost(discordWebhook)
|
|
|
|
MultipartEntityBuilder builder = MultipartEntityBuilder.create()
|
|
if(!isRelease) {
|
|
builder.addTextBody("content", "New snapshot or testing build")
|
|
} else {
|
|
def maxLength = 2000
|
|
|
|
def content = "# New release build\n" +
|
|
"${getReleaseChangelog()}\n"
|
|
|
|
if (content.length() > maxLength) {
|
|
def afterMessage = "[See more on GitHub](<https://github.com/sekwah41/Advanced-Portals/releases>)"
|
|
|
|
def truncatedContent = content.replaceAll(/(http[s]?:\/\/[^\s)]+)/, '<$1>').take(maxLength - afterMessage.length() - 1)
|
|
def lastFullLine = truncatedContent.lastIndexOf("\n")
|
|
content = "${truncatedContent.take(lastFullLine)}\n"
|
|
content += afterMessage
|
|
|
|
}
|
|
|
|
builder.addTextBody("content", content, ContentType.create("text/plain", "UTF-8"))
|
|
}
|
|
|
|
builder.addBinaryBody("file", file(jar.archiveFile).newInputStream(), ContentType.APPLICATION_OCTET_STREAM, jar.archiveName)
|
|
|
|
HttpEntity multipart = builder.build()
|
|
|
|
uploadFile.setEntity(multipart)
|
|
CloseableHttpResponse response = httpClient.execute(uploadFile)
|
|
response.getEntity()
|
|
|
|
if(response.getStatusLine().getStatusCode() != 200) {
|
|
println("Failed to post build to Discord.")
|
|
println("Status Code: " + response.getStatusLine().getStatusCode())
|
|
println("Reason Phrase: " + response.getStatusLine().getReasonPhrase())
|
|
|
|
String responseContent = response.getEntity() != null ?
|
|
org.apache.http.util.EntityUtils.toString(response.getEntity()) : "No content"
|
|
println("Response Content: " + responseContent)
|
|
|
|
throw new RuntimeException("Failed to post build to Discord")
|
|
}
|
|
|
|
println("Posted build")
|
|
|
|
} else {
|
|
println("Discord webhook unspecified")
|
|
}
|
|
}
|
|
}
|