#include "headers/serverconn.h" ServerConn::ServerConn(QObject *parent) : QObject(parent) { qDebug("serverconn konstruktor"); this->networkManager = new QNetworkAccessManager(); this->refreshNetworkManager = new QNetworkAccessManager(); } ServerConn::~ServerConn() { qDebug("serverconn destruktor"); delete this->networkManager; delete this->refreshNetworkManager; QString path = QStandardPaths::writableLocation(QStandardPaths::DownloadLocation); QDir dir(path + "/.fannyapp-tmp"); dir.removeRecursively(); } QString ServerConn::login(QString username, QString password, bool permanent) { // QUrlQuery pdata; // ReturnData_t ret = this->senddata(QUrl("http://www.fanny-leicht.de/static15/http.intern/sheute.pdf"), pdata); // qDebug() << ret.text; // Create request QNetworkRequest request; request.setUrl( QUrl( "http://www.fanny-leicht.de/static15/http.intern/sheute.pdf" ) ); // Pack in credentials QString concatenatedCredentials = username + ":" + password; QByteArray data = concatenatedCredentials.toLocal8Bit().toBase64(); QString headerData = "Basic " + data; request.setRawHeader( "Authorization", headerData.toLocal8Bit() ); QUrlQuery pdata; // Send request and connect all possible signals QNetworkReply*reply = this->networkManager->post(request, pdata.toString(QUrl::FullyEncoded).toUtf8()); //QNetworkReply*reply = networkManager->get( request ); QEventLoop loop; loop.connect(this->networkManager, SIGNAL(finished(QNetworkReply*)), SLOT(quit())); loop.exec(); int status_code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if(status_code == 200){ this->username = username; this->password = password; if(permanent){ qDebug() << "permanent"; pGlobalAppSettings->writeSetting("permanent", "1"); pGlobalAppSettings->writeSetting("username", username); pGlobalAppSettings->writeSetting("password", password); } return("OK"); } else if(status_code == 401){ return("Ungültige Benutzerdaten."); } else if(status_code == 0){ return("Keine Verbindung zum Server."); } else { QString ret = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toChar(); ret = ret + reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toChar(); return(ret); } } int ServerConn::logout() { this->username = ""; this->password = ""; pGlobalAppSettings->writeSetting("permanent", "0"); pGlobalAppSettings->writeSetting("username", ""); pGlobalAppSettings->writeSetting("password", ""); return(200); } QString ServerConn::getDay(QString day) { this->progress = 0; // Create request QNetworkRequest request; request.setUrl( QUrl( "http://www.fanny-leicht.de/static15/http.intern/" + day + ".pdf" ) ); // Pack in credentials // Pack in credentials QString concatenatedCredentials = this->username + ":" + this->password; QByteArray data = concatenatedCredentials.toLocal8Bit().toBase64(); QString headerData = "Basic " + data; request.setRawHeader( "Authorization", headerData.toLocal8Bit() ); QUrlQuery pdata; // Send request and connect all possible signals QNetworkReply*reply = this->networkManager->post(request, pdata.toString(QUrl::FullyEncoded).toUtf8()); //QNetworkReply*reply = networkManager->get( request ); connect(reply, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(updateProgress(qint64, qint64))); QEventLoop loop; loop.connect(this->networkManager, SIGNAL(finished(QNetworkReply*)), SLOT(quit())); loop.exec(); this->progress = 1; int status_code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if(status_code == 200){ QString path = QStandardPaths::writableLocation(QStandardPaths::DownloadLocation); QDir dir; dir.mkdir(path + "/.fannyapp-tmp"); QFile file(path + "/.fannyapp-tmp/" + day + ".pdf"); file.remove(); file.open(QIODevice::ReadWrite); file.write(reply->readAll()); file.close(); QDesktopServices::openUrl(QUrl::fromLocalFile(path + "/.fannyapp-tmp/" + day + ".pdf")); return("OK"); } else if(status_code == 401){ return("Ungültige Benutzerdaten."); } else if(status_code == 0){ return("Keine Verbindung zum Server."); } else { QString ret = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toChar(); ret = ret + " (" + reply->attribute(QNetworkRequest::HttpReasonPhraseAttribute).toChar() + ")"; return(ret); } } int ServerConn::checkConn() { // Create request QNetworkRequest request; request.setUrl( QUrl( "http://www.fanny-leicht.de/static15/http.intern/" ) ); // Pack in credentials // Pack in credentials //ZedlerDo:LxyJQB QString concatenatedCredentials = this->username + ":" + this->password; QByteArray data = concatenatedCredentials.toLocal8Bit().toBase64(); QString headerData = "Basic " + data; request.setRawHeader( "Authorization", headerData.toLocal8Bit() ); QUrlQuery pdata; // Send request and connect all possible signals QNetworkReply*reply = this->refreshNetworkManager->post(request, pdata.toString(QUrl::FullyEncoded).toUtf8()); //QNetworkReply*reply = networkManager->get( request ); QEventLoop loop; loop.connect(this->refreshNetworkManager, SIGNAL(finished(QNetworkReply*)), SLOT(quit())); loop.exec(); int status_code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); return(status_code); } void ServerConn::updateProgress(qint64 read, qint64 total) { int read_int = read; int total_int = total; float percent = ((float)read_int / (float)total_int); this->progress = percent; percent = (int)percent; // qDebug() << read << total << percent << "%"; } float ServerConn::getProgress() { return(this->progress); } int ServerConn::getEvents(){ this->progress = 0; ReturnData_t ret; //this is a custom type to store the returned data // Call the webservice QNetworkRequest request(QUrl("http://api.itsblue.de/fanny/vertretung.php?uname=ZedlerDo&passwd=LxyJQB&day=smorgen&agree=true")); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); //set ssl configuration //send a POST request with the given url and data to the server QNetworkReply* reply; QUrlQuery pdata; reply = this->networkManager->post(request, pdata.toString(QUrl::FullyEncoded).toUtf8()); connect(reply, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(updateProgress(qint64, qint64))); //wait until the request has finished QEventLoop loop; loop.connect(this->networkManager, SIGNAL(finished(QNetworkReply*)), SLOT(quit())); loop.exec(); //get the status code QVariant status_code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute); this->progress = 1; if(status_code != 200){ return(status_code.toInt()); } QString eventString = reply->readAll(); eventString.replace(" - ", "-"); eventString.replace(" / ", "/"); eventString.replace("
", ""); eventString.replace("", ""); eventString.replace("Entfall für Lehrer", "Entfall_für_Lehrer"); QStringList tmp = eventString.split("\f"); QStringList rawEvents; QList