From 3b06134aabb0f41bc846c3ad264584b9c4fbb240 Mon Sep 17 00:00:00 2001 From: Facetoe Date: Wed, 10 Aug 2016 20:43:32 +0800 Subject: [PATCH 1/2] Catch exceptions thrown while checking calendar. --- i3pystatus/google_calendar.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/i3pystatus/google_calendar.py b/i3pystatus/google_calendar.py index 25e41c6..cc6428b 100644 --- a/i3pystatus/google_calendar.py +++ b/i3pystatus/google_calendar.py @@ -6,7 +6,6 @@ import pytz from apiclient import discovery from dateutil import parser from googleapiclient.errors import HttpError - from i3pystatus import IntervalModule, logger from i3pystatus.core.color import ColorRangeModule from i3pystatus.core.util import internet, require, user_open @@ -70,7 +69,11 @@ class GoogleCalendar(IntervalModule, ColorRangeModule): if not self.service: self.connect_service() - self.display_event = self.get_next_event() + try: + self.display_event = self.get_next_event() + except ConnectionResetError as e: + logger.warn(e) + if self.display_event: start_time = self.display_event['start_time'] now = datetime.datetime.now(tz=pytz.UTC) From 6160f830458e453fff52fed49b6156aca1ebab22 Mon Sep 17 00:00:00 2001 From: Facetoe Date: Wed, 10 Aug 2016 20:51:38 +0800 Subject: [PATCH 2/2] Catch exceptions thrown when calling API --- i3pystatus/github.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/i3pystatus/github.py b/i3pystatus/github.py index e569a74..3216f79 100644 --- a/i3pystatus/github.py +++ b/i3pystatus/github.py @@ -1,8 +1,11 @@ -from i3pystatus import IntervalModule -import requests import json + +import requests +from i3pystatus import IntervalModule +from i3pystatus import logger from i3pystatus.core import ConfigError from i3pystatus.core.util import user_open, internet, require +from requests import Timeout, ConnectionError class Github(IntervalModule): @@ -51,19 +54,23 @@ class Github(IntervalModule): @require(internet) def run(self): - format_values = dict(unread_count='', unread='') - if self.access_token: - response = requests.get('https://api.github.com/notifications?access_token=' + self.access_token) - else: - response = requests.get('https://api.github.com/notifications', auth=(self.username, self.password)) - data = json.loads(response.text) + try: + if self.access_token: + response = requests.get('https://api.github.com/notifications?access_token=' + self.access_token) + else: + response = requests.get('https://api.github.com/notifications', auth=(self.username, self.password)) + data = json.loads(response.text) + except (ConnectionError, Timeout) as e: + logger.warn(e) + data = [] # Bad credentials if isinstance(data, dict): err_msg = data['message'] raise ConfigError(err_msg) + format_values = dict(unread_count='', unread='') unread = len(data) if unread > 0: format_values['unread_count'] = unread