1#include "controllerdooremployees.h"
2#include "httprequest.h"
6#include <QRegularExpression>
10ControllerDoorEmployees::ControllerDoorEmployees(HobrasoftHttpd::HttpConnection *parent)
15 static const QRegularExpression re(
"^/api/v1/doors/(\\d+)/employees(?:/(\\d+))?/?$");
16 auto m = re.match(
request->path());
18 serviceError(
request, response, 405,
"bad-request",
"Invalid request");
22 int door = m.captured(1).toInt();
23 int employee = m.captured(2).isEmpty() ? -1 : m.captured(2).toInt();
25 if (
request->method() ==
"GET") {
26 serviceGet(
request, response, door, employee);
30 if (
request->method() ==
"PUT") {
34 serviceError(
request, response, 400,
"bad-request",
"Could not parse JSON data");
37 servicePut(
request, response, door, data);
41 if (
request->method() ==
"DELETE") {
43 serviceError(
request, response, 400,
"bad-request",
"Employee id required");
46 serviceDelete(
request, response, door, employee);
50 serviceError(
request, response, 405,
"bad-request",
"Invalid request");
53void ControllerDoorEmployees::serviceGet(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response,
int door,
int employee)
57 filter.employee = employee > 0 ? employee : 0;
58 auto list = db()->employeeCanOpenDoor(filter);
61 serviceError(
request, response, 404,
"not-found",
"NotFound");
70void ControllerDoorEmployees::servicePut(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response,
int door,
const QVariantMap &data)
74 db()->save(Dbt::EmployeeCanOpenDoor::fromMap(d));
78void ControllerDoorEmployees::serviceDelete(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response,
int door,
int employee)
80 db()->remove(Dbt::EmployeeCanOpenDoor(employee, door));
Virtuální třída pro vyřizování unifikovaných Http požadavků na server API.
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 service(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response) Q_DECL_OVERRIDE
Obsluha požadavku.
static QVariant data(const QByteArray &json)
Converts json to data.
Jmenný prostor pro obsluhu konkrétních HTTP požadavků aplikace.