26 lines
980 B
Go
26 lines
980 B
Go
// Package httpclient provides a shared HTTP client configured for audio streaming.
|
|
package httpclient
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
// Streaming is a shared HTTP client for audio streaming connections.
|
|
// It sets a generous header timeout but no overall timeout, so infinite
|
|
// live streams (Icecast/SHOUTcast) aren't killed. HTTP/2 is explicitly
|
|
// disabled via TLSNextProto because Icecast/SHOUTcast servers don't
|
|
// support it — Go's default ALPN negotiation causes EOF.
|
|
//
|
|
// Proxy is read from the environment (HTTP_PROXY, HTTPS_PROXY, NO_PROXY)
|
|
// so users behind corporate or local proxies aren't bypassed; the rest of
|
|
// the codebase uses http.DefaultTransport, which already honors these vars.
|
|
var Streaming = &http.Client{
|
|
Transport: &http.Transport{
|
|
Proxy: http.ProxyFromEnvironment,
|
|
ResponseHeaderTimeout: 30 * time.Second,
|
|
TLSNextProto: make(map[string]func(authority string, c *tls.Conn) http.RoundTripper),
|
|
},
|
|
}
|