Timesheets-Server
Timesheets server
Načítám...
Vyhledávám...
Nebylo nic nalezeno
Dokumentace třídy Httpd::AbstractController

Virtuální třída pro vyřizování unifikovaných Http požadavků na server API. ...

#include <abstractcontroller.h>

Diagram dědičnosti pro třídu Httpd::AbstractController:
Httpd::ControllerCategories Httpd::ControllerCategoriesSiblings Httpd::ControllerCategoriesToRoot Httpd::ControllerCategoriesTree Httpd::ControllerOverview Httpd::ControllerOverviewPublic Httpd::ControllerServer Httpd::ControllerStatusOrder Httpd::ControllerStatusTemplates Httpd::ControllerStatuses Httpd::ControllerTicketFiles Httpd::ControllerTicketStatus Httpd::ControllerTicketTimesheets Httpd::ControllerTicketValues Httpd::ControllerTickets Httpd::ControllerTicketsVw Httpd::ControllerTimesheet Httpd::ControllerUsers Httpd::ControllerUsersCategories

Veřejné metody

 AbstractController (HobrasoftHttpd::HttpConnection *parent)
 Konstruktor.
 
virtual void service (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response)
 Obsluha požadavku.
 
void setCheckId (bool x)
 Nastavuje kontrolu položky ID v datech při PUT a POST.
 
void setAuthorizer (RequestAuthorizer *authorizer)
 
AuthenticatedUserauthenticatedUser () const
 
bool checkId () const
 Vrací stav kontroly položky ID v datech při PUT a POST.
 
Db::Databasedb ()
 

Chráněné metody

virtual bool exists (const QString &id)
 Kontrola existence zadaného ID.
 
virtual bool exists (HobrasoftHttpd::HttpRequest *request, const QString &id)
 Kontrola existence zadaného ID.
 
virtual void serviceOK (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariant &data=QVariant())
 Pošle odpověď 200 OK.
 
virtual void serviceError (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, int code, const QString &error, const QVariantMap &data)
 Pošle chybovou odpověď
 
virtual void serviceList (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response)
 Měl by poslat v odpovědi kompletní seznam všech objektů ve třídě a ukončit se.
 
virtual void serviceEvents (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response)
 Pošle v odpovědi kompletní seznam všech objektů ve třídě a následně
 
virtual void serviceIdEvents (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString &id)
 Pošle v odpovědi proud událostí spojených se všemi objekty ve třídě
 
virtual void serviceIdGet (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString &id)
 Pošle odpověď na požadavek konkrétního ID metodou GET.
 
virtual void serviceIdDelete (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString &id)
 Pošle odpověď na požadavek konkrétního ID metodou DELETE - obvykle objekt smaže.
 
virtual void serviceIdPut (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariantMap &data)
 Pošle odpověď na požadavek konkrétního ID metodou PUT - obvykle vloží nový objekt nebo přepíše existující objekt.
 
virtual void serviceIdPost (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariantMap &data)
 Pošle odpověď na požadavek konkrétního ID metodou PUT - obvykle vloží nový objekt nebo přepíše existující objekt.
 
virtual void serviceEvent (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariant &data)
 Pošle do otevřeného proudu událostí jednu událost.
 
virtual bool isAuthorized (Security::Permissions::Permission)
 
HobrasoftHttpd::HttpRequest * request () const
 Vrací ukazatel na aktuální request.
 
HobrasoftHttpd::HttpConnection * connection () const
 Vrací ukazatel na aktuální connection.
 

Statické chráněné metody

static QVariantMap putKey (const QVariant &key)
 

Detailní popis

Virtuální třída pro vyřizování unifikovaných Http požadavků na server API.

Třída vytváří šablonu pro tvorbu unifikovaných HTTP požadavků podle specifikace api. Požadavky jsou tvořené s pevnou strukturou, například:

http://localhost:8086/room
http://localhost:8086/room/events
http://localhost:8086/room/e40f2af7ea281baba30381db700311f7
http://localhost:8086/room/e40f2af7ea281baba30381db700311f7/events

Cesta je složená z několika komponent:

  • /room - modul, kterého se týká. Pokud neuvedu další části cesty, vrací taková adresa okamžitý seznam všech objektů (zde pokojů)
  • e40f2af7ea281baba30381db700311f7 - id objektu, který chci obsluhovat
  • events - pokud se přidá na konec cesty slovo events, otevře se proud událostí, do kterého se začnou vypisovat všechny změny ve sledovaných objektech. Pokud je objektem celý seznam, vypisují se změny každého objektu v seznamu (zde změny na všech pokojích). Pokud je objektem konkrétní objekt, vypisují se pouze jeho změny (zde změny na konkrétním pokoji).

Pro obsluhu cest se volají různé metody:

Implementace odvozených tříd

Defaultní implementace vrací chybu 501. V odvozené třídě se musí implementovat všechny metody, které mají vracet užitečná data. Může být důležité implementovat i metodu exists() - tato metoda vrací bool hodnotu true, pokud dotazované ID existuje. Pokud metoda exists() vrátí false, defaultní implementace třídy vrátí jako odpověď na http požadavek chybu 404. Implementace konkrétní metody se tak nemusí starat o odesílání chybových stavů, například:

void ControllerRoom::serviceIdGet (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString& id) {
Pokoj *pokoj = SEZNAMPOKOJU->pokoj(id);
if (pokoj == NULL) {
// Pokoj neexistuje, chybu už nahlásila abstraktní třída
// Kontrola zde je zbytečná, ale je riskantní test neprovádět
return;
}
serviceOK(request, response, pokoj->webStatus());
}
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.

Kontrola na existenci ID proběhla už v abstraktní třídě AbstractController, takže je v kódu zbytečná - k podobnému stavu by nemělo nikdy dojít. Kontrola je zde pouze pro jistoru, aby server nespadnul při nepředvídatelných událostech. Dobrodružné povahy mohou s velkou porcí jistoty zkrátit celou implementaci metody takto:

void ControllerRoom::serviceIdGet (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString& id) {
serviceOK(request, response, SEZNAMPOKOJU->pokoj(id)->webStatus());
}

Implementace proudu událostí

Implementace proudu událostí se dá zjednodušit použitím metody serviceEvent(). Tato metoda posílá v odpovědi předaná data zformátovaná jako událost - postará se o správné zformátování a potlačí odeslání hlaviček. Implementace proudu událostí pak může vypadat takto (pro stručnost jsou vyházené kontroly):

void ControllerRoom::serviceEvents (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response) {
connect (SEZNAMPOKOJU, SIGNAL( statusChanged(const SkupinaJednotek *)),
this, SLOT(slotSendUpdate(const SkupinaJednotek *)));
QList<SkupinaJednotek *> list = SEZNAMPOKOJU->skupiny().toList();
for (int i=0; i<list.size(); i++) {
slotSendUpdate(qobject_cast<Pokoj *>(list[i]));
}
}
void ControllerRoom::serviceIdEvents (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString& id) {
connect(pokoj, SIGNAL(statusChanged(const SkupinaJednotek *)),
this, SLOT(slotSendUpdate(const SkupinaJednotek *)));
slotSendUpdate(pokoj);
}
void ControllerRoom::slotSendUpdate(const SkupinaJednotek *skupina) {
serviceEvent(NULL, NULL, pokoj->webStatusPresenceAndCall());
}
virtual void serviceEvent(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariant &data)
Pošle do otevřeného proudu událostí jednu událost.
Viz také
API pro přístup k datům přes webový server

Definice je uvedena na řádku 132 v souboru abstractcontroller.h.

Dokumentace konstruktoru a destruktoru

◆ AbstractController()

AbstractController::AbstractController ( HobrasoftHttpd::HttpConnection * parent)

Konstruktor.

Definice je uvedena na řádku 20 v souboru abstractcontroller.cpp.

20 : HobrasoftHttpd::HttpRequestHandler(parent) {
21 m_authorizer = NULL;
22 m_connection = parent;
23 m_checkId = false;
24}

Dokumentace členských funkcí

◆ authenticatedUser()

AuthenticatedUser * Httpd::AbstractController::authenticatedUser ( ) const
inline

Definice je uvedena na řádku 153 v souboru abstractcontroller.h.

153{ return m_authorizer->authenticatedUser(); }

◆ checkId()

bool Httpd::AbstractController::checkId ( ) const
inline

Vrací stav kontroly položky ID v datech při PUT a POST.

Definice je uvedena na řádku 158 v souboru abstractcontroller.h.

158{ return m_checkId; }

◆ connection()

HobrasoftHttpd::HttpConnection * AbstractController::connection ( ) const
protected

Vrací ukazatel na aktuální connection.

Definice je uvedena na řádku 39 v souboru abstractcontroller.cpp.

39 {
40 return m_connection;
41}

◆ db()

Db::Database * AbstractController::db ( )

Definice je uvedena na řádku 27 v souboru abstractcontroller.cpp.

27 {
28 return (authenticatedUser() != nullptr)
29 ? Db::Database::create(this, authenticatedUser())
30 : Db::Database::create(this);
31}

◆ exists() [1/2]

virtual bool Httpd::AbstractController::exists ( const QString & id)
inlineprotectedvirtual

Kontrola existence zadaného ID.

Návratová hodnota
true pokud zadané ID existuje

V odvozených třídách by měla být metoda reimplementovaná. Na základě výsledků se rozhoduje, jestli se pošle jako odpověď na dotaz chyba 404, nebo se bude volat některá z dalších metod (serviceId(), serviceIdEvents(), serviceIdDelete()).

Definice je uvedena na řádku 174 v souboru abstractcontroller.h.

174 {
175 Q_UNUSED(id);
176 return true;
177 }

◆ exists() [2/2]

virtual bool Httpd::AbstractController::exists ( HobrasoftHttpd::HttpRequest * request,
const QString & id )
inlineprotectedvirtual

Kontrola existence zadaného ID.

Návratová hodnota
true pokud zadané ID existuje

V odvozených třídách by měla být metoda reimplementovaná. Na základě výsledků se rozhoduje, jestli se pošle jako odpověď na dotaz chyba 404, nebo se bude volat některá z dalších metod (serviceId(), serviceIdEvents(), serviceIdDelete()).

Definice je uvedena na řádku 190 v souboru abstractcontroller.h.

190 {
191 Q_UNUSED(request);
192 return exists(id);
193 }
virtual bool exists(const QString &id)
Kontrola existence zadaného ID.

◆ isAuthorized()

bool AbstractController::isAuthorized ( Security::Permissions::Permission permission)
protectedvirtual

Definice je uvedena na řádku 44 v souboru abstractcontroller.cpp.

44 {
45 if (m_authorizer == NULL) {
46 return true;
47 }
48 return m_authorizer->isAuthorized(permission);
49}

◆ putKey()

static QVariantMap Httpd::AbstractController::putKey ( const QVariant & key)
inlinestaticprotected

Definice je uvedena na řádku 305 v souboru abstractcontroller.h.

305 {
306 QVariantMap data;
307 data["key"] = key;
308 data["ok"] = true;
309 return data;
310 }

◆ request()

HobrasoftHttpd::HttpRequest * AbstractController::request ( ) const
protected

Vrací ukazatel na aktuální request.

Definice je uvedena na řádku 34 v souboru abstractcontroller.cpp.

34 {
35 return m_request;
36}

◆ service()

void AbstractController::service ( HobrasoftHttpd::HttpRequest * request,
HobrasoftHttpd::HttpResponse * response )
virtual

Obsluha požadavku.

Reimplementováno v Httpd::ControllerOverview, Httpd::ControllerTimesheet a Httpd::ControllerUsers.

Definice je uvedena na řádku 52 v souboru abstractcontroller.cpp.

52 {
53 m_request = request;
54 QString path = request->path();
55 QStringList parts = path.split("/");
56
57 if (parts.size() <= 1) {
58 serviceError(request, response, 404, "not-found", "Object not found");
59 return;
60 }
61
62 parts.removeFirst();
63 if (parts.first() == "api") { parts.removeAt(0); }
64 if (parts.first() == "v1") { parts.removeAt(0); }
65
66 switch (parts.size()) {
67 case 1:
68 if (request->method() != "GET") {
69 serviceError(request, response, 405, "bad-request", "Method not allowed");
70 return;
71 }
72 serviceList(request, response);
73 return;
74
75 case 2:
76 if (parts[1] == "events") {
77 if (request->method() != "GET") {
78 serviceError(request, response, 405, "bad-request", "Method not allowed");
79 return;
80 }
81 response->setHeader("Content-Type", "text/event-stream");
82 response->setHeader("Cache-Control", "no-cache,public");
83 response->setHeader("Transfer-Encoding", "chunked");
84 if (!request->header("Referer").isEmpty()) {
85 QUrl referer = QUrl::fromUserInput(request->header("Referer"));
86 QUrl allow;
87 allow.setScheme(referer.scheme());
88 allow.setHost(referer.host());
89 allow.setPort(referer.port());
90 response->setHeader("Access-Control-Allow-Origin", allow.toString());
91 }
92 response->flushSocket();
93 serviceEvents(request, response);
94 return;
95 }
96
97 if (parts[1] != "events") {
98 QString id = parts[1];
99 if (request->method() == "GET") {
100 if (!exists(request, id)) {
101 serviceError(request, response, 404, "not-found", "Not found");
102 return;
103 }
104 response->setHeader("Content-Type", "application/json");
105 response->setHeader("Cache-Control", "no-cache,public");
106 serviceIdGet(request, response, id);
107 return;
108 }
109 if (request->method() == "PUT") {
110
111 bool ok = false;
112 QVariantMap data = JSON::data(request->body(), &ok).toMap();
113 if (!ok) {
114 serviceError(request, response, 400, "bad-request", "Could not parse JSON data");
115 return;
116 }
117
118 if (m_checkId && !data.contains("id")) {
119 serviceError(request, response, 400, "bad-request", "Data must contain ID");
120 return;
121 }
122
123 response->setHeader("Content-Type", "application/json");
124 response->setHeader("Cache-Control", "no-cache,public");
125 serviceIdPut(request, response, data);
126 return;
127 }
128 if (request->method() == "POST") {
129
130 bool ok = false;
131 QVariantMap data = JSON::data(request->body(), &ok).toMap();
132 if (!ok) {
133 serviceError(request, response, 400, "bad-request", "Could not parse JSON data");
134 return;
135 }
136
137 if (m_checkId && !data.contains("id")) {
138 serviceError(request, response, 400, "bad-request", "Data must contain ID");
139 return;
140 }
141
142 response->setHeader("Content-Type", "application/json");
143 response->setHeader("Cache-Control", "no-cache,public");
144 serviceIdPost(request, response, data);
145 return;
146 }
147 if (request->method() == "DELETE") {
148 if (!exists(request, id)) {
149 serviceError(request, response, 404, "not-found", "Not found");
150 return;
151 }
152 response->setHeader("Content-Type", "application/json");
153 response->setHeader("Cache-Control", "no-cache,public");
154 serviceIdDelete(request, response, id);
155 return;
156 }
157 }
158 return;
159
160 case 3:
161 if (parts[1] == "events" || parts[2] != "events") {
162 serviceError(request, response, 404, "not-found", "Not found");
163 return;
164 }
165
166 if (request->method() != "GET") {
167 serviceError(request, response, 405, "bad-request", "Method not allowed");
168 return;
169 }
170
171 if (!exists(request, parts[1])) {
172 serviceError(request, response, 404, "not-found", "Not found");
173 return;
174 }
175
176 response->setHeader("Content-Type", "text/event-stream");
177 response->setHeader("Cache-Control", "no-cache,public");
178 response->setHeader("Transfer-Encoding", "chunked");
179 if (!request->header("Referer").isEmpty()) {
180 QUrl referer = QUrl::fromUserInput(request->header("Referer"));
181 QUrl allow;
182 allow.setScheme(referer.scheme());
183 allow.setHost(referer.host());
184 allow.setPort(referer.port());
185 response->setHeader("Access-Control-Allow-Origin", allow.toString());
186 }
187 response->flushSocket();
188 serviceIdEvents(request, response, parts[1]);
189 return;
190
191 default:
192 serviceError(request, response, 400, "bad-request", "Request could not be recognized");
193 return;
194 }
195}
virtual void serviceIdPut(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariantMap &data)
Pošle odpověď na požadavek konkrétního ID metodou PUT - obvykle vloží nový objekt nebo přepíše existu...
virtual void serviceIdGet(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString &id)
Pošle odpověď na požadavek konkrétního ID metodou GET.
virtual void serviceIdDelete(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString &id)
Pošle odpověď na požadavek konkrétního ID metodou DELETE - obvykle objekt smaže.
virtual void serviceIdEvents(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QString &id)
Pošle v odpovědi proud událostí spojených se všemi objekty ve třídě
virtual void serviceEvents(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response)
Pošle v odpovědi kompletní seznam všech objektů ve třídě a následně
virtual void serviceError(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, int code, const QString &error, const QVariantMap &data)
Pošle chybovou odpověď
virtual void serviceIdPost(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, const QVariantMap &data)
Pošle odpověď na požadavek konkrétního ID metodou PUT - obvykle vloží nový objekt nebo přepíše existu...
virtual void serviceList(HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response)
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

◆ serviceError()

void AbstractController::serviceError ( HobrasoftHttpd::HttpRequest * request,
HobrasoftHttpd::HttpResponse * response,
int code,
const QString & error,
const QVariantMap & data )
protectedvirtual

Pošle chybovou odpověď

Parametry
code- chybový kód (například 404)
error- chybový textový kód
reason- vysvětlení chyby

Posílá odpověď zformátovanou takto:

Content-Type: application/json
Cache-Control: no-cache,public
404 not-found
{ "error" : "not-found", "reason" : "Not found" }

*/ virtual void serviceError (HobrasoftHttpd::HttpRequest *request, HobrasoftHttpd::HttpResponse *response, int code, const QString& error, const QString& reason);

/**

Pošle chybovou odpověď

Parametry
code- chybový kód (například 404)
error- chybový textový kód, píše se do HTTP statutu
reason- vysvětlení chyby

Posílá odpověď zformátovanou takto:

Content-Type: application/json
Cache-Control: no-cache,public
404 text v parametru error
{ ..... }

Definice je uvedena na řádku 198 v souboru abstractcontroller.cpp.

203 {
204
205 Q_UNUSED(request);
206
207 QVariantMap data;
208 data["error"] = error;
209 data["reason"] = reason;
210
211 HobrasoftHttpd::HttpResponse *r = (response == nullptr) ? new HobrasoftHttpd::HttpResponse(connection()) : response;
212 r->clearHeaders();
213 r->setHeader("Content-Type", "application/json");
214 r->setHeader("Cache-Control", "no-cache,public");
215 r->setStatus(code, error);
216 r->write( JSON::json(data) );
217 r->flush();
218// connection()->deleteLater();
219}
HobrasoftHttpd::HttpConnection * connection() const
Vrací ukazatel na aktuální connection.
static QByteArray json(const QVariant &data)
Converts data to json.
Definition json.cpp:21

◆ serviceEvent()

void AbstractController::serviceEvent ( HobrasoftHttpd::HttpRequest * request,
HobrasoftHttpd::HttpResponse * response,
const QVariant & data )
protectedvirtual

Pošle do otevřeného proudu událostí jednu událost.

I když je možné reimplementovat, obvykle pro to není důvod. Posílá do proudu událostí jednu událost.

Definice je uvedena na řádku 260 v souboru abstractcontroller.cpp.

263 {
264 Q_UNUSED(request);
265 Q_UNUSED(response);
266
267 // Pozor! Hlavička se neposílá, ale je potřeba
268 // Skutečná hlavička se posílá v metodě service()
269 HobrasoftHttpd::HttpResponse *lresponse = HttpRequestHandler::response();
270 lresponse->setHeader("Transfer-Encoding", "chunked");
271 lresponse->setHeader("Content-Type", "text/event-stream");
272 lresponse->setHeader("Cache-Control", "no-cache,public");
273 lresponse->setSendHeaders(false);
274
275 QByteArray datagram;
276 datagram += "event: status\n";
277 datagram += "data: ";
278 datagram += JSON::json(data);
279 datagram += "\n";
280 datagram += "\n";
281 lresponse->write(datagram);
282 lresponse->flushSocket();
283 lresponse->flushAndDelete();
284
285}

◆ serviceEvents()

void AbstractController::serviceEvents ( HobrasoftHttpd::HttpRequest * request,
HobrasoftHttpd::HttpResponse * response )
protectedvirtual

Pošle v odpovědi kompletní seznam všech objektů ve třídě a následně

Defaultní implementace posílá chybu 501 Not Implemented

Definice je uvedena na řádku 292 v souboru abstractcontroller.cpp.

292 {
293 serviceError(request, response, 501, "not-implemeted", "Method not implemented");
294}

◆ serviceIdDelete()

void AbstractController::serviceIdDelete ( HobrasoftHttpd::HttpRequest * request,
HobrasoftHttpd::HttpResponse * response,
const QString & id )
protectedvirtual

Pošle odpověď na požadavek konkrétního ID metodou DELETE - obvykle objekt smaže.

Defaultní implementace posílá chybu 501 Not Implemented

Reimplementováno v Httpd::ControllerCategories, Httpd::ControllerOverview, Httpd::ControllerStatuses, Httpd::ControllerStatusOrder, Httpd::ControllerTicketFiles, Httpd::ControllerTickets, Httpd::ControllerTicketStatus, Httpd::ControllerTicketsVw, Httpd::ControllerTicketTimesheets, Httpd::ControllerTicketValues, Httpd::ControllerUsers a Httpd::ControllerUsersCategories.

Definice je uvedena na řádku 302 v souboru abstractcontroller.cpp.

302 {
303 serviceError(request, response, 501, "not-implemeted", "Method not implemented");
304}

◆ serviceIdEvents()

void AbstractController::serviceIdEvents ( HobrasoftHttpd::HttpRequest * request,
HobrasoftHttpd::HttpResponse * response,
const QString & id )
protectedvirtual

Pošle v odpovědi proud událostí spojených se všemi objekty ve třídě

Obvyklá implementace pošle na začátku seznam všech objektů (jako události) a potom posílá už jen změny

Defaultní implementace posílá chybu 501 Not Implemented

Definice je uvedena na řádku 297 v souboru abstractcontroller.cpp.

297 {
298 serviceError(request, response, 501, "not-implemeted", "Method not implemented");
299}

◆ serviceIdGet()

void AbstractController::serviceIdGet ( HobrasoftHttpd::HttpRequest * request,
HobrasoftHttpd::HttpResponse * response,
const QString & id )
protectedvirtual

◆ serviceIdPost()

void AbstractController::serviceIdPost ( HobrasoftHttpd::HttpRequest * request,
HobrasoftHttpd::HttpResponse * response,
const QVariantMap & data )
protectedvirtual

Pošle odpověď na požadavek konkrétního ID metodou PUT - obvykle vloží nový objekt nebo přepíše existující objekt.

Defaultní implementace posílá chybu 501 Not Implemented

Reimplementováno v Httpd::ControllerCategories, Httpd::ControllerServer, Httpd::ControllerStatuses, Httpd::ControllerStatusOrder, Httpd::ControllerTicketFiles, Httpd::ControllerTickets, Httpd::ControllerTicketStatus, Httpd::ControllerTicketsVw, Httpd::ControllerTicketTimesheets, Httpd::ControllerTicketValues, Httpd::ControllerUsers a Httpd::ControllerUsersCategories.

Definice je uvedena na řádku 317 v souboru abstractcontroller.cpp.

317 {
318 serviceError(request, response, 501, "not-implemeted", "Method not implemented");
319}

◆ serviceIdPut()

void AbstractController::serviceIdPut ( HobrasoftHttpd::HttpRequest * request,
HobrasoftHttpd::HttpResponse * response,
const QVariantMap & data )
protectedvirtual

Pošle odpověď na požadavek konkrétního ID metodou PUT - obvykle vloží nový objekt nebo přepíše existující objekt.

Defaultní implementace posílá chybu 501 Not Implemented

Reimplementováno v Httpd::ControllerCategories, Httpd::ControllerServer, Httpd::ControllerStatuses, Httpd::ControllerStatusOrder, Httpd::ControllerTicketFiles, Httpd::ControllerTickets, Httpd::ControllerTicketStatus, Httpd::ControllerTicketsVw, Httpd::ControllerTicketTimesheets, Httpd::ControllerTicketValues, Httpd::ControllerUsers a Httpd::ControllerUsersCategories.

Definice je uvedena na řádku 312 v souboru abstractcontroller.cpp.

312 {
313 serviceError(request, response, 501, "not-implemeted", "Method not implemented");
314}

◆ serviceList()

void AbstractController::serviceList ( HobrasoftHttpd::HttpRequest * request,
HobrasoftHttpd::HttpResponse * response )
protectedvirtual

Měl by poslat v odpovědi kompletní seznam všech objektů ve třídě a ukončit se.

Defaultní implementace posílá chybu 501 Not Implemented

Reimplementováno v Httpd::ControllerCategories, Httpd::ControllerCategoriesSiblings, Httpd::ControllerCategoriesTree, Httpd::ControllerOverview, Httpd::ControllerStatuses, Httpd::ControllerStatusOrder, Httpd::ControllerStatusTemplates, Httpd::ControllerTicketFiles, Httpd::ControllerTickets, Httpd::ControllerTicketStatus, Httpd::ControllerTicketsVw, Httpd::ControllerTicketTimesheets, Httpd::ControllerTicketValues, Httpd::ControllerUsers a Httpd::ControllerUsersCategories.

Definice je uvedena na řádku 287 v souboru abstractcontroller.cpp.

287 {
288 serviceError(request, response, 501, "not-implemeted", "Method not implemented");
289}

◆ serviceOK()

void AbstractController::serviceOK ( HobrasoftHttpd::HttpRequest * request,
HobrasoftHttpd::HttpResponse * response,
const QVariant & data = QVariant() )
protectedvirtual

Pošle odpověď 200 OK.

Parametry
data- pokud je zadaný, pošle se místo defaultního '{ "ok" : true }'

Definice je uvedena na řádku 242 v souboru abstractcontroller.cpp.

245 {
246
247 Q_UNUSED(request);
248
249 QVariantMap okdata;
250 okdata["ok"] = true;
251
252 if (!response->containsHeader("Content-Type")) { response->setHeader("Content-Type", "application/json"); }
253 if (!response->containsHeader("Cache-Control")) { response->setHeader("Cache-Control", "no-cache,public"); }
254 response->setStatus(200, "OK");
255 response->write( JSON::json( (!data.isValid() || data.isNull()) ? okdata : data) );
256 response->flush();
257}

◆ setAuthorizer()

void Httpd::AbstractController::setAuthorizer ( RequestAuthorizer * authorizer)
inline

Definice je uvedena na řádku 151 v souboru abstractcontroller.h.

151{ m_authorizer = authorizer; }

◆ setCheckId()

void Httpd::AbstractController::setCheckId ( bool x)
inline

Nastavuje kontrolu položky ID v datech při PUT a POST.

Definice je uvedena na řádku 149 v souboru abstractcontroller.h.

149{ m_checkId = x; }

Dokumentace pro tuto třídu byla vygenerována z následujících souborů: