refactor(config): 使用 URL 生成缺省仓库 Id.

在使用过程中, 发现 Aether 会根据仓库 Id 保存一些元信息, 所以尝试以 URL 生成仓库 Id, 或许有利于 Aether 存取仓库元信息.
改动仍需观望.
This commit is contained in:
LamGC 2022-08-18 00:59:51 +08:00
parent 580d9122e5
commit 2a08f28838
Signed by: LamGC
GPG Key ID: 6C5AE2A913941E1D

View File

@ -1,6 +1,7 @@
package net.lamgc.scalabot
import ch.qos.logback.core.PropertyDefinerBase
import com.google.common.net.InternetDomainName
import com.google.gson.Gson
import com.google.gson.GsonBuilder
import com.google.gson.JsonArray
@ -15,6 +16,7 @@ import org.eclipse.aether.repository.RepositoryPolicy
import org.telegram.telegrambots.bots.DefaultBotOptions
import java.io.File
import java.net.URL
import java.net.URLEncoder
import java.nio.charset.StandardCharsets
import java.util.concurrent.atomic.AtomicBoolean
import java.util.function.Supplier
@ -43,7 +45,7 @@ internal fun ProxyConfig.toAetherProxy(): Proxy? {
internal fun MavenRepositoryConfig.toRemoteRepository(proxyConfig: ProxyConfig? = null): RemoteRepository {
val repositoryId = if (id == null) {
val generatedRepoId = createDefaultRepositoryId()
val generatedRepoId = createDefaultRepositoryId(url)
log.debug { "仓库 Url `$url` 未设置仓库 Id, 已分配缺省 Id: $generatedRepoId" }
generatedRepoId
} else {
@ -91,10 +93,11 @@ private fun checkRepositoryLayout(layoutType: String): String {
return type
}
private val repoNumberGenerator = AtomicInteger(1)
private fun createDefaultRepositoryId(): String {
return "Repository-${repoNumberGenerator.getAndIncrement()}"
private fun createDefaultRepositoryId(url: URL): String {
val topPrivateDomain = InternetDomainName.from(url.host).topPrivateDomain().toString()
return "Repository-${URLEncoder.encode(topPrivateDomain, StandardCharsets.UTF_8)}-${
url.toString().hashCode().toString(16)
}"
}
/**