| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | package modelimport (	"net/url"	"strings")type Environment struct {	Model	Name    string `json:"name"`	URL     string `json:"url"`	Token   string `json:"token"`	Enabled bool   `json:"enabled" gorm:"default:false"`}func (e *Environment) GetUrl(uri string) (decodedUri string, err error) {	baseUrl, err := url.Parse(e.URL)	if err != nil {		return	}	u, err := url.JoinPath(baseUrl.String(), uri)	if err != nil {		return	}	decodedUri, err = url.QueryUnescape(u)	if err != nil {		return	}	return}func (e *Environment) GetWebSocketURL(uri string) (decodedUri string, err error) {	baseUrl, err := url.Parse(e.URL)	if err != nil {		return	}	defaultPort := ""	if baseUrl.Port() == "" {		switch baseUrl.Scheme {		default:			fallthrough		case "http":			defaultPort = "80"		case "https":			defaultPort = "443"		}		baseUrl.Host = baseUrl.Hostname() + ":" + defaultPort	}	u, err := url.JoinPath(baseUrl.String(), uri)	if err != nil {		return	}	decodedUri, err = url.QueryUnescape(u)	if err != nil {		return	}	// http will be replaced with ws, https will be replaced with wss	decodedUri = strings.ReplaceAll(decodedUri, "http", "ws")	return}
 |