Timesheets-Server
Timesheets server
Načítám...
Vyhledávám...
Nebylo nic nalezeno
controllerusers.cpp
Zobrazit dokumentaci tohoto souboru.
1
7#include "controllerusers.h"
8#include "httprequest.h"
9#include "httpresponse.h"
10#include "json.h"
11#include "pdebug.h"
12#include "db.h"
13
14using namespace Httpd;
15
16
17ControllerUsers::ControllerUsers(HobrasoftHttpd::HttpConnection *parent) : AbstractController(parent) {
18}
19
20
21void ControllerUsers::serviceList (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response) {
22 serviceOK(request, response, toList(db()->users()));
23}
24
25
26void ControllerUsers::serviceIdGet(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString& id) {
27 PDEBUG;
28 auto list = db()->users(id.toInt());
29 if (list.isEmpty()) {
30 serviceError(request, response, 404, "not-found", "NotFound");
31 return;
32 }
33 serviceOK(request, response, list[0].toMap());
34}
35
36
37void ControllerUsers::service(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response) {
38 QString path = request->path();
39 QString method = request->method();
40
41 if ((method == "PUT" || method == "POST") && path.endsWith("/set-password")) {
42 bool ok;
43 QVariantMap data = JSON::data(request->body(), &ok).toMap();
44 if (!ok) {
45 serviceError(request, response, 400, "bad-request", "Could not parse JSON data");
46 return;
47 }
48 QString login = data["login"].toString();
49 QString oldpassword = data["oldpassword"].toString();
50 QString newpassword = data["newpassword"].toString();
51 db()->changePassword(login, oldpassword, newpassword);
52 serviceOK(request, response);
53 return;
54 }
55
57}
58
59
60void ControllerUsers::serviceIdPut(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariantMap& data) {
61 serviceOK(request, response, putKey(db()->save(Dbt::Users::fromMap(data))));
62}
63
64
65void ControllerUsers::serviceIdPost(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariantMap& data) {
66 serviceIdPut(request, response, data);
67}
68
69
70void ControllerUsers::serviceIdDelete(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString& id) {
71 db()->remove(Dbt::Users(id.toInt()));
72 serviceOK(request, response);
73}
74
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 service(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response)
Obsluha požadavku.
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 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.
void service(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response) Q_DECL_OVERRIDE
Obsluha požadavku.
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 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.
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.