From cb839ff149aceccf80af6c80aeef6ffab020ef66 Mon Sep 17 00:00:00 2001 From: James Houlahan Date: Fri, 22 Jan 2021 13:52:46 +0100 Subject: [PATCH] fix: check deprecated API statuscode first to better determine API error --- pkg/pmapi/client.go | 4 +--- pkg/pmapi/res.go | 18 ++++++++---------- unreleased.md | 1 + 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/pkg/pmapi/client.go b/pkg/pmapi/client.go index 6e41879c..d99ab489 100644 --- a/pkg/pmapi/client.go +++ b/pkg/pmapi/client.go @@ -43,9 +43,7 @@ const Version = 3 // API return codes. const ( - ForceUpgradeBadAPIVersion = 5003 - ForceUpgradeInvalidAPI = 5004 - ForceUpgradeBadAppVersion = 5005 + ForceUpgradeBadAppVersion = 5003 APIOffline = 7001 ImportMessageTooLong = 36022 BansRequests = 85131 diff --git a/pkg/pmapi/res.go b/pkg/pmapi/res.go index 298f6c07..52b554e3 100644 --- a/pkg/pmapi/res.go +++ b/pkg/pmapi/res.go @@ -41,6 +41,14 @@ type Res struct { // Err returns error if the response is an error. Otherwise, returns nil. func (res Res) Err() error { + if res.Code == ForceUpgradeBadAppVersion { + return ErrUpgradeApplication + } + + if res.Code == APIOffline { + return ErrAPINotReachable + } + if res.StatusCode == http.StatusUnprocessableEntity { return &ErrUnprocessableEntity{errors.New(res.Error)} } @@ -49,16 +57,6 @@ func (res Res) Err() error { return nil } - if res.Code == ForceUpgradeBadAPIVersion || - res.Code == ForceUpgradeInvalidAPI || - res.Code == ForceUpgradeBadAppVersion { - return ErrUpgradeApplication - } - - if res.Code == APIOffline { - return ErrAPINotReachable - } - return &Error{ Code: res.Code, ErrorMessage: res.ResError.Error, diff --git a/unreleased.md b/unreleased.md index 88bc7308..6aba92e1 100644 --- a/unreleased.md +++ b/unreleased.md @@ -58,3 +58,4 @@ Changelog [format](http://keepachangelog.com/en/1.0.0/) ### Fixed * GODT-900 Remove \Deleted flag after re-importing the message (do not delete messages by moving to local folder and back). * GODT-908 Do not unpause event loop if other mailbox is still fetching. +* Check deprecated status code first to better determine API error.