8 #ifndef REQUESTMANAGER_H
9 #define REQUESTMANAGER_H
13 #include <QJsonParseError>
41 QMap<int, Request*> requests_;
49 QJsonObject handleJsonParseError(
const QJsonParseError& parseError)
54 response.insert(
"Response", -1);
56 data.insert(
"status",
int(
false));
57 data.insert(
"message",
"JSON Parse Error: " + parseError.errorString());
59 response.insert(
"Data", data);
62 QJsonDocument responseDoc(response);
63 QByteArray responseData = responseDoc.toJson();
66 qDebug().noquote() <<
"<-- JSON Parse Error::Response :\n" << responseDoc.toJson(QJsonDocument::Indented);
128 QJsonParseError parseError;
129 QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &parseError);
131 qDebug().noquote() <<
"--> Request received: " << jsonDoc.toJson(QJsonDocument::Indented);
133 QJsonObject jsonObjResponse;
135 QJsonObject jsonObjRequest = jsonDoc.object();
139 if (parseError.error == QJsonParseError::NoError)
141 requestNumber = jsonObjRequest.value(
"Request").toInt();
145 qCritical() <<
"JSON Parse Error: " << parseError.errorString();
146 jsonObjResponse = handleJsonParseError(parseError);
150 if (requests_.contains(requestNumber))
153 jsonObjResponse = requests_[requestNumber]->execute(jsonObjRequest, *Mutex_);
157 qCritical() <<
"Request not found";
158 qCritical() <<
"Invalid request: " << requestNumber;
162 QJsonDocument responseDoc(jsonObjResponse);
163 QByteArray responseByteArr = responseDoc.toJson();
165 return responseByteArr;
175 for (
auto request: requests_)
This file contains the declaration of the CreateNewUserRequest class, which handles requests to creat...
The DeleteUserRequest class handles the deletion of users.
This file contains the declaration of the GetAccountNumberRequest class, which handles requests to re...
This file contains the declaration of the GetBalanceRequest class, which handles requests to retrieve...
This file contains the declaration of the GetDatabaseRequest class, which handles requests to retriev...
This file contains the declaration of the GetTransactionsHistoryRequest class, which handles requests...
This file contains the declaration of the LoginRequest class, which handles user login requests.
This file contains the declaration of the MakeTransactionRequest class, which handles requests to mak...
This file contains the declaration of the Request class, which is an abstract base class for handling...
This file contains the declaration of the UpdateEmailRequest class, which handles email update reques...
This file contains the declaration of the UpdatePasswordRequest class, which handles requests to upda...
This file contains the declaration of the UpdateUserRequest class, which handles user update requests...
This file contains the declaration of the UserInitRequest class, which handles user initialization re...
The CreateNewUserRequest class handles the creation of new users.
Definition: CreateNewUserRequest.h:23
The DeleteUserRequest class handles the deletion of users.
Definition: DeleteUserRequest.h:22
The GetAccountNumberRequest class handles the retrieval of account numbers.
Definition: GetAccountNumberRequest.h:21
The GetBalanceRequest class handles the retrieval of account balances.
Definition: GetBalanceRequest.h:21
The GetDatabaseRequest class handles the retrieval of the entire database.
Definition: GetDatabaseRequest.h:21
The GetTransactionsHistoryRequest class handles the retrieval of transaction history.
Definition: GetTransactionsHistoryRequest.h:21
The LoginRequest class handles user login requests.
Definition: LoginRequest.h:20
The MakeTransactionRequest class handles transaction requests between accounts.
Definition: MakeTransactionRequest.h:20
The RequestManager class handles incoming requests and dispatches them to the appropriate request han...
Definition: RequestManager.h:38
~RequestManager()
Destructor for the RequestManager.
Definition: RequestManager.h:173
RequestManager(QMutex *Mutex)
Constructs a RequestManager with the specified mutex for thread safety.
Definition: RequestManager.h:100
QByteArray makeRequest(QByteArray data)
Processes an incoming request and generates an appropriate response.
Definition: RequestManager.h:125
AvailableRequests
Enum representing the different types of requests handled by the RequestManager.
Definition: RequestManager.h:78
@ MakeTransaction
Request to make a transaction.
Definition: RequestManager.h:83
@ CreateNewUser
Request to create a new user.
Definition: RequestManager.h:86
@ JsonParseError
Special error code for JSON parsing errors.
Definition: RequestManager.h:92
@ GetAccountnumber
Request to retrieve account number.
Definition: RequestManager.h:80
@ UserInit
Special request for user initialization.
Definition: RequestManager.h:89
@ GetBalance
Request to get account balance.
Definition: RequestManager.h:81
@ Login
Request for user login.
Definition: RequestManager.h:79
@ UpdatePassword
Special request to update user password.
Definition: RequestManager.h:91
@ TransferAmount
Request to transfer amount (not used currently).
Definition: RequestManager.h:84
@ GetDatabase
Request to get database information.
Definition: RequestManager.h:85
@ DeleteUser
Request to delete a user.
Definition: RequestManager.h:87
@ UpdateUser
Request to update user information.
Definition: RequestManager.h:88
@ UpdateEmail
Special request to update user email.
Definition: RequestManager.h:90
@ GetTransactionsHistory
Request to retrieve transaction history.
Definition: RequestManager.h:82
The UpdateEmailRequest class handles email update requests for users.
Definition: UpdateEmailRequest.h:21
The UpdatePasswordRequest class handles password update requests for users.
Definition: UpdatePasswordRequest.h:21
The UpdateUserRequest class handles user update requests.
Definition: UpdateUserRequest.h:22
The UserInitRequest class handles user initialization requests for User Widget and Admin Widget.
Definition: UserInitRequest.h:22