dendrite/cmd/dendrite-demo-pinecone/conn/client.go
2020-11-23 17:07:13 +00:00

68 lines
1.8 KiB
Go

package conn
import (
"net/http"
"time"
"github.com/matrix-org/dendrite/internal/setup"
"github.com/matrix-org/gomatrixserverlib"
pineconeSessions "github.com/matrix-org/pinecone/sessions"
)
type RoundTripper struct {
inner *http.Transport
}
func (y *RoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
req.URL.Scheme = "http"
return y.inner.RoundTrip(req)
}
func CreateClient(
base *setup.BaseDendrite, quic *pineconeSessions.QUIC,
) *gomatrixserverlib.Client {
tr := &http.Transport{}
tr.RegisterProtocol(
"matrix", &RoundTripper{
inner: &http.Transport{
MaxIdleConnsPerHost: 1,
DisableKeepAlives: true,
TLSHandshakeTimeout: 10 * time.Second,
ResponseHeaderTimeout: 10 * time.Second,
IdleConnTimeout: 5 * time.Second,
Dial: quic.Dial,
DialContext: quic.DialContext,
DialTLS: quic.DialTLS,
DialTLSContext: quic.DialTLSContext,
},
},
)
return gomatrixserverlib.NewClientWithTransport(tr)
}
func CreateFederationClient(
base *setup.BaseDendrite, quic *pineconeSessions.QUIC,
) *gomatrixserverlib.FederationClient {
tr := &http.Transport{}
tr.RegisterProtocol(
"matrix", &RoundTripper{
inner: &http.Transport{
MaxIdleConnsPerHost: 1,
DisableKeepAlives: true,
TLSHandshakeTimeout: 10 * time.Second,
ResponseHeaderTimeout: 10 * time.Second,
IdleConnTimeout: 5 * time.Second,
Dial: quic.Dial,
DialContext: quic.DialContext,
DialTLS: quic.DialTLS,
DialTLSContext: quic.DialTLSContext,
},
},
)
return gomatrixserverlib.NewFederationClientWithTransport(
base.Cfg.Global.ServerName, base.Cfg.Global.KeyID,
base.Cfg.Global.PrivateKey, true, tr,
)
}