diff options
| author | jwijenbergh <jeroenwijenbergh@protonmail.com> | 2022-04-22 10:55:37 +0200 |
|---|---|---|
| committer | jwijenbergh <jeroenwijenbergh@protonmail.com> | 2022-04-22 10:55:37 +0200 |
| commit | f76e87fa5ec30c416a562c4b29689f6a3e29458c (patch) | |
| tree | 1c4a0ef097a354dd61330c7bd7c09d4fad7c2f0f /src/server.go | |
| parent | 297dafbd45cd27165048262ef8ad00a8cb3e2b06 (diff) | |
Servers: Add initial support for multiple using a map
Diffstat (limited to 'src/server.go')
| -rw-r--r-- | src/server.go | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/src/server.go b/src/server.go index f4aab66..3dca26b 100644 --- a/src/server.go +++ b/src/server.go @@ -13,6 +13,39 @@ type Server struct { ProfilesRaw string `json:"profiles_raw"` } +type Servers struct { + List map[string]*Server `json:"list"` + Current string `json:"current"` +} + +func (servers *Servers) GetCurrentServer() (*Server, error) { + if servers.List == nil { + return nil, errors.New("No map found to get Current Server") + } + server, exists := servers.List[servers.Current] + + if !exists || server == nil { + return nil, errors.New("Current Server not found") + } + return server, nil +} + +func (servers *Servers) EnsureServer(url string) *Server { + if servers.List == nil { + servers.List = make(map[string]*Server) + } + + server, exists := servers.List[url] + + if !exists || server == nil { + server = &Server{} + server.Initialize(url) + servers.List[url] = server + } + servers.Current = url + return server +} + type ServerProfile struct { ID string `json:"profile_id"` DisplayName string `json:"display_name"` @@ -43,15 +76,11 @@ type ServerEndpoints struct { } func (server *Server) Initialize(url string) error { - if !GetVPNState().HasTransition(CHOSEN_SERVER) { - return errors.New("cannot choose a server") - } server.BaseURL = url endpointsErr := server.GetEndpoints() if endpointsErr != nil { return endpointsErr } - GetVPNState().GoTransition(CHOSEN_SERVER) return nil } |
