Merge pull request #432 from facetoe/exceptions

Catch some common exceptions
This commit is contained in:
facetoe 2016-08-13 17:13:54 +08:00 committed by GitHub
commit 3fcfb88084
2 changed files with 20 additions and 10 deletions

View File

@ -1,8 +1,11 @@
from i3pystatus import IntervalModule
import requests
import json import json
import requests
from i3pystatus import IntervalModule
from i3pystatus import logger
from i3pystatus.core import ConfigError from i3pystatus.core import ConfigError
from i3pystatus.core.util import user_open, internet, require from i3pystatus.core.util import user_open, internet, require
from requests import Timeout, ConnectionError
class Github(IntervalModule): class Github(IntervalModule):
@ -51,19 +54,23 @@ class Github(IntervalModule):
@require(internet) @require(internet)
def run(self): def run(self):
format_values = dict(unread_count='', unread='')
try:
if self.access_token: if self.access_token:
response = requests.get('https://api.github.com/notifications?access_token=' + self.access_token) response = requests.get('https://api.github.com/notifications?access_token=' + self.access_token)
else: else:
response = requests.get('https://api.github.com/notifications', auth=(self.username, self.password)) response = requests.get('https://api.github.com/notifications', auth=(self.username, self.password))
data = json.loads(response.text) data = json.loads(response.text)
except (ConnectionError, Timeout) as e:
logger.warn(e)
data = []
# Bad credentials # Bad credentials
if isinstance(data, dict): if isinstance(data, dict):
err_msg = data['message'] err_msg = data['message']
raise ConfigError(err_msg) raise ConfigError(err_msg)
format_values = dict(unread_count='', unread='')
unread = len(data) unread = len(data)
if unread > 0: if unread > 0:
format_values['unread_count'] = unread format_values['unread_count'] = unread

View File

@ -6,7 +6,6 @@ import pytz
from apiclient import discovery from apiclient import discovery
from dateutil import parser from dateutil import parser
from googleapiclient.errors import HttpError from googleapiclient.errors import HttpError
from i3pystatus import IntervalModule, logger from i3pystatus import IntervalModule, logger
from i3pystatus.core.color import ColorRangeModule from i3pystatus.core.color import ColorRangeModule
from i3pystatus.core.util import internet, require, user_open from i3pystatus.core.util import internet, require, user_open
@ -70,7 +69,11 @@ class GoogleCalendar(IntervalModule, ColorRangeModule):
if not self.service: if not self.service:
self.connect_service() self.connect_service()
try:
self.display_event = self.get_next_event() self.display_event = self.get_next_event()
except ConnectionResetError as e:
logger.warn(e)
if self.display_event: if self.display_event:
start_time = self.display_event['start_time'] start_time = self.display_event['start_time']
now = datetime.datetime.now(tz=pytz.UTC) now = datetime.datetime.now(tz=pytz.UTC)