Timesheets-Server
Timesheets server
Načítám...
Vyhledávám...
Nebylo nic nalezeno
controllerstatuses.cpp
Zobrazit dokumentaci tohoto souboru.
1
8#include "httprequest.h"
9#include "db.h"
10
11using namespace Httpd;
12
13
14ControllerStatuses::ControllerStatuses(HobrasoftHttpd::HttpConnection *parent) : AbstractController(parent) {
15}
16
17
18void ControllerStatuses::serviceList (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response) {
19 QString category = request->parameter("category");
20 QString status = request->parameter("previousStatus");
21 QString statuses = request->parameter("previousStatuses");
22 if (status == "" && statuses == "") {
23 serviceOK(request, response, toList(db()->statuses(category, status)));
24 return;
25 }
26 if (status != "" && statuses == "") {
27 serviceOK(request, response, toList(db()->statuses(category, status)));
28 return;
29 }
30 if (status == "" && statuses != "") {
31 QStringList statusesList;
32 QVariantList list1 = JSON::data(statuses.toUtf8()).toList();
33 for (int i=0; i<list1.size(); i++) {
34 statusesList << list1[i].toString();
35 }
36 serviceOK(request, response, toList(db()->statuses(category, statusesList)));
37 return;
38 }
39 serviceError(request, response, 400, "bad-parameterers", "Bad parameters: previousStatus=<int> or previousStatuses=<JSON array> must be sent");
40}
41
42
43void ControllerStatuses::serviceIdGet(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString& id) {
44 auto list = db()->statuses(id);
45 if (list.isEmpty()) {
46 serviceError(request, response, 404, "not-found", "NotFound");
47 return;
48 }
49 serviceOK(request, response, list[0].toMap());
50}
51
52void ControllerStatuses::serviceIdPut(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariantMap& data) {
53 serviceOK(request, response, putKey(db()->save(Dbt::Statuses::fromMap(data))));
54}
55
56
57void ControllerStatuses::serviceIdPost(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariantMap& data) {
58 serviceIdPut(request, response, data);
59}
60
61
62void ControllerStatuses::serviceIdDelete(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString& id) {
63 db()->remove(Dbt::Statuses(id));
64 serviceOK(request, response);
65}
66
Virtuální třída pro vyřizování unifikovaných Http požadavků na server API.
virtual void serviceError(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, int code, const QString &error, const QVariantMap &data)
Pošle chybovou odpověď
virtual void serviceOK(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariant &data=QVariant())
Pošle odpověď 200 OK.
HobrasoftHttpd::HttpRequest * request() const
Vrací ukazatel na aktuální request.
void serviceList(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response) Q_DECL_OVERRIDE
Měl by poslat v odpovědi kompletní seznam všech objektů ve třídě a ukončit se.
void serviceIdPost(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariantMap &data) Q_DECL_OVERRIDE
Pošle odpověď na požadavek konkrétního ID metodou PUT - obvykle vloží nový objekt nebo přepíše existu...
void serviceIdPut(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariantMap &data) Q_DECL_OVERRIDE
Pošle odpověď na požadavek konkrétního ID metodou PUT - obvykle vloží nový objekt nebo přepíše existu...
void serviceIdDelete(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString &id) Q_DECL_OVERRIDE
Pošle odpověď na požadavek konkrétního ID metodou DELETE - obvykle objekt smaže.
void serviceIdGet(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString &id) Q_DECL_OVERRIDE
Pošle odpověď na požadavek konkrétního ID metodou GET.
static QVariant data(const QByteArray &json)
Converts json to data.
Definition json.cpp:69
Jmenný prostor pro obsluhu konkrétních HTTP požadavků aplikace.