Files
2025-04-16 12:11:58 -05:00

34 lines
755 B
Go

package goexec
import (
"fmt"
"golang.org/x/net/proxy"
"net"
"net/url"
)
// Dialer outlines a basic implementation for establishing network connections
type Dialer interface {
// Dial establishes a network connection (net.Conn) using the provided parameters
Dial(network string, address string) (connection net.Conn, err error)
}
// ParseProxyURI parses the provided proxy URI spec to a Dialer
func ParseProxyURI(uri string) (dialer Dialer, err error) {
// Parse proxy spec as URL
u, err := url.Parse(uri)
if err != nil {
return nil, fmt.Errorf("parse proxy URI: %w", err)
}
// Create dialer from URL
dialer, err = proxy.FromURL(u, nil)
if err != nil {
return nil, fmt.Errorf("init proxy: %w", err)
}
return
}