mirror of
https://github.com/valyala/fasthttp.git
synced 2026-06-14 15:56:44 +03:00
6ed7f6bbf7
Add a multifunctional `Dialer` struct and reimplement the function API Reimplement the existing function interfaces of the fasthttpproxy package through Dialer. Refactor Dialer.GetDialFunc to ensure that its performance is comparable to the original function interfaces when the proxy does not change with the request address.
40 lines
1.0 KiB
Go
40 lines
1.0 KiB
Go
package fasthttpproxy
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/valyala/fasthttp"
|
|
)
|
|
|
|
const (
|
|
httpsScheme = "https"
|
|
httpScheme = "http"
|
|
)
|
|
|
|
// FasthttpProxyHTTPDialer returns a fasthttp.DialFunc that dials using
|
|
// the env(HTTP_PROXY, HTTPS_PROXY and NO_PROXY) configured HTTP proxy.
|
|
//
|
|
// Example usage:
|
|
//
|
|
// c := &fasthttp.Client{
|
|
// Dial: fasthttpproxy.FasthttpProxyHTTPDialer(),
|
|
// }
|
|
func FasthttpProxyHTTPDialer() fasthttp.DialFunc {
|
|
return FasthttpProxyHTTPDialerTimeout(0)
|
|
}
|
|
|
|
// FasthttpProxyHTTPDialerTimeout returns a fasthttp.DialFunc that dials using
|
|
// the env(HTTP_PROXY, HTTPS_PROXY and NO_PROXY) configured HTTP proxy using the given timeout.
|
|
// The timeout parameter determines both the dial timeout and the CONNECT request timeout.
|
|
//
|
|
// Example usage:
|
|
//
|
|
// c := &fasthttp.Client{
|
|
// Dial: fasthttpproxy.FasthttpProxyHTTPDialerTimeout(time.Second * 2),
|
|
// }
|
|
func FasthttpProxyHTTPDialerTimeout(timeout time.Duration) fasthttp.DialFunc {
|
|
d := Dialer{Timeout: timeout, ConnectTimeout: timeout}
|
|
dialFunc, _ := d.GetDialFunc(true)
|
|
return dialFunc
|
|
}
|