diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/BuildScript.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/BuildScript.kt index ec38dab1..e1f4405f 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/BuildScript.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/BuildScript.kt @@ -5,7 +5,9 @@ import com.beust.kobalt.api.Kobalt import com.beust.kobalt.api.annotation.Directive import com.beust.kobalt.maven.DependencyManager import com.beust.kobalt.maven.dependency.FileDependency +import org.eclipse.aether.repository.Proxy import java.io.File +import java.net.InetSocketAddress @Directive fun homeDir(vararg dirs: String) : String = SystemProperties.homeDir + @@ -30,7 +32,11 @@ fun plugins(vararg dependencies : String) { } } -data class ProxyConfig(var host: String = "", var port: Int = 0, val type: String = "") +data class ProxyConfig(var host: String = "", var port: Int = 0, val type: String = "") { + fun toProxy() = java.net.Proxy(java.net.Proxy.Type.HTTP, InetSocketAddress(host, port)) + + fun toAetherProxy() = Proxy(type, host, port) // TODO make support for proxy auth +} data class HostConfig(var url: String = "", var username: String? = null, var password: String? = null) { fun hasAuth() : Boolean { diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/KobaltSettingsXml.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/KobaltSettingsXml.kt index 7233bc59..7bc02011 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/KobaltSettingsXml.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/KobaltSettingsXml.kt @@ -6,10 +6,8 @@ import com.beust.kobalt.misc.KFiles import com.beust.kobalt.misc.log import com.google.inject.Inject import com.google.inject.Singleton -import org.eclipse.aether.repository.Proxy import java.io.File import java.io.FileInputStream -import java.net.InetSocketAddress import javax.xml.bind.JAXBContext import javax.xml.bind.annotation.XmlElement import javax.xml.bind.annotation.XmlRootElement @@ -63,23 +61,18 @@ class KobaltSettings @Inject constructor(val xmlFile: KobaltSettingsXml) { val defaultRepos = xmlFile.defaultRepos?.repo - val proxy = xmlFile.proxy + val proxyConfig = with(xmlFile.proxy) { + fun toIntOr(s: String, defaultValue: Int) = try { //TODO can be extracted to some global Utils + s.toInt() + } catch(e: NumberFormatException) { + defaultValue + } - - val proxyConfig = with(proxy) { if (this != null) { - com.beust.kobalt.ProxyConfig(host, port.toIntOr(0), type) + ProxyConfig(host, toIntOr(port, 0), type) } else null } - fun String.toIntOr(defaultValue: Int) = try { //TODO can be extracted to some global Utils - toInt() - } catch(e: NumberFormatException) { - defaultValue - } - - - var kobaltCompilerVersion = xmlFile.kobaltCompilerVersion var kobaltCompilerRepo = xmlFile.kobaltCompilerRepo @@ -104,9 +97,3 @@ class KobaltSettings @Inject constructor(val xmlFile: KobaltSettingsXml) { } } - -fun ProxyConfig?.toProxy() = if (this != null) { - java.net.Proxy(java.net.Proxy.Type.HTTP, InetSocketAddress(host, port)) -} else null - -fun ProxyConfig?.toAetherProxy() = if (this != null) Proxy(type, host, port) else null //TODO make support for proxy auth diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/Http.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/Http.kt index 7df67bcc..72feefc3 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/Http.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/Http.kt @@ -2,7 +2,6 @@ package com.beust.kobalt.maven import com.beust.kobalt.KobaltException import com.beust.kobalt.internal.KobaltSettings -import com.beust.kobalt.internal.toProxy import com.beust.kobalt.misc.CountingFileRequestBody import com.beust.kobalt.misc.log import com.google.inject.Inject @@ -22,7 +21,7 @@ class Http @Inject constructor(val settings:KobaltSettings) { } fun get(user: String?, password: String?, url: String) : Response { - val client = OkHttpClient.Builder().proxy(settings.proxyConfig.toProxy()).build() + val client = OkHttpClient.Builder().proxy(settings.proxyConfig?.toProxy()).build() val request = Request.Builder().url(url) if (user != null) { request.header("Authorization", Credentials.basic(user, password)) @@ -76,7 +75,7 @@ class Http @Inject constructor(val settings:KobaltSettings) { .build() log(2, "Uploading $file to $url") - val response = OkHttpClient.Builder().proxy(settings.proxyConfig.toProxy()).build().newCall(request).execute() + val response = OkHttpClient.Builder().proxy(settings.proxyConfig?.toProxy()).build().newCall(request).execute() if (! response.isSuccessful) { error(response) } else { diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/aether/Aether.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/aether/Aether.kt index 1c24328c..15268130 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/aether/Aether.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/aether/Aether.kt @@ -6,7 +6,6 @@ import com.beust.kobalt.api.Kobalt import com.beust.kobalt.homeDir import com.beust.kobalt.internal.KobaltSettings import com.beust.kobalt.internal.KobaltSettingsXml -import com.beust.kobalt.internal.toAetherProxy import com.beust.kobalt.maven.CompletedFuture import com.beust.kobalt.maven.MavenId import com.beust.kobalt.misc.KobaltLogger @@ -81,7 +80,7 @@ class Aether(val localRepo: File, val settings: KobaltSettings) { private val kobaltRepositories : List get() = Kobalt.repos.map { RemoteRepository.Builder("maven", "default", it.url) - .setProxy(settings.proxyConfig.toAetherProxy()) + .setProxy(settings.proxyConfig?.toAetherProxy()) // .setSnapshotPolicy(RepositoryPolicy(false, null, null)) .build() } diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/GithubApi2.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/GithubApi2.kt index 6f8c427f..b4bf9018 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/GithubApi2.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/GithubApi2.kt @@ -3,7 +3,6 @@ package com.beust.kobalt.misc import com.beust.kobalt.KobaltException import com.beust.kobalt.internal.DocUrl import com.beust.kobalt.internal.KobaltSettings -import com.beust.kobalt.internal.toProxy import com.beust.kobalt.maven.Http import com.google.gson.Gson import com.google.gson.annotations.SerializedName @@ -60,7 +59,7 @@ class GithubApi2 @Inject constructor( // Read only Api // private val service = Retrofit.Builder() - .client(OkHttpClient.Builder().proxy(settings.proxyConfig.toProxy()).build()) + .client(OkHttpClient.Builder().proxy(settings.proxyConfig?.toProxy()).build()) .baseUrl("https://api.github.com") .addConverterFactory(GsonConverterFactory.create()) .build()