summaryrefslogtreecommitdiff
path: root/client/client.go
diff options
context:
space:
mode:
authorjwijenbergh <jeroenwijenbergh@protonmail.com>2022-10-19 16:51:48 +0200
committerjwijenbergh <jeroenwijenbergh@protonmail.com>2022-10-19 17:05:59 +0200
commit7260aa0cd70195a4679ca3c94204d9e618f947f2 (patch)
tree9321f5f3d21b06d1ab6dd50420879bc5ea41f044 /client/client.go
parentf1a265190d8fd862bfff680fd0937a7f99759955 (diff)
Refactor: Make errors use the parent's error level
- All wrapped errors have to be created with types.NewWrappedError to inherit the error level from the parent - Or types.NewWrappedErrorLevel can be used which means a custom error level is given. For example this is done with cancelling OAuth - Client public errors are forwarded with handleError that also logs it with the error's level
Diffstat (limited to 'client/client.go')
-rw-r--r--client/client.go54
1 files changed, 25 insertions, 29 deletions
diff --git a/client/client.go b/client/client.go
index 2808426..5df2255 100644
--- a/client/client.go
+++ b/client/client.go
@@ -19,6 +19,16 @@ type (
ServerBase = server.ServerBase
)
+// This wraps the error, logs it and then returns the wrapped error
+func (client *Client) handleError(message string, err error) error {
+ if err != nil {
+ // Logs the error with the same level/verbosity as the error
+ client.Logger.Inherit(message, err)
+ return types.NewWrappedError(message, err)
+ }
+ return nil
+}
+
func (client Client) isLetsConnect() bool {
// see https://git.sr.ht/~fkooman/vpn-user-portal/tree/v3/item/src/OAuth/ClientDb.php
return strings.HasPrefix(client.Name, "org.letsconnect-vpn.app")
@@ -66,10 +76,10 @@ func (client *Client) Register(
) error {
errorMessage := "failed to register with the GO library"
if !client.InFSMState(STATE_DEREGISTERED) {
- return &types.WrappedErrorMessage{
- Message: errorMessage,
- Err: FSMDeregisteredError{}.CustomError(),
- }
+ return client.handleError(
+ errorMessage,
+ FSMDeregisteredError{}.CustomError(),
+ )
}
client.Name = name
@@ -84,7 +94,7 @@ func (client *Client) Register(
loggerErr := client.Logger.Init(logLevel, name, directory)
if loggerErr != nil {
- return &types.WrappedErrorMessage{Message: errorMessage, Err: loggerErr}
+ return client.handleError(errorMessage, loggerErr)
}
// Initialize the FSM
@@ -129,12 +139,7 @@ func (client *Client) Deregister() {
// Save the config
saveErr := client.Config.Save(&client)
if saveErr != nil {
- client.Logger.Info(
- fmt.Sprintf(
- "Failed saving configuration, error: %s",
- types.GetErrorTraceback(saveErr),
- ),
- )
+ client.Logger.Info(fmt.Sprintf("failed saving configuration, error: %s", types.GetErrorTraceback(saveErr)))
}
// Empty out the state
@@ -145,7 +150,7 @@ func (client *Client) Deregister() {
func (client *Client) askProfile(chosenServer server.Server) error {
base, baseErr := chosenServer.GetBase()
if baseErr != nil {
- return &types.WrappedErrorMessage{Message: "failed asking for profiles", Err: baseErr}
+ return types.NewWrappedError("failed asking for profiles", baseErr)
}
client.FSM.GoTransitionWithData(STATE_ASK_PROFILE, &base.Profiles, false)
return nil
@@ -159,21 +164,15 @@ func (client *Client) GetDiscoOrganizations() (*types.DiscoveryOrganizations, er
errorMessage := "failed getting discovery organizations list"
// Not supported with Let's Connect!
if client.isLetsConnect() {
- return nil, &types.WrappedErrorMessage{Message: errorMessage, Err: LetsConnectNotSupportedError{}}
+ return nil, client.handleError(errorMessage, LetsConnectNotSupportedError{})
}
orgs, orgsErr := client.Discovery.GetOrganizationsList()
if orgsErr != nil {
- client.Logger.Warning(
- fmt.Sprintf(
- "Failed getting discovery organizations, Err: %s",
- types.GetErrorTraceback(orgsErr),
- ),
+ return nil, client.handleError(
+ errorMessage,
+ orgsErr,
)
- return nil, &types.WrappedErrorMessage{
- Message: errorMessage,
- Err: orgsErr,
- }
}
return orgs, nil
}
@@ -187,18 +186,15 @@ func (client *Client) GetDiscoServers() (*types.DiscoveryServers, error) {
// Not supported with Let's Connect!
if client.isLetsConnect() {
- return nil, &types.WrappedErrorMessage{Message: errorMessage, Err: LetsConnectNotSupportedError{}}
+ return nil, client.handleError(errorMessage, LetsConnectNotSupportedError{})
}
servers, serversErr := client.Discovery.GetServersList()
if serversErr != nil {
- client.Logger.Warning(
- fmt.Sprintf("Failed getting discovery servers, Err: %s", types.GetErrorTraceback(serversErr)),
+ return nil, client.handleError(
+ errorMessage,
+ serversErr,
)
- return nil, &types.WrappedErrorMessage{
- Message: errorMessage,
- Err: serversErr,
- }
}
return servers, nil
}