shortify/pkg/client/transport.go
2025-08-06 17:38:23 +02:00

43 lines
916 B
Go

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
}