#include "TogPlugin.h" #include "ISmsTransceiver.h" #include "Sms.h" #include "TrainInfo.h" #include "Util.h" #include #include #include "Common.h" using namespace std; StationInfo::StationInfo(int i, std::string n) { id = i; name = Util::str_characters(n); } TogPlugin::TogPlugin() : Plugin("tog", "Henter tog info fra bane.dk") { _stationInfo["ar"] = StationInfo(278, "Århus"); _stationInfo["la"] = StationInfo(122, "Langå"); _stationInfo["ul"] = StationInfo(240, "Ulstrup"); _stationInfo["bj"] = StationInfo(10, "Bjerringbro"); _stationInfo["vi"] = StationInfo(253, "Viborg"); _stationInfo["ho"] = StationInfo(94, "Højslev"); _stationInfo["sk"] = StationInfo(190, "Skive"); } int TogPlugin::GetStationId(string code, string &stationName) { map::iterator it = _stationInfo.find(code); if (it != _stationInfo.end()) { stationName = (*it).second.name; return (*it).second.id; } return -1; } string TogPlugin::CreateStationList() { ostringstream os; os << "code - station\n"; map::iterator it; for (it = _stationInfo.begin(); it != _stationInfo.end(); ++it) { os << (*it).first << " - " << (*it).second.name << "\n"; } return os.str(); } void TogPlugin::Execute(ISmsTransceiver& modem, SMS& sms) { string data = sms.ExtractParameters(); data = Util::str_tolower(data); if (data == "") { modem.SendSms(sms.GetSender(), "Usage: tog \ntog list - liste over stationer", false); return; } if (data == "list") { modem.SendSms(sms.GetSender(), CreateStationList(), true); return; } string stationName; int id = GetStationId(data, stationName); if (id < 0) { modem.SendSms(sms.GetSender(), "Unknown station", false); return; } vector infos; try { infos = GetTrainInfo( id ); } catch (std::exception& e) { modem.SendSms(sms.GetSender(), e.what(), false ); return; } ostringstream os; os << stationName << ":\n"; for (unsigned int i=0; i< infos.size(); ++i) { TrainInfo& train = infos[i]; os << train.time << " "; os << train.destination << " "; os << train.status << " "; os << train.note << "\n"; } modem.SendSms(sms.GetSender(), os.str(), true); }