Skip to content

Commit

Permalink
Fixed inclorrect rlock usage. Extended exceptions handler
Browse files Browse the repository at this point in the history
  • Loading branch information
zabuldon committed Oct 24, 2017
1 parent ca05c9c commit af83868
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 18 deletions.
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from setuptools import setup
setup(
name='teslajsonpy',
version='0.0.17',
version='0.0.18',
packages=['teslajsonpy'],
include_package_data=True,
python_requires='>=3',
Expand Down
25 changes: 25 additions & 0 deletions teslajsonpy/Exceptions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@


class TeslaException(Exception):
def __init__(self, code, *args, **kwargs):
self.message = ""
super().__init__(*args, **kwargs)
self.code = code
if self.code == 401:
self.message = 'UNAUTHORIZED'
elif self.code == 404:
self.message = 'NOT_FOUND'
elif self.code == 405:
self.message = 'MOBILE_ACCESS_DISABLED'
elif self.code == 408:
self.message = 'VEHICLE_UNAVAILABLE'
elif self.code == 423:
self.message = 'ACCOUNT_LOCKED'
elif self.code == 429:
self.message = 'TOO_MANY_REQUESTS'
elif self.code == 500:
self.message = 'SERVER_ERROR'
elif self.code == 503:
self.message = 'SERVICE_MAINTENANCE'
elif self.code > 299:
self.message = "UNKNOWN_ERROR"
9 changes: 9 additions & 0 deletions teslajsonpy/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from teslajsonpy.BatterySensor import Battery
from teslajsonpy.BinarySensor import (ChargerConnectionSensor, ParkingSensor)
from teslajsonpy.Charger import ChargerSwitch
from teslajsonpy.Climate import (Climate, TempSensor)
from teslajsonpy.controller import Controller
from teslajsonpy.Exceptions import TeslaException
from teslajsonpy.GPS import GPS
from teslajsonpy.Lock import Lock

25 changes: 9 additions & 16 deletions teslajsonpy/connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from urllib.request import Request, build_opener
from urllib.error import HTTPError
import json
from time import sleep
from teslajsonpy.Exceptions import TeslaException


class Connection(object):
Expand Down Expand Up @@ -55,19 +55,12 @@ def __open(self, url, headers={}, data=None, baseurl=""):
except TypeError:
pass
opener = build_opener()
sleep_time = 1
attempt = 1
while attempt <= 5:
try:
resp = opener.open(req)
charset = resp.info().get('charset', 'utf-8')
data = json.loads(resp.read().decode(charset))
opener.close()
return data
except HTTPError:
attempt += 1
sleep(sleep_time)
sleep_time *= 2
continue

return False
try:
resp = opener.open(req)
charset = resp.info().get('charset', 'utf-8')
data = json.loads(resp.read().decode(charset))
opener.close()
return data
except HTTPError as e:
raise TeslaException(e.code)
2 changes: 1 addition & 1 deletion teslajsonpy/controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def wake_up(self, vehicle_id):

def update(self, car_id):
cur_time = time.time()
with self.__lock():
with self.__lock:
if cur_time - self.__last_update_time[car_id] > self.update_interval:
self.wake_up(car_id)
data = self.get(car_id, 'data')['response']
Expand Down

0 comments on commit af83868

Please sign in to comment.