Class HttpUtil


  • public class HttpUtil
    extends Object
    • Field Detail

      • JDBC_MAX_CONNECTIONS_PER_ROUTE_PROPERTY

        public static final String JDBC_MAX_CONNECTIONS_PER_ROUTE_PROPERTY
        See Also:
        Constant Field Values
      • httpClient

        public static Map<HttpClientSettingsKey,​org.apache.http.impl.client.CloseableHttpClient> httpClient
        The unique httpClient shared by all connections. This will benefit long-lived clients. Key = proxy host + proxy port + nonProxyHosts, Value = Map of [OCSPMode, HttpClient]
    • Constructor Detail

      • HttpUtil

        public HttpUtil()
    • Method Detail

      • getDownloadedConditionTimeoutInSeconds

        public static long getDownloadedConditionTimeoutInSeconds()
      • closeExpiredAndIdleConnections

        public static void closeExpiredAndIdleConnections()
      • setSessionlessProxyForAzure

        public static void setSessionlessProxyForAzure​(Properties proxyProperties,
                                                       com.microsoft.azure.storage.OperationContext opContext)
                                                throws SnowflakeSQLException
        A static function to set Azure proxy params for sessionless connections using the proxy params from the StageInfo
        Parameters:
        proxyProperties - proxy properties
        opContext - the configuration needed by Azure to set the proxy
        Throws:
        SnowflakeSQLException
      • setProxyForAzure

        public static void setProxyForAzure​(HttpClientSettingsKey key,
                                            com.microsoft.azure.storage.OperationContext opContext)
        A static function to set Azure proxy params when there is a valid session
        Parameters:
        key - key to HttpClient map containing OCSP and proxy info
        opContext - the configuration needed by Azure to set the proxy
      • buildHttpClient

        public static org.apache.http.impl.client.CloseableHttpClient buildHttpClient​(@Nullable
                                                                                      HttpClientSettingsKey key,
                                                                                      File ocspCacheFile,
                                                                                      boolean downloadUnCompressed)
        Build an Http client using our set of default.
        Parameters:
        key - Key to HttpClient hashmap containing OCSP mode and proxy information, could be null
        ocspCacheFile - OCSP response cache file. If null, the default OCSP response file will be used.
        downloadUnCompressed - Whether the HTTP client should be built requesting no decompression
        Returns:
        HttpClient object
      • getHttpClient

        public static org.apache.http.impl.client.CloseableHttpClient getHttpClient​(HttpClientSettingsKey ocspAndProxyKey)
        Gets HttpClient with insecureMode false
        Parameters:
        ocspAndProxyKey - OCSP mode and proxy settings for httpclient
        Returns:
        HttpClient object shared across all connections
      • getHttpClientWithoutDecompression

        public static org.apache.http.impl.client.CloseableHttpClient getHttpClientWithoutDecompression​(HttpClientSettingsKey ocspAndProxyKey)
        Gets HttpClient with insecureMode false and disabling decompression
        Parameters:
        ocspAndProxyKey - OCSP mode and proxy settings for httpclient
        Returns:
        HttpClient object shared across all connections
      • initHttpClientWithoutDecompression

        public static org.apache.http.impl.client.CloseableHttpClient initHttpClientWithoutDecompression​(HttpClientSettingsKey key,
                                                                                                         File ocspCacheFile)
        Accessor for the HTTP client singleton.
        Parameters:
        key - contains information needed to build specific HttpClient
        ocspCacheFile - OCSP response cache file name. if null, the default file will be used.
        Returns:
        HttpClient object shared across all connections
      • initHttpClient

        public static org.apache.http.impl.client.CloseableHttpClient initHttpClient​(HttpClientSettingsKey key,
                                                                                     File ocspCacheFile)
        Accessor for the HTTP client singleton.
        Parameters:
        key - contains information needed to build specific HttpClient
        ocspCacheFile - OCSP response cache file name. if null, the default file will be used.
        Returns:
        HttpClient object shared across all connections
      • getDefaultRequestConfigWithSocketTimeout

        public static org.apache.http.client.config.RequestConfig getDefaultRequestConfigWithSocketTimeout​(int soTimeoutMs,
                                                                                                           boolean withoutCookies)
        Return a request configuration inheriting from the default request configuration of the shared HttpClient with a different socket timeout.
        Parameters:
        soTimeoutMs - - custom socket timeout in milli-seconds
        withoutCookies - - whether this request should ignore cookies or not
        Returns:
        RequestConfig object
      • getDefaultRequestConfigWithSocketAndConnectTimeout

        public static org.apache.http.client.config.RequestConfig getDefaultRequestConfigWithSocketAndConnectTimeout​(int requestSocketAndConnectTimeout,
                                                                                                                     boolean withoutCookies)
        Return a request configuration inheriting from the default request configuration of the shared HttpClient with a different socket and connect timeout.
        Parameters:
        requestSocketAndConnectTimeout - - custom socket and connect timeout in milli-seconds
        withoutCookies - - whether this request should ignore cookies or not
        Returns:
        RequestConfig object
      • getRequestConfigWithoutCookies

        public static org.apache.http.client.config.RequestConfig getRequestConfigWithoutCookies()
        Return a request configuration inheriting from the default request configuration of the shared HttpClient with the cookie spec set to ignore.
        Returns:
        RequestConfig object
      • setRequestConfig

        public static void setRequestConfig​(org.apache.http.client.config.RequestConfig requestConfig)
      • setSocksProxyDisabled

        public static void setSocksProxyDisabled​(boolean socksProxyDisabled)
        Enables/disables use of the SOCKS proxy when creating sockets
        Parameters:
        socksProxyDisabled - new value
      • isSocksProxyDisabled

        public static boolean isSocksProxyDisabled()
        Returns whether the SOCKS proxy is disabled for this JVM
        Returns:
        whether the SOCKS proxy is disabled
      • executeGeneralRequest

        public static String executeGeneralRequest​(org.apache.http.client.methods.HttpRequestBase httpRequest,
                                                   int retryTimeout,
                                                   int authTimeout,
                                                   int socketTimeout,
                                                   int retryCount,
                                                   HttpClientSettingsKey ocspAndProxyAndGzipKey)
                                            throws SnowflakeSQLException,
                                                   IOException
        Executes a HTTP request for Snowflake.
        Parameters:
        httpRequest - HttpRequestBase
        retryTimeout - retry timeout
        authTimeout - authenticator specific timeout
        socketTimeout - socket timeout (in ms)
        retryCount - retry count for the request
        ocspAndProxyAndGzipKey - OCSP mode and proxy settings for httpclient
        Returns:
        response
        Throws:
        SnowflakeSQLException - if Snowflake error occurs
        IOException - raises if a general IO error occurs
      • executeGeneralRequest

        public static String executeGeneralRequest​(org.apache.http.client.methods.HttpRequestBase httpRequest,
                                                   int retryTimeout,
                                                   int authTimeout,
                                                   int socketTimeout,
                                                   int retryCount,
                                                   org.apache.http.impl.client.CloseableHttpClient httpClient)
                                            throws SnowflakeSQLException,
                                                   IOException
        Executes a HTTP request for Snowflake
        Parameters:
        httpRequest - HttpRequestBase
        retryTimeout - retry timeout
        authTimeout - authenticator specific timeout
        socketTimeout - socket timeout (in ms)
        retryCount - retry count for the request
        httpClient - client object used to communicate with other machine
        Returns:
        response
        Throws:
        SnowflakeSQLException - if Snowflake error occurs
        IOException - raises if a general IO error occurs
      • executeRequest

        public static String executeRequest​(org.apache.http.client.methods.HttpRequestBase httpRequest,
                                            int retryTimeout,
                                            int authTimeout,
                                            int socketTimeout,
                                            int maxRetries,
                                            int injectSocketTimeout,
                                            AtomicBoolean canceling,
                                            boolean includeRetryParameters,
                                            boolean retryOnHTTP403,
                                            HttpClientSettingsKey ocspAndProxyKey,
                                            ExecTimeTelemetryData execTimeData)
                                     throws SnowflakeSQLException,
                                            IOException
        Executes a HTTP request for Snowflake.
        Parameters:
        httpRequest - HttpRequestBase
        retryTimeout - retry timeout
        authTimeout - authenticator timeout
        socketTimeout - socket timeout (in ms)
        maxRetries - retry count for the request
        injectSocketTimeout - injecting socket timeout
        canceling - canceling?
        includeRetryParameters - whether to include retry parameters in retried requests
        retryOnHTTP403 - whether to retry on HTTP 403 or not
        ocspAndProxyKey - OCSP mode and proxy settings for httpclient
        Returns:
        response
        Throws:
        SnowflakeSQLException - if Snowflake error occurs
        IOException - raises if a general IO error occurs