diff --git a/core/src/main/kotlin/Kotlin/ExternalDocumentationLinkResolver.kt b/core/src/main/kotlin/Kotlin/ExternalDocumentationLinkResolver.kt index e19ecf76ca2..93e4012dd97 100644 --- a/core/src/main/kotlin/Kotlin/ExternalDocumentationLinkResolver.kt +++ b/core/src/main/kotlin/Kotlin/ExternalDocumentationLinkResolver.kt @@ -10,17 +10,19 @@ import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor import org.jetbrains.kotlin.load.java.descriptors.JavaPropertyDescriptor +import org.jetbrains.kotlin.load.kotlin.JvmType import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe import org.jetbrains.kotlin.resolve.descriptorUtil.parents import java.io.ByteArrayOutputStream import java.io.PrintWriter -import java.net.HttpURLConnection -import java.net.URL -import java.net.URLConnection +import java.net.* import java.nio.file.Path import java.security.MessageDigest +import java.net.PasswordAuthentication + + fun ByteArray.toHexString() = this.joinToString(separator = "") { "%02x".format(it) } @@ -42,7 +44,26 @@ class ExternalDocumentationLinkResolver @Inject constructor( val cachedProtocols = setOf("http", "https", "ftp") fun URL.doOpenConnectionToReadContent(timeout: Int = 10000, redirectsAllowed: Int = 16): URLConnection { - val connection = this.openConnection() + + val proxyHost: String? = System.getProperty("http.proxyHost") + val proxyPort: String? = System.getProperty("http.proxyPort") + + val connection = if(proxyHost != null && proxyPort != null){ + val proxyUser: String? = System.getProperty("http.proxyUser") + val proxyPassword: String? = System.getProperty("http.proxyPassword") + if(proxyUser != null && proxyPassword != null){ + Authenticator.setDefault( object : Authenticator() { + override fun getPasswordAuthentication(): PasswordAuthentication { + return PasswordAuthentication(proxyUser,proxyPassword.toCharArray()) + } + }) + } + this.openConnection(Proxy(Proxy.Type.HTTP, + InetSocketAddress(proxyHost,Integer.parseInt(proxyPort)))) + }else{ + this.openConnection() + } + connection.connectTimeout = timeout connection.readTimeout = timeout