summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorjwijenbergh <jeroenwijenbergh@protonmail.com>2022-08-16 13:41:12 +0200
committerjwijenbergh <jeroenwijenbergh@protonmail.com>2022-08-16 13:41:12 +0200
commitde8b2adbcc4a39c359f3dd30249ac4ee225d4b9c (patch)
treeba51a86a850e24bb54637becc7834a38c51d2429 /internal
parentfec6ea1eba9cee325bbd9d82aa71b8ebf5ef90b0 (diff)
Refactor: Use an interface for the data in the FSM callback
Diffstat (limited to 'internal')
-rw-r--r--internal/discovery/discovery.go11
-rw-r--r--internal/fsm/fsm.go6
-rw-r--r--internal/server/common.go32
3 files changed, 13 insertions, 36 deletions
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
}