/[projects]/smsdaemon/plugins/TogPlugin.cpp
ViewVC logotype

Contents of /smsdaemon/plugins/TogPlugin.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 109 - (show annotations) (download)
Sun Aug 24 17:57:04 2008 UTC (15 years, 8 months ago) by torben
File size: 2166 byte(s)
TogPlugin.cpp: Avoid danish characters in station codes.

common.cpp: The month in struct tm is 0-based instead of 1-based (eg. January is 0), 
            reflect this in the list of month-names.

1 #include "TogPlugin.h"
2 #include "IGsmModem.h"
3 #include "Sms.h"
4
5 #include "TrainInfo.h"
6 #include "util.h"
7
8 #include <iostream>
9 #include <sstream>
10
11 #include "common.h"
12
13 using namespace std;
14
15
16 TogPlugin::TogPlugin()
17 : Plugin("tog", "Henter tog info fra bane.dk")
18 {
19 _stationInfo["la"] = StationInfo("LG","Langå");
20 _stationInfo["ul"] = StationInfo("UP","Ulstrup");
21 _stationInfo["bj"] = StationInfo("BJ","Bjerringbro");
22 _stationInfo["vi"] = StationInfo("VG","Viborg");
23 _stationInfo["ho"] = StationInfo("HØ","Højslev");
24 _stationInfo["sk"] = StationInfo("SK","Skive");
25 }
26
27 string TogPlugin::GetRealStationCode(string code, string &stationName)
28 {
29 map<string, StationInfo>::iterator it = _stationInfo.find(code);
30
31 if (it != _stationInfo.end())
32 {
33 stationName = (*it).second.name;
34 return (*it).second.code;
35 }
36
37 return "";
38 }
39
40 string TogPlugin::CreateStationList()
41 {
42 ostringstream os;
43
44 os << "code - station\n";
45
46 map<string, StationInfo>::iterator it;
47
48 for (it = _stationInfo.begin(); it != _stationInfo.end(); ++it)
49 {
50 os << (*it).first << " - " << (*it).second.name << "\n";
51 }
52
53 return Util::str_latin2gsm(os.str());
54 }
55
56 void TogPlugin::Execute(IGsmModem& modem, SMS& sms)
57 {
58 string data = GetSmsData(sms);
59
60 data = Util::str_gsm2latin(data);;
61 data = Util::str_tolower(data);
62
63
64 if (data == "")
65 {
66 modem.SendSms(sms.sender, "Usage: tog <stationskode>\ntog list - liste over stationer", false);
67 return;
68 }
69
70 if (data == "list")
71 {
72 modem.SendSms(sms.sender, CreateStationList(), true);
73 return;
74 }
75
76 string stationName;
77 string code = GetRealStationCode(data, stationName);
78
79 if (code == "")
80 {
81 modem.SendSms(sms.sender, "Unknown station", false);
82 return;
83 }
84
85 vector<TrainInfo> infos;
86 try
87 {
88 infos = GetTrainInfo( code , "" );
89 }
90 catch(std::exception& e)
91 {
92 modem.SendSms(sms.sender, e.what(), false );
93 return;
94 }
95
96 ostringstream os;
97 os << stationName << ":\n";
98
99 for (unsigned int i=0; i< infos.size(); ++i)
100 {
101 TrainInfo& train = infos[i];
102 os << train.time << " ";
103 os << train.destination << " ";
104 os << train.status << " ";
105 os << train.note << "\n";
106 }
107
108 modem.SendSms(sms.sender, Util::str_latin2gsm(os.str()), true);
109
110
111
112 }

  ViewVC Help
Powered by ViewVC 1.1.20