X-Git-Url: http://git.maemo.org/git/?p=speedfreak;a=blobdiff_plain;f=Client%2Fhttpclient.cpp;h=2d1cb540feb52e8898618575febdc9ef38e5af01;hp=5a255620c2dcb6cdaf3049b2b860b225ba112c0f;hb=74a1541fc05869163401c4885da4445c8940c822;hpb=02000dfe5ae73748692027765c501313d1945dc1 diff --git a/Client/httpclient.cpp b/Client/httpclient.cpp index 5a25562..2d1cb54 100644 --- a/Client/httpclient.cpp +++ b/Client/httpclient.cpp @@ -1,13 +1,14 @@ #include #include #include "httpclient.h" -#include "carmainwindow.h" +#include "mainwindow.h" + /** *@brief Constructor, connects object to GUI *@param Pointer to carmainwindow, which is temporarily used during development */ -HttpClient::HttpClient(CarMainWindow *myCarw) +HttpClient::HttpClient(MainWindow *myCarw) { myMainw = myCarw; netManager = new QNetworkAccessManager(); @@ -26,12 +27,11 @@ HttpClient::~HttpClient() /** *@brief Sends registration information to the server in xml format. *Reads user name, password and emaol address from resuldialogs internal variables. - *@todo Replace msg box with better reaction to server`s responce. */ void HttpClient::requestRegistration() { qDebug() << "_requestRegistration" ; - qDebug() << myMainw->myRegistration->getUserName() << "+" << myMainw->myRegistration->getPassword() << "+" << myMainw->myRegistration->getEmail(); + qDebug() << myMainw->settingsDialog->getRegUserName() << "+" << myMainw->settingsDialog->getRegPassword() << "+" << myMainw->settingsDialog->getRegEmail(); QBuffer *regbuffer = new QBuffer(); QUrl qurl("http://api.speedfreak-app.com/api/register"); @@ -41,14 +41,15 @@ void HttpClient::requestRegistration() regbuffer->open(QBuffer::ReadWrite); myXmlwriter->writeRegistering(regbuffer, - myMainw->myRegistration->getUserName(), - myMainw->myRegistration->getPassword(), - myMainw->myRegistration->getEmail()); + myMainw->settingsDialog->getRegUserName(), + myMainw->settingsDialog->getRegPassword(), + myMainw->settingsDialog->getRegEmail()); qDebug() << "carmainwindow: regbuffer->data(): " << regbuffer->data(); currentDownload = netManager->post(request, ("xml=" + regbuffer->data())); connect(currentDownload,SIGNAL(finished()),this,SLOT(ackOfRegistration())); //connect(currentDownload,SIGNAL(error(QNetworkReply::NetworkError)),myMainw,SLOT(errorFromServer(QNetworkReply::NetworkError))); + myMainw->settingsDialog->setLabelInfoToUser("Reguesting registration from server"); regbuffer->close(); } @@ -56,36 +57,68 @@ void HttpClient::requestRegistration() /** *@brief Sends result(s) to the server in xml format. *Send authentication information in the header. - *@todo Read category elsewhere. */ -void HttpClient::sendResultXml() +void HttpClient::sendResultXml(QString category, double result) { qDebug() << "_sendResultXml"; QBuffer *xmlbuffer = new QBuffer(); - QString category_name = "acceleration-0-100"; //replace with real value from category list - QUrl qurl("http://api.speedfreak-app.com/api/update/" + category_name); + QUrl qurl("http://api.speedfreak-app.com/api/update/" + category); qDebug() << qurl.toString(); QNetworkRequest request(qurl); QNetworkReply *currentDownload; xmlbuffer->open(QBuffer::ReadWrite); - myXmlwriter->writeResult(xmlbuffer); + myXmlwriter->writeResult(xmlbuffer, result); qDebug() << "carmainwindow: xmlbuffer->data(): " << xmlbuffer->data(); - QString credentials = myMainw->myRegistration->getUserName() + ":" + myMainw->myRegistration->getPassword(); + QString credentials = myMainw->settingsDialog->getUserName() + ":" + myMainw->settingsDialog->getPassword(); credentials = "Basic " + credentials.toAscii().toBase64(); request.setRawHeader(QByteArray("Authorization"),credentials.toAscii()); currentDownload = netManager->post(request, ("xml=" + xmlbuffer->data())); connect(currentDownload,SIGNAL(finished()),this,SLOT(ackOfResult())); //connect(currentDownload,SIGNAL(error(QNetworkReply::NetworkError)),myMainw,SLOT(errorFromServer(QNetworkReply::NetworkError))); + myMainw->resultDialog->setLabelInfoToUser("Sending result to server"); xmlbuffer->close(); } /** + *@brief Sends route to the server in xml format. + *Send authentication information in the header. + *@todo Check destination URL. + */ +void HttpClient::sendRouteXml() +{ + qDebug() << "_sendRouteXml"; + + QString filename = "route.xml"; + QFile file(filename); + if (!file.open(QFile::ReadOnly)) { + qDebug() << "_sendRouteXml file.open() fail"; + return; + } + + QUrl qurl("http://api.speedfreak-app.com/api/update/route"); + qDebug() << qurl.toString(); + QNetworkRequest request(qurl); + QNetworkReply *currentDownload; + + QString credentials = myMainw->settingsDialog->getUserName() + ":" + myMainw->settingsDialog->getPassword(); + credentials = "Basic " + credentials.toAscii().toBase64(); + request.setRawHeader(QByteArray("Authorization"),credentials.toAscii()); + + currentDownload = netManager->post(request, ("xml=" + file.readAll())); + connect(currentDownload,SIGNAL(finished()),this,SLOT(ackOfRoute())); + //connect(currentDownload,SIGNAL(error(QNetworkReply::NetworkError)),myMainw,SLOT(errorFromServer(QNetworkReply::NetworkError))); + myMainw->routeDialog->setLabelInfoToUser("Sending route to server"); + + file.close(); +} + +/** *@brief Request the Top10List of certain category from the server. *Send authentication information in the header. *@param Category of results. @@ -101,13 +134,14 @@ void HttpClient::requestTopList(QString category, QString limit) QNetworkRequest request(qurl); QNetworkReply *currentDownload; - QString credentials = myMainw->myRegistration->getUserName() + ":" + myMainw->myRegistration->getPassword(); + QString credentials = myMainw->settingsDialog->getUserName() + ":" + myMainw->settingsDialog->getPassword(); credentials = "Basic " + credentials.toAscii().toBase64(); request.setRawHeader(QByteArray("Authorization"),credentials.toAscii()); currentDownload = netManager->post(request, ("data=" )); connect(currentDownload,SIGNAL(finished()),this,SLOT(ackOfToplist())); //connect(currentDownload,SIGNAL(error(QNetworkReply::NetworkError)),myMainw,SLOT(errorFromServer(QNetworkReply::NetworkError))); + myMainw->topResultDialog->setLabelInfoToUser("Reguesting top10 list from server"); } @@ -124,13 +158,14 @@ void HttpClient::requestCategories() QNetworkRequest request(qurl); QNetworkReply *currentDownload; - QString credentials = myMainw->myRegistration->getUserName() + ":" + myMainw->myRegistration->getPassword(); + QString credentials = myMainw->settingsDialog->getUserName() + ":" + myMainw->settingsDialog->getPassword(); credentials = "Basic " + credentials.toAscii().toBase64(); request.setRawHeader(QByteArray("Authorization"),credentials.toAscii()); currentDownload = netManager->post(request, ("data=" )); connect(currentDownload,SIGNAL(finished()),this,SLOT(ackOfCategories())); //connect(currentDownload,SIGNAL(error(QNetworkReply::NetworkError)),myMainw,SLOT(errorFromServer(QNetworkReply::NetworkError))); + myMainw->topResultDialog->setLabelInfoToUser("Reguesting categories from server"); } @@ -147,39 +182,62 @@ void HttpClient::checkLogin() QNetworkRequest request(qurl); QNetworkReply *currentDownload; - QString credentials = myMainw->myRegistration->getUserName() + ":" + myMainw->myRegistration->getPassword(); + QString credentials = myMainw->settingsDialog->getUserName() + ":" + myMainw->settingsDialog->getPassword(); credentials = "Basic " + credentials.toAscii().toBase64(); request.setRawHeader(QByteArray("Authorization"),credentials.toAscii()); currentDownload = netManager->post(request, ("data=" )); connect(currentDownload,SIGNAL(finished()),this,SLOT(ackOfLogin())); //connect(currentDownload,SIGNAL(error(QNetworkReply::NetworkError)),myMainw,SLOT(errorFromServer(QNetworkReply::NetworkError))); + myMainw->settingsDialog->setLabelInfoToUser("Checking login validity from server"); } /** *@brief React to servers responce after result has been sent. - *@todo Implement consequencies of reply. */ void HttpClient::ackOfResult() { qDebug() << "_ackOfResult"; + myMainw->resultDialog->setLabelInfoToUser(""); + QNetworkReply* reply = qobject_cast(sender()); QNetworkReply::NetworkError errorcode; errorcode = reply->error(); if(errorcode != 0) { qDebug() << "errorcode:" << errorcode << reply->errorString(); - QMessageBox::about(myMainw, "Server reply to result sending ",reply->errorString()); + QMessageBox::about(myMainw->resultDialog, "Server reply to result sending ",reply->errorString()); } else { qDebug() << "errorcode:" << errorcode << reply->errorString(); - qDebug() << reply->readAll(); + QMessageBox::about(myMainw->resultDialog, "Server reply to result sending", "Result received " + reply->readAll()); } - } +/** + *@brief React to servers responce after route has been sent. + */ +void HttpClient::ackOfRoute() +{ + qDebug() << "_ackOfRoute"; + + myMainw->routeDialog->setLabelInfoToUser(""); + + QNetworkReply* reply = qobject_cast(sender()); + + QNetworkReply::NetworkError errorcode; + errorcode = reply->error(); + if(errorcode != 0) { + qDebug() << "errorcode:" << errorcode << reply->errorString(); + QMessageBox::about(myMainw->routeDialog, "Server reply to route sending ",reply->errorString()); + } + else { + qDebug() << "errorcode:" << errorcode << reply->errorString(); + QMessageBox::about(myMainw, "Server reply to route sending", "Route received " + reply->readAll()); + } +} /** *@brief React to servers responce after registration has been sent. @@ -189,19 +247,20 @@ void HttpClient::ackOfRegistration() { qDebug() << "_ackOfRegistration"; + myMainw->settingsDialog->setLabelInfoToUser(""); + QNetworkReply* reply = qobject_cast(sender()); QNetworkReply::NetworkError errorcode; errorcode = reply->error(); if(errorcode != 0) { qDebug() << "errorcode:" << errorcode << reply->errorString(); - QMessageBox::about(myMainw, "Server reply to registration",reply->readAll()); + QMessageBox::about(myMainw->settingsDialog, "Server reply to registration",reply->readAll()); } else { qDebug() << "errorcode=0" << errorcode << reply->errorString(); - QMessageBox::about(myMainw, "Server reply to registration", "User registration " + reply->readAll()); + QMessageBox::about(myMainw->settingsDialog, "Server reply to registration", "User registration " + reply->readAll()); } - } @@ -212,6 +271,8 @@ void HttpClient::ackOfCategories() { qDebug() << "_ackOfCategories"; + myMainw->topResultDialog->setLabelInfoToUser(""); + QNetworkReply* reply = qobject_cast(sender()); myXmlreader->xmlReadCategories(reply); @@ -219,37 +280,38 @@ void HttpClient::ackOfCategories() errorcode = reply->error(); if(errorcode != 0) { qDebug() << "errorcode:" << errorcode << reply->errorString(); - QMessageBox::about(myMainw, "Server reply to requesting categories",reply->errorString()); + QMessageBox::about(myMainw->topResultDialog, "Server reply to requesting categories",reply->errorString()); } else { qDebug() << "errorcode:" << errorcode << reply->errorString(); - qDebug() << reply->readAll(); + QMessageBox::about(myMainw->topResultDialog, "Server reply to requesting categories ", "OK"); } - } /** *@brief React to servers responce after request of TopList in certain category has been sent. - *@todo Implement routing reply`s contents to UI. */ void HttpClient::ackOfLogin() { qDebug() << "_ackOffLogin"; + myMainw->settingsDialog->setLabelInfoToUser(""); + QNetworkReply* reply = qobject_cast(sender()); - myXmlreader->xmlReadTop10Results(reply); QNetworkReply::NetworkError errorcode; errorcode = reply->error(); if(errorcode != 0) { qDebug() << "errorcode:" << errorcode << reply->errorString(); - QMessageBox::about(myMainw, "Server does not recognize your username. Please registrate.",reply->errorString()); + QMessageBox::about(myMainw->settingsDialog, "Server does not recognize your username. Please registrate.",reply->errorString()); } else { qDebug() << "errorcode:" << errorcode << reply->errorString(); - QMessageBox::about(myMainw, "Server reply to login", "User login " + reply->readAll()); + QMessageBox::about(myMainw->settingsDialog, "Server reply to login", "User login " + reply->readAll()); } + + myMainw->settingsDialog->close(); } @@ -260,29 +322,31 @@ void HttpClient::errorFromServer(QNetworkReply::NetworkError errorcode) { qDebug() << "_errorFromServer"; + //myMainw->setLabelInfoToUser(""); + QNetworkReply* reply = qobject_cast(sender()); if(errorcode != 0) { qDebug() << "errorcode:" << errorcode; - //Note that errors are already reported on other ach-functions for server communication + //Note that errors are already reported on other each functions for server communication //QMessageBox::about(myMainw, "Server reported an error", reply->errorString()); } else { qDebug() << "errorcode:" << errorcode << reply->errorString(); qDebug() << reply->readAll(); } - } /** *@brief React to servers responce after request of TopList in certain category has been sent. - *@todo Implement routing reply`s contents to UI. */ void HttpClient::ackOfToplist() { qDebug() << "_ackOfToplist"; + //myMainw->setLabelInfoToUser(""); + QNetworkReply* reply = qobject_cast(sender()); myXmlreader->xmlReadTop10Results(reply); @@ -290,12 +354,11 @@ void HttpClient::ackOfToplist() errorcode = reply->error(); if(errorcode != 0) { qDebug() << "errorcode:" << errorcode << reply->errorString(); - QMessageBox::about(myMainw, "Server reply to requesting top 10 list",reply->errorString()); + QMessageBox::about(myMainw->topResultDialog, "Server reply to requesting top 10 list",reply->errorString()); } else { qDebug() << "errorcode:" << errorcode << reply->errorString(); - qDebug() << reply->readAll(); + //QMessageBox::about(myMainw->topResultDialog, "Server reply to requesting top 10 list", "OK " + reply->readAll()); } - }