Substituir HttpConfigurable num plugin do IntelliJ
Leia a configuração do proxy, obtenha credenciais do endpoint e abra conexões cientes da plataforma com as APIs de proxy do IntelliJ.
O substituto de HttpConfigurable está distribuído por várias APIs. Um plugin que inspeciona as definições do proxy HTTP precisa de uma operação diferente de um plugin que envia um pedido através delas.
| Uso existente | API de migração |
|---|---|
| Ler a configuração de proxy selecionada | ProxySettings.getInstance().getProxyConfiguration() |
| Obter credenciais conhecidas ou perguntar ao utilizador | ProxyAuthentication |
| Obter credenciais para o endpoint estático configurado | getStaticProxyCredentials, uma extensão Kotlin exposta ao Java através de ProxyUtils |
| Abrir um URL com a seleção de proxy da plataforma | HttpConnectionUtils.openConnection(location) ou openHttpConnection(location) |
Para a API de migração representada pelas fontes do IntelliJ Platform de 2024, estes tipos de rede estão em com.intellij.util.net. Por exemplo, o Kotlin pode inspecionar a configuração e procurar credenciais conhecidas de proxy estático sem pedir:
import com.intellij.util.net.ProxyAuthentication
import com.intellij.util.net.ProxyCredentialProvider
import com.intellij.util.net.ProxySettings
import com.intellij.util.net.getStaticProxyCredentials
val settings = ProxySettings.getInstance()
val configuration = settings.getProxyConfiguration()
val credentials = settings.getStaticProxyCredentials(
ProxyCredentialProvider(
ProxyAuthentication.getInstance()::getKnownAuthentication
)
)
O auxiliar requer um ProxyCredentialProvider; a referência ao método adapta o serviço de autenticação a essa interface. As credenciais são procuradas pelo host e porta do proxy configurado. Um resultado nulo pode significar que a configuração não é estática, pelo que não prova que um proxy selecionado por PAC não precise de autenticação.
Quando a tarefa real é fazer um pedido HTTP, use o auxiliar de ligação da plataforma em vez de reconstruir o encaminhamento a partir dos campos de host e porta. Ele consulta o seletor de proxy da plataforma para o URL de destino. Converter uma configuração estática com asJavaProxy() não respeita a sua lista de exceções e não implementa a seleção PAC.
Se for necessária autenticação interativa, ProxyAuthentication.getPromptedAuthentication(prompt, host, port) é uma operação separada e potencialmente bloqueante. Mantenha essa distinção ao migrar código e verifique a disponibilidade da API face ao Platform SDK mínimo suportado pelo plugin.