environment.go 957 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package model
  2. import (
  3. "net/url"
  4. "strings"
  5. )
  6. type Environment struct {
  7. Model
  8. Name string `json:"name"`
  9. URL string `json:"url"`
  10. Token string `json:"token"`
  11. OperationSync bool `json:"operation_sync"`
  12. SyncApiRegex string `json:"sync_api_regex"`
  13. }
  14. func (e *Environment) GetWebSocketURL(uri string) (decodedUri string, err error) {
  15. baseUrl, err := url.Parse(e.URL)
  16. if err != nil {
  17. return
  18. }
  19. defaultPort := ""
  20. if baseUrl.Port() == "" {
  21. switch baseUrl.Scheme {
  22. default:
  23. fallthrough
  24. case "http":
  25. defaultPort = "80"
  26. case "https":
  27. defaultPort = "443"
  28. }
  29. baseUrl.Host = baseUrl.Hostname() + ":" + defaultPort
  30. }
  31. u, err := url.JoinPath(baseUrl.String(), uri)
  32. if err != nil {
  33. return
  34. }
  35. decodedUri, err = url.QueryUnescape(u)
  36. if err != nil {
  37. return
  38. }
  39. // http will be replaced with ws, https will be replaced with wss
  40. decodedUri = strings.ReplaceAll(decodedUri, "http", "ws")
  41. return
  42. }