environment.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. Enabled bool `json:"enabled" gorm:"default:true"`
  12. OperationSync bool `json:"operation_sync"`
  13. SyncApiRegex string `json:"sync_api_regex"`
  14. }
  15. func (e *Environment) GetUrl(uri string) (decodedUri string, err error) {
  16. baseUrl, err := url.Parse(e.URL)
  17. if err != nil {
  18. return
  19. }
  20. u, err := url.JoinPath(baseUrl.String(), uri)
  21. if err != nil {
  22. return
  23. }
  24. decodedUri, err = url.QueryUnescape(u)
  25. if err != nil {
  26. return
  27. }
  28. return
  29. }
  30. func (e *Environment) GetWebSocketURL(uri string) (decodedUri string, err error) {
  31. baseUrl, err := url.Parse(e.URL)
  32. if err != nil {
  33. return
  34. }
  35. defaultPort := ""
  36. if baseUrl.Port() == "" {
  37. switch baseUrl.Scheme {
  38. default:
  39. fallthrough
  40. case "http":
  41. defaultPort = "80"
  42. case "https":
  43. defaultPort = "443"
  44. }
  45. baseUrl.Host = baseUrl.Hostname() + ":" + defaultPort
  46. }
  47. u, err := url.JoinPath(baseUrl.String(), uri)
  48. if err != nil {
  49. return
  50. }
  51. decodedUri, err = url.QueryUnescape(u)
  52. if err != nil {
  53. return
  54. }
  55. // http will be replaced with ws, https will be replaced with wss
  56. decodedUri = strings.ReplaceAll(decodedUri, "http", "ws")
  57. return
  58. }