From 3314a53d0cf0a135fe6f82fcc7b6f4df84f70436 Mon Sep 17 00:00:00 2001 From: Niklas Halle Date: Sun, 23 Aug 2020 12:41:55 +0200 Subject: clean start, clean CMakeLists.txt --- src/Utilities/GetEssen.cpp | 250 --------------------------------------------- 1 file changed, 250 deletions(-) delete mode 100644 src/Utilities/GetEssen.cpp (limited to 'src/Utilities/GetEssen.cpp') diff --git a/src/Utilities/GetEssen.cpp b/src/Utilities/GetEssen.cpp deleted file mode 100644 index 56742cc..0000000 --- a/src/Utilities/GetEssen.cpp +++ /dev/null @@ -1,250 +0,0 @@ -// -// Created by max on 18.12.18. -// - -#include "Utilities/GetEssen.hpp" - - -using namespace boost::posix_time; - -void returnEssen(Mongoose::Request &request, Mongoose::JsonResponse &response){ - std::cout << "mensa was called\n"; - mensa Mensa_ID; - std::string mensa_name = request.get("argument1", "adlershof"); - std::string offset_request = request.get("argument2", "0"); - - - if(mensa_name == "adlershof"){ - Mensa_ID = mensa::Adlershof; - } else if(mensa_name == "nord"){ - Mensa_ID = mensa::Nord; - }else if (mensa_name == "sued" || mensa_name == "süd"){ - Mensa_ID = mensa::Sued; - } - - int offset = std::stoi(offset_request); - - - response["success"] = "1"; - response["session"] = "NULL"; - response["text"] = getEssen(Mensa_ID, offset); - - -} - -bool db_update_mensa_message(const int& mensaID, const ptime& mensaDatum, const string& message){ - sqdb::Db db("../main.sqlite"); - string newTime = to_simple_string(ptime(second_clock::local_time())); - string mensaDatumString = to_string(mensaDatum.date().year()) + "-" + mensaDatum.date().month().as_short_string() + "-" + to_string(mensaDatum.date().day().as_number()); - sqdb::QueryStr str; - db.Query(str.Format(SQDB_MAKE_TEXT("update mensa set Message = '%s', LastModified = '%s' where ID = %i and Datum = '%s';"), message.c_str(), newTime.c_str(), mensaID, mensaDatumString.c_str())).Next(); - return true; -} - -bool db_insert_mensa_message(const int& mensaID, const ptime& mensaDatum, const string& message){ - sqdb::Db db("../main.sqlite"); - string newTime = to_simple_string(ptime(second_clock::local_time())); - string mensaDatumString = to_string(mensaDatum.date().year()) + "-" + mensaDatum.date().month().as_short_string() + "-" + to_string(mensaDatum.date().day().as_number()); - sqdb::QueryStr str; - db.Query(str.Format(SQDB_MAKE_TEXT("insert into mensa values(%i, '%s', '%s', '%s');"), mensaID, message.c_str(), mensaDatumString.c_str(), newTime.c_str())).Next(); - return true; -} - -Mensa_Essen db_get_mensa_message(const int& mensaID, const ptime& mensaDatum) { - Mensa_Essen out; - sqdb::Db db("../main.sqlite"); - - sqdb::QueryStr str; - string mensaDatumString = to_string(mensaDatum.date().year()) + "-" + mensaDatum.date().month().as_short_string() + "-" + to_string(mensaDatum.date().day().as_number()); - sqdb::Statement s = db.Query(str.Format(SQDB_MAKE_TEXT("SELECT * from mensa WHERE Datum = '%s' AND ID = %i;"), mensaDatumString.c_str(), mensaID )); - - try { - if(s.Next()) { - int ID = s.GetField(0); - string Message = s.GetField(1); - string Datum = s.GetField(2); - string LastModified = s.GetField(3); - - - ptime LMDate(time_from_string(LastModified)); - - out.ID = ID; - out.Message = Message; - out.Datum = mensaDatum; - out.LastModified = LMDate; - return out; - } - } catch (sqdb::Exception &exception){ - log("Error code: " + to_string(exception.GetErrorCode()) + " Error Message: " + exception.GetErrorMsg() + "\n"); - } - out.ID = -2; - return out; - -} - -string getEssen(const int mensa_ID, const int offset) { - Mensa_Essen Essen; - if (offset >= 0) { - - if (offset > 28) { - return "Ich fühle mich geschmeichelt, dass du denkst, dass ich so weit in die Zukunft gucken kann (0 bis 28 Tage)"; - } - - ptime datumNow = second_clock::local_time(); - ptime datumEssen = datumNow + (boost::gregorian::days(offset)); - - Essen = db_get_mensa_message(mensa_ID, datumEssen); - if (Essen.ID == -2) { // SQL got nothing back :/ - //log("sql got nothing back!"); - if (downloadMensaFile(mensa_ID, datumEssen) != CURLE_OK){ - log("Error downloading file"); - return "Error downloading file!"; - } - db_insert_mensa_message(mensa_ID, datumEssen, read_mensa_message_from_file(mensa_ID)); - Essen = db_get_mensa_message(mensa_ID, datumEssen); - - string out; - switch (Essen.ID) { - case mensa::Adlershof : - out = "Mensa Adlershof am " + to_string(Essen.Datum.date().day().as_number()) + "." + to_string(Essen.Datum.date().month().as_number()) + "." + to_string(Essen.Datum.date().year()) + ":"; - break; - case mensa ::Nord: - out = "Mensa Nord am " + to_string(Essen.Datum.date().day().as_number()) + "." + to_string(Essen.Datum.date().month().as_number()) + "." + to_string(Essen.Datum.date().year()) + ":"; - break; - case mensa::Sued : - out = "Mensa Sued am " + to_string(Essen.Datum.date().day().as_number()) + "." + to_string(Essen.Datum.date().month().as_number()) + "." + to_string(Essen.Datum.date().year()) + ":"; - break; - default: - out = "Mensa Unbekannt am " + to_string(Essen.Datum.date().day().as_number()) + "." + to_string(Essen.Datum.date().month().as_number()) + "." + to_string(Essen.Datum.date().year()) + ":"; - break; - - } - out += Essen.Message; - out += "\n (Stand: " + to_simple_string(Essen.LastModified) + ")\n"; - - return out; - } - - if (Essen.LastModified + hours(2) < datumNow) { //LastModified is more than 2 hours old - if (downloadMensaFile(mensa_ID, datumEssen) != CURLE_OK) { - return "Error downloading file!"; - } - - db_update_mensa_message(mensa_ID, datumEssen, read_mensa_message_from_file(mensa_ID)); - Essen = db_get_mensa_message(mensa_ID, datumEssen); - } - string out; - switch (Essen.ID) { - case mensa::Adlershof : - out = "Mensa Adlershof am " + to_string(Essen.Datum.date().day().as_number()) + "." + to_string(Essen.Datum.date().month().as_number()) + "." + to_string(Essen.Datum.date().year()) + ":"; - break; - case mensa::Nord : - out = "Mensa Nord am " + to_string(Essen.Datum.date().day().as_number()) + "." + to_string(Essen.Datum.date().month().as_number()) + "." + to_string(Essen.Datum.date().year()) + ":"; - break; - case mensa::Sued : - out = "Mensa Sued am " + to_string(Essen.Datum.date().day().as_number()) + "." + to_string(Essen.Datum.date().month().as_number()) + "." + to_string(Essen.Datum.date().year()) + ":"; - break; - default: - out = "Mensa Unbekannt am " + to_string(Essen.Datum.date().day().as_number()) + "." + to_string(Essen.Datum.date().month().as_number()) + "." + to_string(Essen.Datum.date().year()) + ":"; - break; - - } - out += Essen.Message; - out += "\n (Stand: " + to_simple_string(Essen.LastModified) + ")\n"; - return out; - } else return "Wer denkst du bin ich? Ein Zeitreisender?\nIch kann zwar in die Zukunft gucken, aber nur 28 Tage"; - -} - -string read_mensa_message_from_file(const int& mensa_id_file) { - string s; - string out; - bool serious = false; - - std::ifstream inFile(std::to_string(mensa_id_file)); - while (std::getline(inFile, s)) { - //out += mensa; - if (s.find("15.png") != string::npos && serious) { - string vegan; - - int vegan_byte[4] = {0xF0, 0x9F, 0x8C, 0xB1}; - for (int i : vegan_byte) { - vegan += (char) i; - } - - out += vegan; - } - - if (s.find("1.png") != string::npos && serious) { - string vegetarian; - - int vegetarian_byte[4] = {0xF0, 0x9F, 0x8C, 0xBD}; - for (int i : vegetarian_byte) { - vegetarian += (char) i; - } - - out += vegetarian; - } - if (s.find("splIcon") != string::npos && serious && s.find("1.png") == string::npos && - s.find("15.png") == string::npos) { - string emptyEmoji; - int emptyEmoji_byte[6] = {0xE2, 0x98, 0xA3, 0xEF, 0xB8, 0x8F}; - for (int i : emptyEmoji_byte) { - emptyEmoji += (char) i; - } - - out += emptyEmoji; - } - - if (s.find("splGroup\"") != string::npos) { //Getting the Category of the Meal - for (int i = 0, j = 0; (unsigned) i < s.length(); ++i) { - if (s.at(i) == '>') { - j = i + 1; - } - if (s.at(i) == '<' && j != 0) { - s = s.substr(j, i - j); - j = 0; - } - - } - serious = (s == "Aktionen" || s == "Essen" || s == "Beilagen"); - if (serious) { - out += "\n" + s + "\n"; - } - } - if (s.find("class=\"bold\"") != string::npos && serious) { //Getting the Meal - for (int i = 0, j = 0; (unsigned) i < s.length(); ++i) { - if (s.at(i) == '>') { - j = i + 1; - //logStatus("Zeichen > gefunden in Position" + std::to_string(i)); - } - if (s.at(i) == '<' && j != 0) { - s = s.substr(j, i - j); - j = 0; - } - - } - - out += "\t" + s; - } - - if (s.find("euro;") != string::npos && serious) { //geting the price of each Meal - for (int i = 0, j = 0; (unsigned) i < s.length(); ++i) { - if (s.at(i) == ';') { - j = i + 1; - } - if (s.at(i) == '/') { - s = s.substr(j, i - j); - j = 0; - } - } - out += "\t" + s + "€\n"; - } - } - - if (out.empty()) { - return "Heute kein Essen"; - } - return out; - -} -- cgit v1.2.3-54-g00ecf