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

Diff of /smsdaemon/plugins/TogPlugin.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

Legend:
Removed from v.49  
changed lines
  Added in v.186

  ViewVC Help
Powered by ViewVC 1.1.20