X-Git-Url: http://git.maemo.org/git/?p=speedfreak;a=blobdiff_plain;f=Client%2Fhttpclient.cpp;h=d5049fd50a8adfb1445b7860b31ec861c074d58a;hp=9c32c3808738fcd48b5fd5c9acdb062dab9702e3;hb=25711a26712cb909c39eeed80e0227d7fd2411cc;hpb=9611ee9de1ead9376e3bb7613e881196420950fb diff --git a/Client/httpclient.cpp b/Client/httpclient.cpp index 9c32c38..d5049fd 100644 --- a/Client/httpclient.cpp +++ b/Client/httpclient.cpp @@ -10,6 +10,7 @@ #include #include +#include #include "httpclient.h" #include "mainwindow.h" @@ -24,6 +25,7 @@ HttpClient::HttpClient(MainWindow *myCarw) netManager = new QNetworkAccessManager(); myXmlwriter = new XmlWriter(); myXmlreader = new XmlReader(); + connect(myXmlreader, SIGNAL(userInfo(QStringList*)), this, SLOT(sendUsersInfo(QStringList*))); } /** @@ -32,6 +34,11 @@ HttpClient::HttpClient(MainWindow *myCarw) HttpClient::~HttpClient() { qDebug() << "__~HttpClient" ; + + if(myXmlwriter) + delete myXmlwriter; + if(myXmlreader) + delete myXmlreader; } /** @@ -41,19 +48,39 @@ HttpClient::~HttpClient() void HttpClient::requestRegistration() { qDebug() << "_requestRegistration" ; - qDebug() << myMainw->settingsDialog->getRegUserName() << "+" << myMainw->settingsDialog->getRegPassword() << "+" << myMainw->settingsDialog->getRegEmail(); + qDebug() << myMainw->settingsDialog->registerDialog->getRegUserName() << "+" << myMainw->settingsDialog->registerDialog->getRegPassword() << "+" << myMainw->settingsDialog->registerDialog->getRegEmail(); QBuffer *regbuffer = new QBuffer(); - QUrl qurl("http://api.speedfreak-app.com/api/register"); + QUrl qurl("http://www.speedfreak-app.com/users/register"); QNetworkRequest request(qurl); qDebug() << qurl.toString(); QNetworkReply *currentDownload; regbuffer->open(QBuffer::ReadWrite); - myXmlwriter->writeRegistering(regbuffer, + + // Without profile dialog + /*myXmlwriter->writeRegistering(regbuffer, myMainw->settingsDialog->getRegUserName(), myMainw->settingsDialog->getRegPassword(), - myMainw->settingsDialog->getRegEmail()); + myMainw->settingsDialog->getRegEmail());*/ + // With profile dialog + /*myXmlwriter->writeRegistering(regbuffer, + myMainw->settingsDialog->getRegUserName(), + myMainw->settingsDialog->getRegPassword(), + myMainw->settingsDialog->getRegEmail(), + myMainw->settingsDialog->profileDialog->getDescription()); + myMainw->settingsDialog->profileDialog->getManufacturer(), + myMainw->settingsDialog->profileDialog->getType(), + myMainw->settingsDialog->profileDialog->getModel(), + myMainw->settingsDialog->profileDialog->getDescription(), + myMainw->settingsDialog->profileDialog->getPicture());*/ + // New way: Registerdialog = register + Profiledialog + myXmlwriter->writeRegistering(regbuffer, + myMainw->settingsDialog->registerDialog->getRegUserName(), + myMainw->settingsDialog->registerDialog->getRegPassword(), + myMainw->settingsDialog->registerDialog->getRegEmail(), + myMainw->settingsDialog->registerDialog->getDescription()); + qDebug() << "carmainwindow: regbuffer->data(): " << regbuffer->data(); currentDownload = netManager->post(request, ("xml=" + regbuffer->data())); @@ -61,8 +88,8 @@ void HttpClient::requestRegistration() //connect(currentDownload,SIGNAL(error(QNetworkReply::NetworkError)),myMainw,SLOT(errorFromServer(QNetworkReply::NetworkError))); //Indicating user - if(myMainw->settingsDialog) - myMainw->settingsDialog->setLabelInfoToUser("Reguesting registration from server"); + if(myMainw->settingsDialog->registerDialog) + myMainw->settingsDialog->registerDialog->setLabelInfoToUser("Reguesting registration from server"); regbuffer->close(); } @@ -74,10 +101,12 @@ void HttpClient::requestRegistration() void HttpClient::sendResultXml(QString category, double result) { qDebug() << "_sendResultXml"; + qDebug() << category; QBuffer *xmlbuffer = new QBuffer(); - QUrl qurl("http://api.speedfreak-app.com/api/update/" + category); + QUrl qurl("http://www.speedfreak-app.com/results/update/" + category); + qDebug() << qurl.toString(); QNetworkRequest request(qurl); QNetworkReply *currentDownload; @@ -102,39 +131,57 @@ void HttpClient::sendResultXml(QString category, double result) } /** - *@brief Sends route to the server in xml format. - *Send authentication information in the header. - *@todo Check destination URL. + * @brief Sends route to the server in xml format. + * Send authentication information in the header. + * @param QString filename + * @param int 1(send to server) or 0(no send) + * @todo Check destination URL. */ -void HttpClient::sendRouteXml() +void HttpClient::sendRouteXml(QString oldName, QString newName, int i) { qDebug() << "_sendRouteXml"; - QString filename = "route.xml"; - QFile file(filename); - if (!file.open(QFile::ReadOnly)) { - qDebug() << "_sendRouteXml file.open() fail"; - return; + //QString filename = "/home/user/MyDocs/speedfreak/route/route.xml"; + qDebug() << "__old:" + oldName; + QString filename = newName; //+ ".xml"; + + if(newName != "") + { + qDebug() << "_rename xml"; + QDir dir(filename); + qDebug() << "__new:" + filename; + qDebug() << dir.rename(oldName, filename); } - QUrl qurl("http://api.speedfreak-app.com/api/update/route"); - qDebug() << qurl.toString(); - QNetworkRequest request(qurl); - QNetworkReply *currentDownload; + if(i == 1) + { + qDebug() << "_send route"; + QFile file(filename); + if (!file.open(QFile::ReadOnly)) + { + qDebug() << "_sendRouteXml file.open() fail"; + return; + } - QString credentials = myMainw->settingsDialog->getUserName() + ":" + myMainw->settingsDialog->getPassword(); - credentials = "Basic " + credentials.toAscii().toBase64(); - request.setRawHeader(QByteArray("Authorization"),credentials.toAscii()); + QUrl qurl("http://speedfreak-app.com/update/route"); + qDebug() << qurl.toString(); + QNetworkRequest request(qurl); + QNetworkReply *currentDownload; - 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))); + QString credentials = myMainw->settingsDialog->getUserName() + ":" + myMainw->settingsDialog->getPassword(); + credentials = "Basic " + credentials.toAscii().toBase64(); + request.setRawHeader(QByteArray("Authorization"),credentials.toAscii()); - //Indicating user - if(myMainw->routeSaveDialog->routeDialog) - myMainw->routeSaveDialog->routeDialog->setLabelInfoToUser("Sending route to server"); + 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))); - file.close(); + //Indicating user + if(myMainw->routeSaveDialog->routeDialog) + myMainw->routeSaveDialog->routeDialog->setLabelInfoToUser("Sending route to server"); + + file.close(); + } } /** @@ -145,9 +192,10 @@ void HttpClient::sendRouteXml() */ void HttpClient::requestTopList(QString category, QString limit) { - qDebug() << "_requestTopList" ; + qDebug() << "_requestTopList"; + qDebug() << category; - QString urlBase = "http://api.speedfreak-app.com/api/results/"; + QString urlBase = "http://www.speedfreak-app.com/results/list_results/"; QUrl qurl(urlBase + category + "/" + limit); qDebug() << qurl.toString(); QNetworkRequest request(qurl); @@ -174,7 +222,7 @@ void HttpClient::requestCategories() { qDebug() << "_requestCategories" ; - QUrl qurl("http://api.speedfreak-app.com/api/categories/"); + QUrl qurl("http://www.speedfreak-app.com/results/categories"); qDebug() << qurl.toString(); QNetworkRequest request(qurl); QNetworkReply *currentDownload; @@ -200,8 +248,9 @@ void HttpClient::checkLogin() { qDebug() << "_checkLogin"; - QUrl qurl("http://api.speedfreak-app.com/api/login/"); + QUrl qurl("http://www.speedfreak-app.com/users/login"); qDebug() << qurl.toString(); + QNetworkRequest request(qurl); QNetworkReply *currentDownload; @@ -245,8 +294,6 @@ void HttpClient::ackOfResult() myMainw->accstart->accRealTimeDialog->resultDialog->setSendServerButtonEnabled(); } else { - qDebug() << "errorcode:" << errorcode << reply->errorString(); - //Indicating user if(myMainw->accstart->accRealTimeDialog->resultDialog) QMessageBox::about(myMainw->accstart->accRealTimeDialog->resultDialog, "Server reply to result sending", "Result received " + reply->readAll()); @@ -292,7 +339,7 @@ void HttpClient::ackOfRegistration() qDebug() << "_ackOfRegistration"; if(myMainw->settingsDialog) - myMainw->settingsDialog->setLabelInfoToUser(""); + myMainw->settingsDialog->registerDialog->setLabelInfoToUser(""); QNetworkReply* reply = qobject_cast(sender()); @@ -300,15 +347,15 @@ void HttpClient::ackOfRegistration() errorcode = reply->error(); if(errorcode != 0) { qDebug() << "errorcode:" << errorcode << reply->errorString(); - if(myMainw->settingsDialog) - QMessageBox::about(myMainw->settingsDialog, "Server reply to registration",reply->readAll()); + if(myMainw->settingsDialog->registerDialog) + QMessageBox::about(myMainw->settingsDialog->registerDialog, "Server reply to registration",reply->readAll()); } else { qDebug() << "errorcode=0" << errorcode << reply->errorString(); - if(myMainw->settingsDialog) + if(myMainw->settingsDialog->registerDialog) { - QMessageBox::about(myMainw->settingsDialog, "Server reply to registration", "User registration " + reply->readAll()); - myMainw->settingsDialog->clearRegisterLineEdits(); + QMessageBox::about(myMainw->settingsDialog->registerDialog, "Server reply to registration", "User registration " + reply->readAll()); + myMainw->settingsDialog->registerDialog->clearRegisterLineEdits(); } } } @@ -335,7 +382,6 @@ void HttpClient::ackOfCategories() myMainw->topResultDialog->setLabelInfoToUser("You're not logged! Please register or log in."); } else { - qDebug() << "errorcode:" << errorcode << reply->errorString(); //QMessageBox::about(myMainw->topResultDialog, "Server reply to requesting categories ", "OK"); if(myMainw->topResultDialog) myMainw->topResultDialog->setLabelInfoToUser(""); @@ -377,7 +423,6 @@ void HttpClient::ackOfLogin() myMainw->settingsDialog->usernameOk(true); myMainw->settingsDialog->close(); } - } } @@ -407,20 +452,284 @@ void HttpClient::ackOfToplist() { qDebug() << "_ackOfToplist"; QNetworkReply* reply = qobject_cast(sender()); - myXmlreader->xmlReadTop10Results(reply); + myXmlreader->xmlReadTop10Results(reply,myMainw->settingsDialog->getUserName()); QNetworkReply::NetworkError errorcode; errorcode = reply->error(); if(errorcode != 0) { qDebug() << "errorcode:" << errorcode << reply->errorString(); - //QMessageBox::about(myMainw->topResultDialog, "Server reply to requesting top 10 list",reply->errorString()); + //Indicating user if(myMainw->topResultDialog) - myMainw->topResultDialog->setLabelInfoToUser("Error"); + { + //QMessageBox::about(myMainw->topResultDialog, "Server reply to requesting top 10 list",reply->errorString()); + myMainw->topResultDialog->setLabelInfoToUser("No results ;("); + } } else { qDebug() << "errorcode:" << errorcode << reply->errorString(); - //QMessageBox::about(myMainw->topResultDialog, "Server reply to requesting top 10 list", "OK " + reply->readAll()); + //Indicating user if(myMainw->topResultDialog) + { + //QMessageBox::about(myMainw->topResultDialog, "Server reply to requesting top 10 list", "OK " + reply->readAll()); myMainw->topResultDialog->setLabelInfoToUser(""); + } + } +} + +/** + * This function sends profile to the server in xml format. + * Send authentication information in the header. + */ +void HttpClient::sendProfileXml() +{ + qDebug() << "_sendProfileXml"; + + QString userName = myMainw->settingsDialog->getUserName(); + QString filename = userName + "_profile.xml"; + QFile file(filename); + if (!file.open(QFile::ReadWrite | QFile::Text)) + { + qDebug() << "_xmlWrite fail"; + return; } + myXmlwriter->writeProfileXmlFile(&file, userName, + myMainw->settingsDialog->registerDialog->getManufacturer(), + myMainw->settingsDialog->registerDialog->getType(), + myMainw->settingsDialog->registerDialog->getModel(), + myMainw->settingsDialog->registerDialog->getDescription(), + myMainw->settingsDialog->registerDialog->getPicture()); + + //Indicating user + if(myMainw->settingsDialog->registerDialog) + myMainw->settingsDialog->registerDialog->setLabelInfoToUser("Profile saved to phone"); + + // Send xml to server + /*QUrl qurl("http://speedfreak-app.com/api/profile"); + QNetworkRequest request(qurl); + qDebug() << qurl.toString(); + 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())); + bool error = connect(currentDownload, SIGNAL(finished()), this, SLOT(ackOfProfile()));*/ + + file.close(); + + // Send picture to server + /*if(myMainw->settingsDialog->profileDialog->getPicture() != "" && error == false) + { + QFile pictureFile( myMainw->settingsDialog->profileDialog->getPicture() ); + if (!pictureFile.open(QIODevice::ReadOnly)) + { + qDebug() << "__picture read fail"; + return; + } + currentDownload = netManager->post(request, pictureFile.readAll()); + connect(currentDownload, SIGNAL(finished()), this, SLOT(ackOfSendingPicture())); + pictureFile.close(); + }*/ +} + +/** + * This slot function react to servers responce after request of profile has been sent. + */ +bool HttpClient::ackOfProfile() +{ + qDebug() << "__ackOfProfile"; + QNetworkReply* reply = qobject_cast(sender()); + QNetworkReply::NetworkError errorcode; + errorcode = reply->error(); + if(errorcode != 0) { + qDebug() << "errorcode:" << errorcode << reply->errorString(); + //Indicating user + if(myMainw->settingsDialog->registerDialog) + { + //QMessageBox::about(myMainw->settingsDialog->profileDialog, "Server reply to requesting profile",reply->errorString()); + myMainw->settingsDialog->registerDialog->setLabelInfoToUser("Profile save to server - fail"); + return true; + } + } + else { + qDebug() << "errorcode:" << errorcode << reply->errorString(); + //Indicating user + if(myMainw->settingsDialog->registerDialog) + { + //QMessageBox::about(myMainw->settingsDialog->profileDialog, "Server reply to requesting profile", "OK " + reply->readAll()); + myMainw->settingsDialog->registerDialog->setLabelInfoToUser("Profile saved to server"); + return false; + } + } +} +/** + * This slot function react to servers responce after request of picture has been sent. + */ +void HttpClient::ackOfSendingPicture() +{ + qDebug() << "__ackOfSendingPicture"; + QNetworkReply* reply = qobject_cast(sender()); + QNetworkReply::NetworkError errorcode; + errorcode = reply->error(); + if(errorcode != 0) { + qDebug() << "errorcode:" << errorcode << reply->errorString(); + //Indicating user + if(myMainw->settingsDialog->registerDialog) + { + //QMessageBox::about(myMainw->settingsDialog->profileDialog, "Server reply to requesting picture",reply->errorString()); + myMainw->settingsDialog->registerDialog->setLabelInfoToUser("Picture save to server - fail"); + } + } + else { + qDebug() << "errorcode:" << errorcode << reply->errorString(); + //Indicating user + if(myMainw->settingsDialog->registerDialog) + { + //QMessageBox::about(myMainw->settingsDialog->profileDialog, "Server reply to requesting picture", "OK " + reply->readAll()); + myMainw->settingsDialog->registerDialog->setLabelInfoToUser("Picture saved to server"); + } + } +} + +/** + *@brief Request the user information of certain user from the server. + *Send authentication information in the header. + *@param username which information we want. + */ +void HttpClient::requestUserInfo(QString username) +{ + qDebug() << "_requestUsersInfo" ; + + QUrl qurl("http://speedfreak-app.com/users/info/" + username); + 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, ("data=" )); + connect(currentDownload,SIGNAL(finished()),this,SLOT(ackOfUserInfo())); + + //qDebug() << "requestUserInfo"; + //ackOfUserInfo(); +} + +/** + *@brief React to servers responce after request the user information of certain user. + */ +void HttpClient::ackOfUserInfo() +{ + qDebug() << "ackUserInfo"; + /*QString fileName = "user.xml"; + QFile file(fileName); + //file.setFileName( "routetemp.xml"); + if (!file.open(QFile::ReadOnly)) + { + qDebug() << "_xmlShow fail"; + return; + } + + myXmlreader->xmlReadUserInfo(&file); + file.close();*/ + + QNetworkReply* reply = qobject_cast(sender()); + myXmlreader->xmlReadUserInfo(reply); + + //for(int i = 0; i < myXmlreader->usersList->count(); i++) + //{ + // myMainw->settingsDialog->sendUsernameToUsersDialog(myXmlreader->usersList->at(i)); + //} +} + +/** + *@brief Request the users list of all users from the server. + *Send authentication information in the header. + */ +void HttpClient::requestUsers() +{ + qDebug() << "_requestUsers" ; + + QUrl qurl("http://www.speedfreak-app.com/users/list_all"); + 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, ("data=" )); + connect(currentDownload,SIGNAL(finished()),this,SLOT(ackOfUsers())); + + + //connect(currentDownload,SIGNAL(error(QNetworkReply::NetworkError)),myMainw,SLOT(errorFromServer(QNetworkReply::NetworkError))); + + //Indicating user + //if(myMainw->topResultDialog) + //myMainw->topResultDialog->setLabelInfoToUser("Reguesting categories from server"); + + //ackOfUsers(); +} + +/** + *@brief React to servers responce after request the users list of all users. + */ +void HttpClient::ackOfUsers() +{ + qDebug() << "ackUsers"; + /* QString fileName = "jtn.xml"; + QFile file(fileName); + //file.setFileName( "routetemp.xml"); + if (!file.open(QFile::ReadOnly)) + { + qDebug() << "_xmlShow fail"; + return; + } + + myXmlreader->xmlReadUsers(&file); + file.close(); + + for(int i = 0; i < myXmlreader->usersList->count(); i++) + { + myMainw->settingsDialog->sendUsernameToUsersDialog(myXmlreader->usersList->at(i)); + }*/ + + qDebug() << "ackUsers"; + + //if(myMainw->topResultDialog) + // myMainw->topResultDialog->setLabelInfoToUser(""); + + QNetworkReply* reply = qobject_cast(sender()); + myXmlreader->xmlReadUsers(reply); + + for(int i = 0; i < myXmlreader->usersList->count(); i++) + { + myMainw->usersDialog->appendUserToList(myXmlreader->usersList->at(i)); + } + /* QNetworkReply::NetworkError errorcode; + errorcode = reply->error(); + if(errorcode != 0) { + qDebug() << "errorcode:" << errorcode << reply->errorString(); + //QMessageBox::about(myMainw->topResultDialog, "Server reply to requesting categories",reply->errorString()); + if(myMainw->topResultDialog) + myMainw->topResultDialog->setLabelInfoToUser("You're not logged! Please register or log in."); + } + else { + qDebug() << "errorcode:" << errorcode << reply->errorString(); + //QMessageBox::about(myMainw->topResultDialog, "Server reply to requesting categories ", "OK"); + if(myMainw->topResultDialog) + myMainw->topResultDialog->setLabelInfoToUser(""); + }*/ +} + +/** + * This slot function called when userInfo signal is emitted from xmlreader. + *@param usersInfo includes information from certain user. + */ +void HttpClient::sendUsersInfo(QStringList* usersInfo) +{ + myMainw->usersDialog->setUserInfo(usersInfo); }