Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <QJsonArray>
- #include <QJsonDocument>
- #include <QJsonObject>
- /*
- Сервак узнаёт по url, что надо парсить json и вызывать некоторую функцию. URL парсится из HTTP-заголовка вручную.
- */
- void HttpClient::processRequest(HttpClient::NetRequest& req) {
- writeStandardHeaders (200, "OK");
- if (req.url == "/tableCount.json") {
- QByteArray data = sock.readAll ();
- QJsonDocument doc = QJsonDocument::fromJson (static_cast <const char*> (data),
- data.size ());
- getTableCount (doc.object ());
- } else
- createHtml ()
- .writeHead (Heads::mainPage)
- .writeBody ("<h3>It works!</h3>\n"
- "<p>Cheesecake server "
- + QString (version) + "</p>");
- }
- void HttpClient::getTableCount(const QJsonObject& obj) {
- QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
- // Парсинг данных от клиента
- db.setHostName (obj.value ("host").toString ());
- db.setDatabaseName (obj.value ("db").toString ());
- db.setUserName(obj.value ("user").toString ());
- db.setPassword(obj.value ("pass").toString ());
- bool ok = db.open();
- if (not ok) {
- qDebug () << db.lastError ().text ();
- }
- QSqlQuery query;
- query.exec ("SELECT count(*) from information_schema.tables WHERE table_schema = 'cheesecakes';");
- // Формирование и отправка данных на клиента
- QJsonDocument doc;
- QJsonObject obj;
- obj.insert ("table-count", query.value (0).toInt ());
- doc.setObject (obj);
- writeHttpBody (doc.toJson ());
- }
Advertisement
Add Comment
Please, Sign In to add comment