mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-20 12:42:34 +02:00
43 lines
1 KiB
Go
43 lines
1 KiB
Go
package fields
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
E "github.com/yusing/go-proxy/internal/error"
|
|
)
|
|
|
|
type StreamScheme struct {
|
|
ListeningScheme Scheme `json:"listening"`
|
|
ProxyScheme Scheme `json:"proxy"`
|
|
}
|
|
|
|
func ValidateStreamScheme(s string) (ss *StreamScheme, err E.NestedError) {
|
|
ss = &StreamScheme{}
|
|
parts := strings.Split(s, ":")
|
|
if len(parts) == 1 {
|
|
parts = []string{s, s}
|
|
} else if len(parts) != 2 {
|
|
return nil, E.Invalid("stream scheme", s)
|
|
}
|
|
ss.ListeningScheme, err = NewScheme(parts[0])
|
|
if err.HasError() {
|
|
return nil, err
|
|
}
|
|
ss.ProxyScheme, err = NewScheme(parts[1])
|
|
if err.HasError() {
|
|
return nil, err
|
|
}
|
|
return ss, nil
|
|
}
|
|
|
|
func (s StreamScheme) String() string {
|
|
return fmt.Sprintf("%s -> %s", s.ListeningScheme, s.ProxyScheme)
|
|
}
|
|
|
|
// IsCoherent checks if the ListeningScheme and ProxyScheme of the StreamScheme are equal.
|
|
//
|
|
// It returns a boolean value indicating whether the ListeningScheme and ProxyScheme are equal.
|
|
func (s StreamScheme) IsCoherent() bool {
|
|
return s.ListeningScheme == s.ProxyScheme
|
|
}
|