diff options
| author | jwijenbergh <jeroenwijenbergh@protonmail.com> | 2022-10-19 16:51:48 +0200 |
|---|---|---|
| committer | jwijenbergh <jeroenwijenbergh@protonmail.com> | 2022-10-19 17:05:59 +0200 |
| commit | 7260aa0cd70195a4679ca3c94204d9e618f947f2 (patch) | |
| tree | 9321f5f3d21b06d1ab6dd50420879bc5ea41f044 /client/client.go | |
| parent | f1a265190d8fd862bfff680fd0937a7f99759955 (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.go | 54 |
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 } |
