From de8b2adbcc4a39c359f3dd30249ac4ee225d4b9c Mon Sep 17 00:00:00 2001 From: jwijenbergh Date: Tue, 16 Aug 2022 13:41:12 +0200 Subject: Refactor: Use an interface for the data in the FSM callback --- internal/discovery/discovery.go | 11 ++--------- internal/fsm/fsm.go | 6 +++--- internal/server/common.go | 32 ++++++++------------------------ 3 files changed, 13 insertions(+), 36 deletions(-) (limited to 'internal') diff --git a/internal/discovery/discovery.go b/internal/discovery/discovery.go index 733b446..79e7230 100644 --- a/internal/discovery/discovery.go +++ b/internal/discovery/discovery.go @@ -65,21 +65,14 @@ func (discovery *Discovery) DetermineOrganizationsUpdate() bool { return discovery.Organizations.Timestamp.IsZero() } -func (discovery *Discovery) GetSecureLocationList() (string, error) { +func (discovery *Discovery) GetSecureLocationList() []string { var locations []string for _, server := range discovery.Servers.List { if server.Type == "secure_internet" { locations = append(locations, server.CountryCode) } } - - jsonBytes, jsonErr := json.Marshal(locations) - - if jsonErr != nil { - return "", &types.WrappedErrorMessage{Message: "failed getting Secure Internet locations list", Err: jsonErr} - } - - return string(jsonBytes), nil + return locations } func (discovery *Discovery) GetServerByURL(url string, _type string) (*types.DiscoveryServer, error) { diff --git a/internal/fsm/fsm.go b/internal/fsm/fsm.go index 84c39d5..3c51ce7 100644 --- a/internal/fsm/fsm.go +++ b/internal/fsm/fsm.go @@ -124,12 +124,12 @@ type FSM struct { // Info to be passed from the parent state Name string - StateCallback func(FSMStateID, FSMStateID, string) + StateCallback func(FSMStateID, FSMStateID, interface{}) Directory string Debug bool } -func (fsm *FSM) Init(name string, callback func(FSMStateID, FSMStateID, string), directory string, debug bool) { +func (fsm *FSM) Init(name string, callback func(FSMStateID, FSMStateID, interface{}), directory string, debug bool) { fsm.States = FSMStates{ DEREGISTERED: FSMState{Transitions: []FSMTransition{{NO_SERVER, "Client registers"}}}, NO_SERVER: FSMState{Transitions: []FSMTransition{{CHOSEN_SERVER, "User chooses a server"}, {SEARCH_SERVER, "The user is trying to choose a Server in the UI"}, {CONNECTED, "The user is already connected"}, {ASK_LOCATION, "Change the location in the main screen"}}}, @@ -191,7 +191,7 @@ func (fsm *FSM) GoBack() { fsm.GoTransition(fsm.States[fsm.Current].BackState) } -func (fsm *FSM) GoTransitionWithData(newState FSMStateID, data string, background bool) bool { +func (fsm *FSM) GoTransitionWithData(newState FSMStateID, data interface{}, background bool) bool { ok := fsm.HasTransition(newState) if ok { diff --git a/internal/server/common.go b/internal/server/common.go index e8c837a..7ee8be6 100644 --- a/internal/server/common.go +++ b/internal/server/common.go @@ -1,7 +1,6 @@ package server import ( - "encoding/json" "fmt" "time" @@ -147,9 +146,7 @@ func getServerInfoScreen(base ServerBase) ServerInfoScreen { return serverInfoScreen } -func (servers *Servers) GetServersConfiguredJSON() (string, error) { - errorMessage := "failed getting configured servers JSON" - +func (servers *Servers) GetServersConfigured() (*ServersConfiguredScreen) { customServersInfo := []ServerInfoScreen{} instituteServersInfo := []ServerInfoScreen{} var secureInternetServerInfo *ServerInfoScreen = nil @@ -174,28 +171,21 @@ func (servers *Servers) GetServersConfiguredJSON() (string, error) { secureInternetServerInfo.CountryCode = servers.SecureInternetHomeServer.CurrentLocation } - serversConfiguredScreen := &ServersConfiguredScreen{CustomServers: customServersInfo, InstituteAccessServers: instituteServersInfo, SecureInternetServer: secureInternetServerInfo} - - bytes, bytesErr := json.Marshal(serversConfiguredScreen) - - if bytesErr != nil { - return "{}", &types.WrappedErrorMessage{Message: errorMessage, Err: bytesErr} - } - return string(bytes), nil + return &ServersConfiguredScreen{CustomServers: customServersInfo, InstituteAccessServers: instituteServersInfo, SecureInternetServer: secureInternetServerInfo} } -func (servers *Servers) GetCurrentServerInfoJSON() (string, error) { - errorMessage := "failed getting JSON for server" +func (servers *Servers) GetCurrentServerInfo() (*ServerInfoScreen, error) { + errorMessage := "failed getting current server info" currentServer, currentServerErr := servers.GetCurrentServer() if currentServerErr != nil { - return "{}", &types.WrappedErrorMessage{Message: errorMessage, Err: currentServerErr} + return nil, &types.WrappedErrorMessage{Message: errorMessage, Err: currentServerErr} } base, baseErr := currentServer.GetBase() if baseErr != nil { - return "{}", &types.WrappedErrorMessage{Message: errorMessage, Err: baseErr} + return nil, &types.WrappedErrorMessage{Message: errorMessage, Err: baseErr} } serverInfoScreen := getServerInfoScreen(*base) @@ -205,13 +195,7 @@ func (servers *Servers) GetCurrentServerInfoJSON() (string, error) { serverInfoScreen.CountryCode = servers.SecureInternetHomeServer.CurrentLocation } - bytes, bytesErr := json.Marshal(serverInfoScreen) - - if bytesErr != nil { - return "{}", &types.WrappedErrorMessage{Message: errorMessage, Err: bytesErr} - } - - return string(bytes), nil + return &serverInfoScreen, nil } func (servers *Servers) addInstituteAndCustom(discoServer *types.DiscoveryServer, isCustom bool, fsm *fsm.FSM) (Server, error) { @@ -491,7 +475,7 @@ func askForProfileID(server Server) error { if !base.FSM.HasTransition(fsm.ASK_PROFILE) { return &types.WrappedErrorMessage{Message: errorMessage, Err: fsm.WrongStateTransitionError{Got: base.FSM.Current, Want: fsm.ASK_PROFILE}.CustomError()} } - base.FSM.GoTransitionWithData(fsm.ASK_PROFILE, base.ProfilesRaw, false) + base.FSM.GoTransitionWithData(fsm.ASK_PROFILE, &base.Profiles, false) return nil } -- cgit v1.2.3