From 67da887e864d292608e7132388f518596374af34 Mon Sep 17 00:00:00 2001
From: Alexey Rusakov <Kitsune-Ral@users.sf.net>
Date: Tue, 5 Oct 2021 03:43:22 +0200
Subject: BaseJob::StatusCode: officially deprecate most *Error enumerators

---
 lib/jobs/basejob.cpp | 42 +++++++++++++++++++++---------------------
 lib/jobs/basejob.h   | 34 ++++++++++++++++------------------
 2 files changed, 37 insertions(+), 39 deletions(-)

(limited to 'lib/jobs')

diff --git a/lib/jobs/basejob.cpp b/lib/jobs/basejob.cpp
index 73762e4f..a7921c61 100644
--- a/lib/jobs/basejob.cpp
+++ b/lib/jobs/basejob.cpp
@@ -24,7 +24,7 @@ BaseJob::StatusCode BaseJob::Status::fromHttpCode(int httpCode)
 {
     // Based on https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
     if (httpCode / 10 == 41) // 41x errors
-        return httpCode == 410 ? IncorrectRequestError : NotFoundError;
+        return httpCode == 410 ? IncorrectRequest : NotFound;
     switch (httpCode) {
     case 401:
         return Unauthorised;
@@ -32,19 +32,19 @@ BaseJob::StatusCode BaseJob::Status::fromHttpCode(int httpCode)
     case 403: case 407: // clang-format on
         return ContentAccessError;
     case 404:
-        return NotFoundError;
+        return NotFound;
         // clang-format off
     case 400: case 405: case 406: case 426: case 428: case 505: // clang-format on
     case 494: // Unofficial nginx "Request header too large"
     case 497: // Unofficial nginx "HTTP request sent to HTTPS port"
-        return IncorrectRequestError;
+        return IncorrectRequest;
     case 429:
-        return TooManyRequestsError;
+        return TooManyRequests;
     case 501:
     case 510:
-        return RequestNotImplementedError;
+        return RequestNotImplemented;
     case 511:
-        return NetworkAuthRequiredError;
+        return NetworkAuthRequired;
     default:
         return NetworkError;
     }
@@ -365,7 +365,7 @@ void BaseJob::initiate(ConnectionData* connData, bool inBackground)
         qCCritical(d->logCat)
             << "Developers, ensure the Connection is valid before using it";
         Q_ASSERT(false);
-        setStatus(IncorrectRequestError, tr("Invalid server connection"));
+        setStatus(IncorrectRequest, tr("Invalid server connection"));
     }
     // The status is no good, finalise
     QTimer::singleShot(0, this, &BaseJob::finishJob);
@@ -528,7 +528,7 @@ BaseJob::Status BaseJob::prepareError()
     // of if's below will fall through to `return NoError` at the end
     const auto& errorJson = jsonData();
     const auto errCode = errorJson.value("errcode"_ls).toString();
-    if (error() == TooManyRequestsError || errCode == "M_LIMIT_EXCEEDED") {
+    if (error() == TooManyRequests || errCode == "M_LIMIT_EXCEEDED") {
         QString msg = tr("Too many requests");
         int64_t retryAfterMs = errorJson.value("retry_after_ms"_ls).toInt(-1);
         if (retryAfterMs >= 0)
@@ -538,16 +538,16 @@ BaseJob::Status BaseJob::prepareError()
 
         d->connection->limitRate(milliseconds(retryAfterMs));
 
-        return { TooManyRequestsError, msg };
+        return { TooManyRequests, msg };
     }
 
     if (errCode == "M_CONSENT_NOT_GIVEN") {
         d->errorUrl = QUrl(errorJson.value("consent_uri"_ls).toString());
-        return { UserConsentRequiredError };
+        return { UserConsentRequired };
     }
     if (errCode == "M_UNSUPPORTED_ROOM_VERSION"
         || errCode == "M_INCOMPATIBLE_ROOM_VERSION")
-        return { UnsupportedRoomVersionError,
+        return { UnsupportedRoomVersion,
                  errorJson.contains("room_version"_ls)
                      ? tr("Requested room version: %1")
                            .arg(errorJson.value("room_version"_ls).toString())
@@ -729,27 +729,27 @@ QString BaseJob::statusCaption() const
         return tr("Request was abandoned");
     case NetworkError:
         return tr("Network problems");
-    case TimeoutError:
+    case Timeout:
         return tr("Request timed out");
     case Unauthorised:
         return tr("Unauthorised request");
     case ContentAccessError:
         return tr("Access error");
-    case NotFoundError:
+    case NotFound:
         return tr("Not found");
-    case IncorrectRequestError:
+    case IncorrectRequest:
         return tr("Invalid request");
-    case IncorrectResponseError:
+    case IncorrectResponse:
         return tr("Response could not be parsed");
-    case TooManyRequestsError:
+    case TooManyRequests:
         return tr("Too many requests");
-    case RequestNotImplementedError:
+    case RequestNotImplemented:
         return tr("Function not implemented by the server");
-    case NetworkAuthRequiredError:
+    case NetworkAuthRequired:
         return tr("Network authentication required");
-    case UserConsentRequiredError:
+    case UserConsentRequired:
         return tr("User consent required");
-    case UnsupportedRoomVersionError:
+    case UnsupportedRoomVersion:
         return tr("The server does not support the needed room version");
     default:
         return tr("Request failed");
@@ -811,7 +811,7 @@ void BaseJob::abandon()
 
 void BaseJob::timeout()
 {
-    setStatus(TimeoutError, "The job has timed out");
+    setStatus(Timeout, "The job has timed out");
     finishJob();
 }
 
diff --git a/lib/jobs/basejob.h b/lib/jobs/basejob.h
index 81455307..e0910a26 100644
--- a/lib/jobs/basejob.h
+++ b/lib/jobs/basejob.h
@@ -33,6 +33,10 @@ class BaseJob : public QObject {
     }
 
 public:
+#define WITH_DEPRECATED_ERROR_VERSION(Recommended)                  \
+    Recommended, Recommended##Error Q_DECL_ENUMERATOR_DEPRECATED_X( \
+                     "Use " #Recommended) = Recommended
+
     /*! The status code of a job
      *
      * Every job is created in Unprepared status; upon calling prepare()
@@ -43,7 +47,7 @@ public:
      */
     enum StatusCode {
         Success = 0,
-        NoError = Success, // To be compatible with Qt conventions
+        NoError = Success,
         Pending = 1,
         WarningLevel = 20, //< Warnings have codes starting from this
         UnexpectedResponseType = 21,
@@ -52,26 +56,18 @@ public:
         Abandoned = 50, //< A tiny period between abandoning and object deletion
         ErrorLevel = 100, //< Errors have codes starting from this
         NetworkError = 101,
-        Timeout,
-        TimeoutError = Timeout,
+        WITH_DEPRECATED_ERROR_VERSION(Timeout),
         Unauthorised,
         ContentAccessError,
-        NotFoundError,
-        IncorrectRequest,
-        IncorrectRequestError = IncorrectRequest,
-        IncorrectResponse,
-        IncorrectResponseError = IncorrectResponse,
-        TooManyRequests,
-        TooManyRequestsError = TooManyRequests,
+        WITH_DEPRECATED_ERROR_VERSION(NotFound),
+        WITH_DEPRECATED_ERROR_VERSION(IncorrectRequest),
+        WITH_DEPRECATED_ERROR_VERSION(IncorrectResponse),
+        WITH_DEPRECATED_ERROR_VERSION(TooManyRequests),
         RateLimited = TooManyRequests,
-        RequestNotImplemented,
-        RequestNotImplementedError = RequestNotImplemented,
-        UnsupportedRoomVersion,
-        UnsupportedRoomVersionError = UnsupportedRoomVersion,
-        NetworkAuthRequired,
-        NetworkAuthRequiredError = NetworkAuthRequired,
-        UserConsentRequired,
-        UserConsentRequiredError = UserConsentRequired,
+        WITH_DEPRECATED_ERROR_VERSION(RequestNotImplemented),
+        WITH_DEPRECATED_ERROR_VERSION(UnsupportedRoomVersion),
+        WITH_DEPRECATED_ERROR_VERSION(NetworkAuthRequired),
+        WITH_DEPRECATED_ERROR_VERSION(UserConsentRequired),
         CannotLeaveRoom,
         UserDeactivated,
         FileError,
@@ -79,6 +75,8 @@ public:
     };
     Q_ENUM(StatusCode)
 
+#undef WITH_DEPRECATED_ERROR_VERSION
+
     template <typename... StrTs>
     static QByteArray makePath(StrTs&&... parts)
     {
-- 
cgit v1.2.3