1 |
torben |
188 |
#include "WeatherPlugin.h" |
2 |
|
|
#include "ISmsTransceiver.h" |
3 |
|
|
#include "Sms.h" |
4 |
torben |
193 |
#include "HttpClient.h" |
5 |
|
|
#include "Exceptions.h" |
6 |
torben |
188 |
#include "Util.h" |
7 |
|
|
|
8 |
|
|
using namespace std; |
9 |
|
|
using namespace Util; |
10 |
|
|
|
11 |
|
|
WeatherPlugin::WeatherPlugin() |
12 |
torben |
196 |
: Plugin("vejr", "Find danish weather report on dmi.dk") |
13 |
torben |
188 |
{ |
14 |
|
|
} |
15 |
|
|
|
16 |
|
|
void WeatherPlugin::Execute(ISmsTransceiver& modem, SMS& sms) |
17 |
|
|
{ |
18 |
torben |
193 |
string doc; |
19 |
|
|
try |
20 |
|
|
{ |
21 |
|
|
doc = HttpClient::GetString("http://www.dmi.dk/dmi/danmark.htm"); |
22 |
torben |
196 |
} |
23 |
|
|
catch (httpexception&e ) |
24 |
|
|
{ |
25 |
torben |
193 |
modem.SendSms(sms.GetSender(), "could not retrieve data", true); |
26 |
|
|
return; |
27 |
|
|
} |
28 |
torben |
188 |
|
29 |
|
|
int pos = doc.find("<!-- tekst 5 -->"); |
30 |
|
|
int pos2 = doc.find("</table>",pos); |
31 |
|
|
|
32 |
|
|
string title = doc.substr(pos, (pos2-pos) ); |
33 |
|
|
title = str_trim( str_striptags(title) ) + "\n"; |
34 |
|
|
|
35 |
|
|
pos = doc.find("<table", pos2); |
36 |
|
|
pos2 = doc.find("</table>",pos); |
37 |
|
|
|
38 |
|
|
string section = doc.substr(pos, (pos2-pos) ); |
39 |
|
|
section = str_trim( str_striptags(section) ); |
40 |
|
|
section = str_characters( section ); |
41 |
|
|
section = str_replace(section, "\r"); |
42 |
|
|
section = str_replace(section, " \n"); |
43 |
|
|
|
44 |
|
|
section = str_replace(section, " ", " "); |
45 |
|
|
section = str_replace(section, "\n\n\n", "\n"); |
46 |
|
|
section = str_replace(section, "\n\n", "\n"); |
47 |
|
|
|
48 |
|
|
modem.SendSms(sms.GetSender(), title + section, true); |
49 |
|
|
|
50 |
|
|
|
51 |
|
|
} |