connection_options.go raw

   1  //go:build !js
   2  
   3  package nostr
   4  
   5  import (
   6  	"crypto/tls"
   7  	"net/http"
   8  	"net/textproto"
   9  
  10  	ws "github.com/coder/websocket"
  11  )
  12  
  13  var defaultConnectionOptions = &ws.DialOptions{
  14  	CompressionMode: ws.CompressionContextTakeover,
  15  	HTTPHeader: http.Header{
  16  		textproto.CanonicalMIMEHeaderKey("User-Agent"): {"github.com/nbd-wtf/go-nostr"},
  17  	},
  18  }
  19  
  20  func getConnectionOptions(requestHeader http.Header, tlsConfig *tls.Config) *ws.DialOptions {
  21  	if requestHeader == nil && tlsConfig == nil {
  22  		return defaultConnectionOptions
  23  	}
  24  
  25  	return &ws.DialOptions{
  26  		HTTPHeader:      requestHeader,
  27  		CompressionMode: ws.CompressionContextTakeover,
  28  		HTTPClient: &http.Client{
  29  			Transport: &http.Transport{
  30  				TLSClientConfig: tlsConfig,
  31  			},
  32  		},
  33  	}
  34  }
  35