Skip to content

Commit c9a2e3c

Browse files
committed
Add error handling to Google News search; Remvoe unnecessary error handling in rfc822.vala
1 parent c16babd commit c9a2e3c

File tree

2 files changed

+77
-78
lines changed

2 files changed

+77
-78
lines changed

src/MainWindow.vala

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,13 @@ class MainWindow : Gtk.ApplicationWindow {
5454
this.source_remove(src); });
5555

5656
headerbar.search.connect((query) => {
57-
var feed = Feed.from_uri("https://news.google.com/news/rss/search/section/q/" + query + "?ned=us&gl=US&hl=en");
58-
this.add_feed(feed);
59-
this.source_add(feed.source);
57+
try {
58+
var feed = Feed.from_uri("https://news.google.com/news/rss/search/section/q/" + query + "?ned=us&gl=US&hl=en");
59+
this.add_feed(feed);
60+
this.source_add(feed.source);
61+
} catch (Error err) {
62+
this.show_error("Couldn't reach Google News");
63+
}
6064
});
6165
headerbar.view_info_clicked.connect(() => {
6266
var dialog = new Gtk.Dialog.with_buttons("Feed information", this, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, "Close", Gtk.ResponseType.ACCEPT, null);

src/rfc822.vala

Lines changed: 70 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,76 @@
11
DateTime? parse_rfc822_date(string date) {
2-
try {
3-
var pieces = new Gee.ArrayList<string>.wrap(date.split(" "));
4-
// if there is a day of the week, remove it
5-
if(pieces[0][pieces[0].length - 1] == ',') {
6-
pieces.remove_at(0);
7-
}
8-
var day = int.parse(pieces[0]);
9-
int month = 1;
10-
switch(pieces[1]) {
11-
case "Jan": month = 1; break;
12-
case "Feb": month = 2; break;
13-
case "Mar": month = 3; break;
14-
case "Apr": month = 4; break;
15-
case "May": month = 5; break;
16-
case "Jun": month = 6; break;
17-
case "Jul": month = 7; break;
18-
case "Aug": month = 8; break;
19-
case "Sep": month = 9; break;
20-
case "Oct": month = 10; break;
21-
case "Nov": month = 11; break;
22-
case "Dec": month = 12; break;
23-
}
24-
var year = int.parse(pieces[2]);
2+
var pieces = new Gee.ArrayList<string>.wrap(date.split(" "));
3+
// if there is a day of the week, remove it
4+
if(pieces[0][pieces[0].length - 1] == ',') {
5+
pieces.remove_at(0);
6+
}
7+
var day = int.parse(pieces[0]);
8+
int month = 1;
9+
switch(pieces[1]) {
10+
case "Jan": month = 1; break;
11+
case "Feb": month = 2; break;
12+
case "Mar": month = 3; break;
13+
case "Apr": month = 4; break;
14+
case "May": month = 5; break;
15+
case "Jun": month = 6; break;
16+
case "Jul": month = 7; break;
17+
case "Aug": month = 8; break;
18+
case "Sep": month = 9; break;
19+
case "Oct": month = 10; break;
20+
case "Nov": month = 11; break;
21+
case "Dec": month = 12; break;
22+
}
23+
var year = int.parse(pieces[2]);
2524

26-
var time_arr = pieces[3].split(":");
27-
var hour = int.parse(time_arr[0]);
28-
var minute = int.parse(time_arr[1]);
29-
var second = 0;
30-
if(time_arr.length >= 3) {
31-
second = int.parse(time_arr[2]);
32-
}
25+
var time_arr = pieces[3].split(":");
26+
var hour = int.parse(time_arr[0]);
27+
var minute = int.parse(time_arr[1]);
28+
var second = 0;
29+
if(time_arr.length >= 3) {
30+
second = int.parse(time_arr[2]);
31+
}
3332

34-
TimeZone zone;
35-
switch(pieces[4]) {
36-
case "EDT":
37-
zone = new TimeZone("-04");
38-
break;
39-
case "EST":
40-
case "CDT":
41-
zone = new TimeZone("-05");
42-
break;
43-
case "CST":
44-
case "MDT":
45-
zone = new TimeZone("-06");
46-
break;
47-
case "MST":
48-
case "PDT":
49-
zone = new TimeZone("-07");
50-
break;
51-
case "PST":
52-
zone = new TimeZone("-08");
53-
break;
54-
case "1A":
55-
zone = new TimeZone("-01");
56-
break;
57-
case "1M":
58-
zone = new TimeZone("-12");
59-
break;
60-
case "1N":
61-
zone = new TimeZone("+01");
62-
break;
63-
case "1Y":
64-
zone = new TimeZone("+12");
65-
break;
66-
case "GMT":
67-
case "UT":
68-
case "1Z":
69-
zone = new TimeZone.utc();
70-
break;
71-
default:
72-
zone = new TimeZone(pieces[4]);
73-
break;
74-
}
75-
return new DateTime(zone, year, month, day, hour, minute, second);
76-
} catch(Error err) {
77-
stderr.printf("Error parsing date: %s\n", err.message);
78-
return null;
33+
TimeZone zone;
34+
switch(pieces[4]) {
35+
case "EDT":
36+
zone = new TimeZone("-04");
37+
break;
38+
case "EST":
39+
case "CDT":
40+
zone = new TimeZone("-05");
41+
break;
42+
case "CST":
43+
case "MDT":
44+
zone = new TimeZone("-06");
45+
break;
46+
case "MST":
47+
case "PDT":
48+
zone = new TimeZone("-07");
49+
break;
50+
case "PST":
51+
zone = new TimeZone("-08");
52+
break;
53+
case "1A":
54+
zone = new TimeZone("-01");
55+
break;
56+
case "1M":
57+
zone = new TimeZone("-12");
58+
break;
59+
case "1N":
60+
zone = new TimeZone("+01");
61+
break;
62+
case "1Y":
63+
zone = new TimeZone("+12");
64+
break;
65+
case "GMT":
66+
case "UT":
67+
case "1Z":
68+
zone = new TimeZone.utc();
69+
break;
70+
default:
71+
zone = new TimeZone(pieces[4]);
72+
break;
7973
}
74+
return new DateTime(zone, year, month, day, hour, minute, second);
8075
}
8176

0 commit comments

Comments
 (0)