Initial commit
This commit is contained in:
37
internal/domains/dialer/dial.go
Normal file
37
internal/domains/dialer/dial.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package dialer
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
func (d *Dialer) Dial() (net.Conn, error) {
|
||||
if d.dialURL.Scheme == "https" {
|
||||
return tls.Dial("tcp", d.dialURL.Host, &tls.Config{
|
||||
ServerName: d.dialURL.Hostname(),
|
||||
InsecureSkipVerify: d.app.Config().Upstream.InsecureTLS,
|
||||
})
|
||||
}
|
||||
|
||||
return net.Dial("tcp", d.dialURL.Host)
|
||||
}
|
||||
|
||||
func (d *Dialer) UpstreamURL() (*url.URL, error) {
|
||||
if d.app.Config().Upstream.URL == "" {
|
||||
return nil, fmt.Errorf(
|
||||
"%w: %w (%s)", ErrDialer, ErrParseURL,
|
||||
"upstream URL is empty",
|
||||
)
|
||||
}
|
||||
|
||||
u, err := url.Parse(d.app.Config().Upstream.URL)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf(
|
||||
"%w: %w (%w)", ErrDialer, ErrParseURL, err,
|
||||
)
|
||||
}
|
||||
|
||||
return u, nil
|
||||
}
|
||||
43
internal/domains/dialer/dialer.go
Normal file
43
internal/domains/dialer/dialer.go
Normal file
@@ -0,0 +1,43 @@
|
||||
package dialer
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/url"
|
||||
|
||||
"source.hodakov.me/hdkv/deconnect/internal/application"
|
||||
"source.hodakov.me/hdkv/deconnect/internal/domains"
|
||||
)
|
||||
|
||||
var (
|
||||
_ domains.Dialer = new(Dialer)
|
||||
_ domains.Domain = new(Dialer)
|
||||
)
|
||||
|
||||
type Dialer struct {
|
||||
app *application.App
|
||||
|
||||
dialURL *url.URL
|
||||
}
|
||||
|
||||
func New(app *application.App) *Dialer {
|
||||
return &Dialer{
|
||||
app: app,
|
||||
}
|
||||
}
|
||||
|
||||
func (d *Dialer) ConnectDependencies() error {
|
||||
dialURL, err := d.UpstreamURL()
|
||||
if err != nil {
|
||||
return fmt.Errorf(
|
||||
"%w: %w (%w)", ErrDialer, ErrConnectDependencies, err,
|
||||
)
|
||||
}
|
||||
|
||||
d.dialURL = dialURL
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Dialer) Start() error {
|
||||
return nil
|
||||
}
|
||||
9
internal/domains/dialer/errors.go
Normal file
9
internal/domains/dialer/errors.go
Normal file
@@ -0,0 +1,9 @@
|
||||
package dialer
|
||||
|
||||
import "errors"
|
||||
|
||||
var (
|
||||
ErrDialer = errors.New("dialer")
|
||||
ErrConnectDependencies = errors.New("failed to connect dependencies")
|
||||
ErrParseURL = errors.New("failed to parse URL")
|
||||
)
|
||||
Reference in New Issue
Block a user