package client import ( "context" "net" "net/http" "net/url" "strings" "time" ) // createHTTPClient creates an http.Client with support for HTTP or unix socket transport func createHTTPClient(serverURL string) (*http.Client, string, error) { if strings.HasPrefix(serverURL, "unix://") { // Extract socket path and strip the scheme socketPath := strings.TrimPrefix(serverURL, "unix://") // We'll fake a URL host for use in requests baseURL := "http://unix" transport := &http.Transport{ DialContext: func(_ context.Context, _, _ string) (net.Conn, error) { return net.Dial("unix", socketPath) }, } return &http.Client{ Transport: transport, Timeout: 2 * time.Second, }, baseURL, nil } // Default HTTP transport parsed, err := url.Parse(serverURL) if err != nil { return nil, "", err } return &http.Client{ Timeout: 2 * time.Second, }, parsed.String(), nil }