58
Soup.SessionSync session;
65
67
settings = new Settings ("org.pantheon.gazette.weather");
68
label = new ShadowedLabel("");
67
69
unit = settings.get_string ("weather-unit") == "Fahrenheit" ? "f" : "c";
69
71
string id = settings.get_int ("weather-id").to_string();
70
72
var url = "http://weather.yahooapis.com/forecastrss";
71
73
url += "?u=" + unit;
74
var session = new Soup.SessionAsync ();
75
var message = new Soup.Message ("GET", url);
77
session.queue_message (message, (session, m) => {
78
var data = (string)m.response_body.data;
75
stdout.printf("%s",url);
76
session = new Soup.SessionSync ();
77
message = new Soup.Message ("GET", url);
81
public override void create ()
86
public string[] get_attributes (string data, string tagname, string [] attrs, int offset = 0)
88
var start = data.index_of ("<" + tagname, offset) + tagname.length + 1;
89
var end = data.index_of ("/>", start);
90
var tmp_data = data.substring (start, end - start);
92
var res = new string[attrs.length];
93
for (var i = 0; i < attrs.length; i++) {
94
res[i] = get_attribute_value (tmp_data, attrs[i]);
99
public string get_attribute_value (string data, string attr)
101
var start = data.index_of (attr + "=\"") + attr.length + 2;
102
var end = data.index_of ("\"", start);
104
return data.substring (start, end - start);
106
public override bool update() {
107
session.queue_message(message, (session, m) => {
108
var data = (string)message.response_body.data;
80
110
var current = get_attributes (data, "yweather:condition", {"temp", "text", "code"});
81
111
var forecast = get_attributes (data, "yweather:forecast", {"day", "date", "low", "high", "text", "code"},
99
129
"<span face='Raleway' font='21'>" + forecast[2] + " - " + forecast[3] +"°"+unit.up()+" </span>"+
100
130
"<span face='Raleway' font='21'>" + forecast2[2] + " - " + forecast2[3] +"°"+unit.up()+" </span>";
104
public override void create ()
106
var label = new ShadowedLabel (text);
110
public string[] get_attributes (string data, string tagname, string [] attrs, int offset = 0)
112
var start = data.index_of ("<" + tagname, offset) + tagname.length + 1;
113
var end = data.index_of ("/>", start);
114
var tmp_data = data.substring (start, end - start);
116
var res = new string[attrs.length];
117
for (var i = 0; i < attrs.length; i++) {
118
res[i] = get_attribute_value (tmp_data, attrs[i]);
123
public string get_attribute_value (string data, string attr)
125
var start = data.index_of (attr + "=\"") + attr.length + 2;
126
var end = data.index_of ("\"", start);
128
return data.substring (start, end - start);