commit
cd5adffbd0
@ -0,0 +1,3 @@
|
|||||||
|
examples/__main__.py
|
||||||
|
__pycache__
|
||||||
|
**/__pycache__
|
@ -0,0 +1,11 @@
|
|||||||
|
language: python
|
||||||
|
python:
|
||||||
|
- "3.5"
|
||||||
|
cache: pip
|
||||||
|
install:
|
||||||
|
- pip install -r test_requirements.txt
|
||||||
|
- pip install .
|
||||||
|
script:
|
||||||
|
- py.test tests/*_test.py --cov=georideapilib
|
||||||
|
- pylint georideapilib
|
||||||
|
- coveralls
|
@ -0,0 +1,24 @@
|
|||||||
|
# Georideapilib
|
||||||
|
![Logo Georide](georide-logo.png)
|
||||||
|
|
||||||
|
⚠️ this is not an official implementation
|
||||||
|
|
||||||
|
Official geroide website: https://georide.fr/
|
||||||
|
|
||||||
|
This library can control your georide tracker tracker
|
||||||
|
|
||||||
|
|
||||||
|
Some code have been taken from @alexmohr https://github.com/alexmohr/sonyapilib
|
||||||
|
|
||||||
|
This library is used as communication interface in a home assistant component to control media players, which can be found here:(Not ready yes ;))
|
||||||
|
|
||||||
|
At the moment not all functions offered by the api are implemented. If you miss a function feel free to create a pull request or open a feature request.
|
||||||
|
|
||||||
|
# Installation
|
||||||
|
To install simply run
|
||||||
|
```
|
||||||
|
pip install georideapilib
|
||||||
|
```
|
||||||
|
|
||||||
|
This library has been tested with python 3.7 and above, functionality for older python version cannot be guaranteed.
|
||||||
|
|
@ -0,0 +1,63 @@
|
|||||||
|
import api as GeorideApi
|
||||||
|
from objects import GeorideAccount
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
import time
|
||||||
|
|
||||||
|
|
||||||
|
""" If ypu out to reuse account """
|
||||||
|
"""
|
||||||
|
account = GeorideAccount(<your_id>, <yout_email>, <is_admin>, <your_token>)
|
||||||
|
"""
|
||||||
|
|
||||||
|
""" Get an acces token """
|
||||||
|
account = GeorideApi.getAuthorisationToken("<your_email>", "<your_passord>")
|
||||||
|
print("token 1: ", account.authToken)
|
||||||
|
|
||||||
|
|
||||||
|
""" do not abuse, renew when previous token have almost reached time """
|
||||||
|
"""
|
||||||
|
account.authToken = GeorideApi.renewToken(account.authToken)
|
||||||
|
print("token 2: ", account.authToken)
|
||||||
|
"""
|
||||||
|
|
||||||
|
user = GeorideApi.getUser(account.authToken)
|
||||||
|
print("User: ", user.firstName)
|
||||||
|
|
||||||
|
trackers = GeorideApi.getTrackers(account.authToken)
|
||||||
|
tracker = trackers[0]
|
||||||
|
print("Tracker name: ", tracker.trackerName)
|
||||||
|
|
||||||
|
trips = GeorideApi.getTrips(account.authToken, tracker.trackerId, "2019-10-10", "2019-10-24")
|
||||||
|
trip = trips[0];
|
||||||
|
trip_date = datetime.datetime.strptime("2019-10-10T06:45:34.000Z", '%Y-%m-%dT%H:%M:%S.%fZ')
|
||||||
|
print("Trip date: {}, from: {}, to: {}".format(trip_date, trip.niceStartAddress, trip.niceEndAddress))
|
||||||
|
|
||||||
|
positions = GeorideApi.getPositions(account.authToken, tracker.trackerId, "2019-10-10", "2019-10-24")
|
||||||
|
position = positions[0];
|
||||||
|
print("Position speed: {}, lon: {}, lat: {}".format(position.speed, position.longitude, position.latitude))
|
||||||
|
|
||||||
|
|
||||||
|
tripShared = GeorideApi.shareATripByDate(account.authToken, tracker.trackerId, fromDate="2019-10-10", toDate="2019-10-24")
|
||||||
|
print("tripShared url: {}, id: {}".format(tripShared.url, tripShared.shareId))
|
||||||
|
|
||||||
|
time.sleep(30)
|
||||||
|
haveBeenLocked = GeorideApi.lockTracker(account.authToken, tracker.trackerId)
|
||||||
|
print("Tracker have been locked: ", haveBeenLocked)
|
||||||
|
|
||||||
|
time.sleep(30)
|
||||||
|
haveBeenUnlocked = GeorideApi.lockTracker(account.authToken, tracker.trackerId)
|
||||||
|
print("Tracker have been unlocked: ", haveBeenUnlocked)
|
||||||
|
|
||||||
|
time.sleep(30)
|
||||||
|
isLocked = GeorideApi.toogleLockTracker(account.authToken, tracker.trackerId)
|
||||||
|
print("Tracker is locked: ", haveBeenUnlocked)
|
||||||
|
|
||||||
|
time.sleep(30)
|
||||||
|
trackers = GeorideApi.getTrackers(account.authToken)
|
||||||
|
tracker = trackers[0]
|
||||||
|
print("Tracker name: ", tracker.trackerName, " is locked: ", tracker.isLocked)
|
||||||
|
|
||||||
|
"""
|
||||||
|
GeorideApi.revokeToken(account.authToken)
|
||||||
|
"""
|
After Width: | Height: | Size: 12 KiB |
@ -0,0 +1,192 @@
|
|||||||
|
"""
|
||||||
|
Georide api lib
|
||||||
|
@author Matthieu DUVAL <matthieu@duval-dev.fr>
|
||||||
|
"""
|
||||||
|
|
||||||
|
import urllib3
|
||||||
|
import json
|
||||||
|
|
||||||
|
from objects import GeorideTracker, GeorideAccount, GeorideUser, GeorideTrackerTrip, GeorideTrackerPosition, GeorideSharedTrip
|
||||||
|
|
||||||
|
GEORIDE_API_HOST = "https://api.georide.fr"
|
||||||
|
GEORIDE_API_ENDPOINT_LOGIN = "/user/login"
|
||||||
|
GEORIDE_API_ENDPOINT_NEW_TOKEN = "/user/new-token"
|
||||||
|
GEORIDE_API_ENDPOINT_LOGOUT = "/user/logout"
|
||||||
|
GEORIDE_API_ENDPOINT_USER = "/user"
|
||||||
|
GEORIDE_API_ENDPOINT_TRAKERS = "/user/trackers"
|
||||||
|
GEORIDE_API_ENDPOINT_TRIPS = "/tracker/:trackerId/trips"
|
||||||
|
GEORIDE_API_ENDPOINT_LOCK = "/tracker/:trackerId/lock"
|
||||||
|
GEORIDE_API_ENDPOINT_UNLOCK = "/tracker/:trackerId/unlock"
|
||||||
|
GEORIDE_API_ENDPOINT_TOGGLE_LOCK = "/tracker/:trackerId/toggleLock"
|
||||||
|
GEORIDE_API_ENDPOINT_POSITIONS = "/tracker/:trackerId/trips/positions"
|
||||||
|
GEORIDE_API_ENDPOINT_TRIP_SHARE = "/tracker/:trackerId/share/trip"
|
||||||
|
|
||||||
|
|
||||||
|
def getAuthorisationToken(email, password):
|
||||||
|
http = urllib3.PoolManager()
|
||||||
|
data = {"email": email,"password": password}
|
||||||
|
encoded_data = json.dumps(data).encode('utf-8')
|
||||||
|
response = http.request(
|
||||||
|
'POST',
|
||||||
|
GEORIDE_API_HOST + GEORIDE_API_ENDPOINT_LOGIN,
|
||||||
|
body=encoded_data,
|
||||||
|
headers={'Content-Type': 'application/json'})
|
||||||
|
response_data = json.loads(response.data.decode('utf-8'))
|
||||||
|
account = GeorideAccount.fromJson(response_data)
|
||||||
|
return account
|
||||||
|
|
||||||
|
|
||||||
|
def renewToken(token):
|
||||||
|
http = urllib3.PoolManager()
|
||||||
|
headers = {"Authorization": "Bearer " + token}
|
||||||
|
response = http.request(
|
||||||
|
'GET',
|
||||||
|
GEORIDE_API_HOST + GEORIDE_API_ENDPOINT_NEW_TOKEN,
|
||||||
|
headers=headers)
|
||||||
|
response_data = json.loads(response.data.decode('utf-8'))
|
||||||
|
newToken = response_data['authToken']
|
||||||
|
return newToken
|
||||||
|
|
||||||
|
|
||||||
|
def revokeToken(token):
|
||||||
|
http = urllib3.PoolManager()
|
||||||
|
headers = {"Authorization": "Bearer " + token}
|
||||||
|
response = http.request(
|
||||||
|
'POST',
|
||||||
|
GEORIDE_API_HOST + GEORIDE_API_ENDPOINT_LOGOUT,
|
||||||
|
headers=headers)
|
||||||
|
if response.status == 204:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def getUser(token):
|
||||||
|
http = urllib3.PoolManager()
|
||||||
|
headers = {"Authorization": "Bearer " + token}
|
||||||
|
response = http.request(
|
||||||
|
'GET',
|
||||||
|
GEORIDE_API_HOST + GEORIDE_API_ENDPOINT_USER,
|
||||||
|
headers=headers)
|
||||||
|
response_data = json.loads(response.data.decode('utf-8'))
|
||||||
|
account = GeorideUser.fromJson(response_data)
|
||||||
|
return account
|
||||||
|
|
||||||
|
def getTrackers(token):
|
||||||
|
http = urllib3.PoolManager()
|
||||||
|
headers = {"Authorization": "Bearer " + token}
|
||||||
|
response = http.request(
|
||||||
|
'GET',
|
||||||
|
GEORIDE_API_HOST + GEORIDE_API_ENDPOINT_TRAKERS,
|
||||||
|
headers=headers)
|
||||||
|
|
||||||
|
response_data = json.loads(response.data.decode('utf-8'))
|
||||||
|
trackers = []
|
||||||
|
for json_tracker in response_data:
|
||||||
|
trackers.append(GeorideTracker.fromJson(json_tracker))
|
||||||
|
return trackers
|
||||||
|
|
||||||
|
|
||||||
|
def getTrips(token, trackerId, fromDate, toDate):
|
||||||
|
http = urllib3.PoolManager()
|
||||||
|
headers = {"Authorization": "Bearer " + token}
|
||||||
|
response = http.request(
|
||||||
|
'GET',
|
||||||
|
GEORIDE_API_HOST + GEORIDE_API_ENDPOINT_TRIPS.replace(':trackerId', str(trackerId)),
|
||||||
|
fields={'from': fromDate, 'to': toDate},
|
||||||
|
headers=headers)
|
||||||
|
|
||||||
|
response_data = json.loads(response.data.decode('utf-8'))
|
||||||
|
trips = []
|
||||||
|
for json_trip in response_data:
|
||||||
|
trips.append(GeorideTrackerTrip.fromJson(json_trip))
|
||||||
|
return trips
|
||||||
|
|
||||||
|
def getPositions(token, trackerId, fromDate, toDate):
|
||||||
|
http = urllib3.PoolManager()
|
||||||
|
headers = {"Authorization": "Bearer " + token}
|
||||||
|
response = http.request(
|
||||||
|
'GET',
|
||||||
|
GEORIDE_API_HOST + GEORIDE_API_ENDPOINT_POSITIONS.replace(':trackerId', str(trackerId)),
|
||||||
|
fields={'from': fromDate, 'to': toDate},
|
||||||
|
headers=headers)
|
||||||
|
|
||||||
|
response_data = json.loads(response.data.decode('utf-8'))
|
||||||
|
positions = []
|
||||||
|
for json_position in response_data:
|
||||||
|
positions.append(GeorideTrackerPosition.fromJson(json_position))
|
||||||
|
return positions
|
||||||
|
|
||||||
|
def shareATripByTripId(token, trackerId, tripId):
|
||||||
|
return _shareATrip(token, trackerId, tripId=tripId)
|
||||||
|
|
||||||
|
def shareATripByDate(token, trackerId, fromDate, toDate):
|
||||||
|
return _shareATrip(token, trackerId, fromDate=fromDate, toDate=toDate)
|
||||||
|
|
||||||
|
def shareATripByTripMergeId(token, trackerId, tripMergedId):
|
||||||
|
return _shareATrip(token, trackerId, tripMergedId=tripMergedId)
|
||||||
|
|
||||||
|
def _shareATrip(token, trackerId, tripId=None, fromDate=None, toDate=None, tripMergedId=None):
|
||||||
|
data = None
|
||||||
|
if tripId != None:
|
||||||
|
data = {"tripId": tripId}
|
||||||
|
elif fromDate != None and toDate != None:
|
||||||
|
data = {"from": fromDate, "to": toDate}
|
||||||
|
elif tripMergedId != None:
|
||||||
|
data = {"tripMergedId": tripMergedId}
|
||||||
|
|
||||||
|
encoded_data = json.dumps(data).encode('utf-8')
|
||||||
|
print("Trip data: ", encoded_data)
|
||||||
|
|
||||||
|
http = urllib3.PoolManager()
|
||||||
|
headers = {
|
||||||
|
"Authorization": "Bearer " + token,
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
response = http.request(
|
||||||
|
'POST',
|
||||||
|
GEORIDE_API_HOST + GEORIDE_API_ENDPOINT_TRIP_SHARE.replace(':trackerId', str(trackerId)),
|
||||||
|
body=encoded_data,
|
||||||
|
headers=headers)
|
||||||
|
|
||||||
|
response_data = json.loads(response.data.decode('utf-8'))
|
||||||
|
print("Trip data: ", response_data)
|
||||||
|
return GeorideSharedTrip.fromJson(response_data)
|
||||||
|
|
||||||
|
def lockTracker(token, trackerId):
|
||||||
|
http = urllib3.PoolManager()
|
||||||
|
headers = {"Authorization": "Bearer " + token}
|
||||||
|
response = http.request(
|
||||||
|
'POST',
|
||||||
|
GEORIDE_API_HOST + GEORIDE_API_ENDPOINT_LOCK.replace(':trackerId', str(trackerId)),
|
||||||
|
headers=headers)
|
||||||
|
if response.status == 204:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
def unlockTracker(token, trackerId):
|
||||||
|
http = urllib3.PoolManager()
|
||||||
|
headers = {"Authorization": "Bearer " + token}
|
||||||
|
response = http.request(
|
||||||
|
'POST',
|
||||||
|
GEORIDE_API_HOST + GEORIDE_API_ENDPOINT_UNCLOCK.replace(':trackerId', str(trackerId)),
|
||||||
|
headers=headers)
|
||||||
|
if response.status == 204:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
def toogleLockTracker(token, trackerId):
|
||||||
|
http = urllib3.PoolManager()
|
||||||
|
headers = {"Authorization": "Bearer " + token}
|
||||||
|
response = http.request(
|
||||||
|
'POST',
|
||||||
|
GEORIDE_API_HOST + GEORIDE_API_ENDPOINT_TOGGLE_LOCK.replace(':trackerId', str(trackerId)),
|
||||||
|
headers=headers)
|
||||||
|
response_data = json.loads(response.data.decode('utf-8'))
|
||||||
|
return response_data['locked']
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
print("Not a main module")
|
||||||
|
|
@ -0,0 +1,504 @@
|
|||||||
|
"""
|
||||||
|
Georide objects implementation
|
||||||
|
@author Matthieu DUVAL <matthieu@duval-dev.fr>
|
||||||
|
"""
|
||||||
|
|
||||||
|
class GeorideSharedTrip:
|
||||||
|
def __init__(self, url, shareId):
|
||||||
|
self._url = url
|
||||||
|
self._shareId = shareId
|
||||||
|
|
||||||
|
@property
|
||||||
|
def url(self):
|
||||||
|
return self._url
|
||||||
|
|
||||||
|
@property
|
||||||
|
def shareId(self):
|
||||||
|
return self._shareId
|
||||||
|
|
||||||
|
def fromJson(json):
|
||||||
|
return GeorideSharedTrip(
|
||||||
|
json['url'],
|
||||||
|
json['shareId']
|
||||||
|
)
|
||||||
|
|
||||||
|
class GeorideTrackerTrip:
|
||||||
|
def __init__(self, tripId, trackerId, averageSpeed, maxSpeed, distance, duration, startAddress, niceStartAddress, startLat,
|
||||||
|
startLon, endAddress, niceEndAddress, endLat, endLon, startTime, endTime):
|
||||||
|
self._tripId = tripId
|
||||||
|
self._trackerId = trackerId
|
||||||
|
self._averageSpeed = averageSpeed
|
||||||
|
self._maxSpeed = maxSpeed
|
||||||
|
self._distance = distance
|
||||||
|
self._duration = duration
|
||||||
|
self._startAddress = startAddress
|
||||||
|
self._niceStartAddress = niceStartAddress
|
||||||
|
self._startLat = startLat
|
||||||
|
self._startLon = startLon
|
||||||
|
self._endAddress = endAddress
|
||||||
|
self._niceEndAddress = niceEndAddress
|
||||||
|
self._endLat = endLat
|
||||||
|
self._endLon = endLon
|
||||||
|
self._startTime = startTime
|
||||||
|
self._endTime = endTime
|
||||||
|
|
||||||
|
@property
|
||||||
|
def tripId(self):
|
||||||
|
return self._tripId
|
||||||
|
|
||||||
|
@property
|
||||||
|
def trackerId(self):
|
||||||
|
return self._trackerId
|
||||||
|
|
||||||
|
@property
|
||||||
|
def averageSpeed(self):
|
||||||
|
return self._averageSpeed
|
||||||
|
|
||||||
|
@property
|
||||||
|
def maxSpeed(self):
|
||||||
|
return self._maxSpeed
|
||||||
|
|
||||||
|
@property
|
||||||
|
def distance(self):
|
||||||
|
return self._distance
|
||||||
|
|
||||||
|
@property
|
||||||
|
def duration(self):
|
||||||
|
return self._duration
|
||||||
|
|
||||||
|
@property
|
||||||
|
def startAddress(self):
|
||||||
|
return self._startAddress
|
||||||
|
|
||||||
|
@property
|
||||||
|
def niceStartAddress(self):
|
||||||
|
return self._niceStartAddress
|
||||||
|
|
||||||
|
@property
|
||||||
|
def startLat(self):
|
||||||
|
return self._startLat
|
||||||
|
|
||||||
|
@property
|
||||||
|
def startLon(self):
|
||||||
|
return self._startLon
|
||||||
|
|
||||||
|
@property
|
||||||
|
def endAddress(self):
|
||||||
|
return self._endAddress
|
||||||
|
|
||||||
|
@property
|
||||||
|
def niceEndAddress(self):
|
||||||
|
return self._niceEndAddress
|
||||||
|
|
||||||
|
@property
|
||||||
|
def endLat(self):
|
||||||
|
return self._endLat
|
||||||
|
|
||||||
|
@property
|
||||||
|
def endLon(self):
|
||||||
|
return self._endLon
|
||||||
|
|
||||||
|
@property
|
||||||
|
def startTime(self):
|
||||||
|
return self._startTime
|
||||||
|
|
||||||
|
@property
|
||||||
|
def endTime(self):
|
||||||
|
return self._endTime
|
||||||
|
|
||||||
|
def fromJson(json):
|
||||||
|
return GeorideTrackerTrip(
|
||||||
|
json['id'],
|
||||||
|
json['trackerId'],
|
||||||
|
json['averageSpeed'],
|
||||||
|
json['maxSpeed'],
|
||||||
|
json['distance'],
|
||||||
|
json['duration'],
|
||||||
|
json['startAddress'],
|
||||||
|
json['niceStartAddress'],
|
||||||
|
json['startLat'],
|
||||||
|
json['startLon'],
|
||||||
|
json['endAddress'],
|
||||||
|
json['niceEndAddress'],
|
||||||
|
json['endLat'],
|
||||||
|
json['endLon'],
|
||||||
|
json['startTime'],
|
||||||
|
json['endTime']
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class GeorideTrackerPosition:
|
||||||
|
def __init__(self, fixtime, latitude, longitude, altitude, speed, address):
|
||||||
|
self._fixtime = fixtime
|
||||||
|
self._latitude = latitude
|
||||||
|
self._longitude = longitude
|
||||||
|
self._altitude = altitude
|
||||||
|
self._speed = speed
|
||||||
|
self._address = address
|
||||||
|
|
||||||
|
@property
|
||||||
|
def fixtime(self):
|
||||||
|
return self._fixtime
|
||||||
|
|
||||||
|
@property
|
||||||
|
def latitude(self):
|
||||||
|
return self._latitude
|
||||||
|
|
||||||
|
@property
|
||||||
|
def longitude(self):
|
||||||
|
return self._longitude
|
||||||
|
|
||||||
|
@property
|
||||||
|
def altitude(self):
|
||||||
|
return self._altitude
|
||||||
|
|
||||||
|
@property
|
||||||
|
def speed(self):
|
||||||
|
return self._speed
|
||||||
|
|
||||||
|
@property
|
||||||
|
def address(self):
|
||||||
|
return self._address
|
||||||
|
|
||||||
|
def fromJson(json):
|
||||||
|
return GeorideTrackerPosition(
|
||||||
|
json['fixtime'],
|
||||||
|
json['latitude'],
|
||||||
|
json['longitude'],
|
||||||
|
json['altitude'],
|
||||||
|
json['speed'],
|
||||||
|
json['address']
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class GeorideTracker:
|
||||||
|
def __init__(self, trackerId, trackerName, deviceButtonAction, deviceButtonDelay, vibrationLevel, isOldTracker, autoLockFreezedTo,
|
||||||
|
fixtime, role, lastPaymentDate, giftCardId, expires, activationDate, odometer, isStolen, isCrashed, crashDetectionDisabled,
|
||||||
|
speed, moving, positionId, latitude, longitude, altitude, lockedPositionId, lockedLatitude, lockedLongitude, isLocked,
|
||||||
|
canSeePosition, canLock, canUnlock, canShare, canUnshare, canCheckSpeed, canSeeStatistics, canSendBrokenDownSignal,
|
||||||
|
canSendStolenSignal, status):
|
||||||
|
self._trackerId = trackerId
|
||||||
|
self._trackerName = trackerName
|
||||||
|
self._deviceButtonAction = deviceButtonAction
|
||||||
|
self._deviceButtonDelay = deviceButtonDelay
|
||||||
|
self._vibrationLevel = vibrationLevel
|
||||||
|
self._isOldTracker = isOldTracker
|
||||||
|
self._autoLockFreezedTo = autoLockFreezedTo
|
||||||
|
self._fixtime = fixtime
|
||||||
|
self._role = role
|
||||||
|
self._lastPaymentDate = lastPaymentDate
|
||||||
|
self._giftCardId = giftCardId
|
||||||
|
self._expires = expires
|
||||||
|
self._activationDate = activationDate
|
||||||
|
self._odometer = odometer
|
||||||
|
self._isStolen = isStolen
|
||||||
|
self._isCrashed = isCrashed
|
||||||
|
self._crashDetectionDisabled = crashDetectionDisabled
|
||||||
|
self._speed = speed
|
||||||
|
self._moving = moving
|
||||||
|
self._positionId = positionId
|
||||||
|
self._latitude = latitude
|
||||||
|
self._longitude = longitude
|
||||||
|
self._altitude = altitude
|
||||||
|
self._lockedPositionId = lockedPositionId
|
||||||
|
self._lockedLatitude = lockedLatitude
|
||||||
|
self._lockedLongitude = lockedLongitude
|
||||||
|
self._isLocked = isLocked
|
||||||
|
self._canSeePosition = canSeePosition
|
||||||
|
self._canLock = canLock
|
||||||
|
self._canUnlock = canUnlock
|
||||||
|
self._canShare = canShare
|
||||||
|
self._canUnshare = canUnshare
|
||||||
|
self._canCheckSpeed = canCheckSpeed
|
||||||
|
self._canSeeStatistics = canSeeStatistics
|
||||||
|
self._canSendBrokenDownSignal = canSendBrokenDownSignal
|
||||||
|
self._canSendStolenSignal = canSendStolenSignal
|
||||||
|
self._status = status
|
||||||
|
|
||||||
|
@property
|
||||||
|
def trackerId(self):
|
||||||
|
return self._trackerId
|
||||||
|
|
||||||
|
@property
|
||||||
|
def trackerName(self):
|
||||||
|
return self._trackerName
|
||||||
|
|
||||||
|
@property
|
||||||
|
def deviceButtonAction(self):
|
||||||
|
return self._deviceButtonAction
|
||||||
|
|
||||||
|
@property
|
||||||
|
def deviceButtonDelay(self):
|
||||||
|
return self._deviceButtonDelay
|
||||||
|
|
||||||
|
@property
|
||||||
|
def vibrationLevel(self):
|
||||||
|
return self._vibrationLevel
|
||||||
|
|
||||||
|
@property
|
||||||
|
def isOldTracker(self):
|
||||||
|
return self._isOldTracker
|
||||||
|
|
||||||
|
@property
|
||||||
|
def autoLockFreesedTo(self):
|
||||||
|
return self._autoLockFreesedTo
|
||||||
|
|
||||||
|
@property
|
||||||
|
def fixtime(self):
|
||||||
|
return self._fixtime
|
||||||
|
|
||||||
|
@property
|
||||||
|
def role(self):
|
||||||
|
return self._role
|
||||||
|
|
||||||
|
@property
|
||||||
|
def lastPayementDate(self):
|
||||||
|
return self._lastPayementDate
|
||||||
|
|
||||||
|
@property
|
||||||
|
def giftCardId(self):
|
||||||
|
return self._giftCardId
|
||||||
|
|
||||||
|
@property
|
||||||
|
def expires(self):
|
||||||
|
return self._expires
|
||||||
|
|
||||||
|
@property
|
||||||
|
def activationDate(self):
|
||||||
|
return self._activationDate
|
||||||
|
|
||||||
|
@property
|
||||||
|
def odometer(self):
|
||||||
|
return self._odometer
|
||||||
|
|
||||||
|
@property
|
||||||
|
def isStolen(self):
|
||||||
|
return self._isStolen
|
||||||
|
|
||||||
|
@property
|
||||||
|
def isCrashed(self):
|
||||||
|
return self._isCrashed
|
||||||
|
|
||||||
|
@property
|
||||||
|
def crashDetectionDisabled(self):
|
||||||
|
return self._crashDetectionDisabled
|
||||||
|
|
||||||
|
@property
|
||||||
|
def speed(self):
|
||||||
|
return self._speed
|
||||||
|
|
||||||
|
@property
|
||||||
|
def moving(self):
|
||||||
|
return self._moving
|
||||||
|
|
||||||
|
@property
|
||||||
|
def positionId(self):
|
||||||
|
return self._positionId
|
||||||
|
|
||||||
|
@property
|
||||||
|
def latitude(self):
|
||||||
|
return self._latitude
|
||||||
|
|
||||||
|
@property
|
||||||
|
def longitude(self):
|
||||||
|
return self._longitude
|
||||||
|
|
||||||
|
@property
|
||||||
|
def altitude(self):
|
||||||
|
return self._altitude
|
||||||
|
|
||||||
|
@property
|
||||||
|
def lockedPositionId(self):
|
||||||
|
return self._lockedPositionId
|
||||||
|
|
||||||
|
@property
|
||||||
|
def lockedLatitude(self):
|
||||||
|
return self._lockedLatitude
|
||||||
|
|
||||||
|
@property
|
||||||
|
def lockedLongitude(self):
|
||||||
|
return self._lockedLongitude
|
||||||
|
|
||||||
|
@property
|
||||||
|
def isLocked(self):
|
||||||
|
return self._isLocked
|
||||||
|
|
||||||
|
@property
|
||||||
|
def canSeePosition(self):
|
||||||
|
return self._canSeePosition
|
||||||
|
|
||||||
|
@property
|
||||||
|
def canLock(self):
|
||||||
|
return self._canLock
|
||||||
|
|
||||||
|
@property
|
||||||
|
def canUnlock(self):
|
||||||
|
return self._canUnlock
|
||||||
|
|
||||||
|
@property
|
||||||
|
def canShare(self):
|
||||||
|
return self._canShare
|
||||||
|
|
||||||
|
@property
|
||||||
|
def canUnshare(self):
|
||||||
|
return self._canUnshare
|
||||||
|
|
||||||
|
@property
|
||||||
|
def canCheckSpeed(self):
|
||||||
|
return self._canCheckSpeed
|
||||||
|
|
||||||
|
@property
|
||||||
|
def canSeeStatistics(self):
|
||||||
|
return self._canSeeStatistics
|
||||||
|
|
||||||
|
@property
|
||||||
|
def canSendBrokenDownSignal(self):
|
||||||
|
return self._canSendBrokenDownSignal
|
||||||
|
|
||||||
|
@property
|
||||||
|
def canSendStolenSignal(self):
|
||||||
|
return self._canSendStolenSignal
|
||||||
|
|
||||||
|
@property
|
||||||
|
def status(self):
|
||||||
|
return self._status
|
||||||
|
|
||||||
|
def fromJson(json):
|
||||||
|
return GeorideTracker(
|
||||||
|
json['trackerId'],
|
||||||
|
json['trackerName'],
|
||||||
|
json['deviceButtonAction'],
|
||||||
|
json['deviceButtonDelay'],
|
||||||
|
json['vibrationLevel'],
|
||||||
|
json['isOldTracker'],
|
||||||
|
json['autoLockFreezedTo'],
|
||||||
|
json['fixtime'],
|
||||||
|
json['role'],
|
||||||
|
json['lastPaymentDate'],
|
||||||
|
json['giftCardId'],
|
||||||
|
json['expires'],
|
||||||
|
json['activationDate'],
|
||||||
|
json['odometer'],
|
||||||
|
json['isStolen'],
|
||||||
|
json['isCrashed'],
|
||||||
|
json['crashDetectionDisabled'],
|
||||||
|
json['speed'],
|
||||||
|
json['moving'],
|
||||||
|
json['positionId'],
|
||||||
|
json['latitude'],
|
||||||
|
json['longitude'],
|
||||||
|
json['altitude'],
|
||||||
|
json['lockedPositionId'],
|
||||||
|
json['lockedLatitude'],
|
||||||
|
json['lockedLongitude'],
|
||||||
|
json['isLocked'],
|
||||||
|
json['canSeePosition'],
|
||||||
|
json['canLock'],
|
||||||
|
json['canUnlock'],
|
||||||
|
json['canShare'],
|
||||||
|
json['canUnshare'],
|
||||||
|
json['canCheckSpeed'],
|
||||||
|
json['canSeeStatistics'],
|
||||||
|
json['canSendBrokenDownSignal'],
|
||||||
|
json['canSendStolenSignal'],
|
||||||
|
json['status']
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class GeorideAccount:
|
||||||
|
def __init__(self, account_id, email, isAdmin, authToken):
|
||||||
|
self._account_id = account_id
|
||||||
|
self._email = email
|
||||||
|
self._isAdmin = isAdmin
|
||||||
|
self._authToken = authToken
|
||||||
|
|
||||||
|
@property
|
||||||
|
def account_id(self):
|
||||||
|
return self._account_id
|
||||||
|
|
||||||
|
@property
|
||||||
|
def email(self):
|
||||||
|
return self._email
|
||||||
|
|
||||||
|
@property
|
||||||
|
def isAdmin(self):
|
||||||
|
return self._isAdmin
|
||||||
|
|
||||||
|
@property
|
||||||
|
def authToken(self):
|
||||||
|
return self._authToken
|
||||||
|
|
||||||
|
@authToken.setter
|
||||||
|
def authToken(self, newToken):
|
||||||
|
self._authToken = newToken
|
||||||
|
|
||||||
|
def fromJson(json):
|
||||||
|
return GeorideAccount(
|
||||||
|
json['id'],
|
||||||
|
json['email'],
|
||||||
|
json['isAdmin'],
|
||||||
|
json['authToken']
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class GeorideUser:
|
||||||
|
def __init__(self, account_id, email, firstName, createdAt, phoneNumberp, pushUserToken, legal, dateOfBirth):
|
||||||
|
self._account_id = account_id
|
||||||
|
self._email = email
|
||||||
|
self._firstName = firstName
|
||||||
|
self._createdAt = createdAt
|
||||||
|
self._phoneNumberp = phoneNumberp
|
||||||
|
self._pushUserToken = pushUserToken
|
||||||
|
self._legal = legal
|
||||||
|
self._dateOfBirth = dateOfBirth
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_id(self):
|
||||||
|
return self._user_id
|
||||||
|
|
||||||
|
@property
|
||||||
|
def email(self):
|
||||||
|
return self._email
|
||||||
|
|
||||||
|
@property
|
||||||
|
def firstName(self):
|
||||||
|
return self._firstName
|
||||||
|
|
||||||
|
@property
|
||||||
|
def createdAt(self):
|
||||||
|
return self._createdAt
|
||||||
|
|
||||||
|
@property
|
||||||
|
def phoneNumber(self):
|
||||||
|
return self._phoneNumber
|
||||||
|
|
||||||
|
@property
|
||||||
|
def pushUserToken(self):
|
||||||
|
return self._pushUserToken
|
||||||
|
|
||||||
|
@property
|
||||||
|
def legal(self):
|
||||||
|
return self._legal
|
||||||
|
|
||||||
|
@property
|
||||||
|
def dateOfBirth(self):
|
||||||
|
return self._dateOfBirth
|
||||||
|
|
||||||
|
def fromJson(json):
|
||||||
|
return GeorideUser(
|
||||||
|
json['id'],
|
||||||
|
json['email'],
|
||||||
|
json['firstName'],
|
||||||
|
json['createdAt'],
|
||||||
|
json['phoneNumber'],
|
||||||
|
json['pushUserToken'],
|
||||||
|
json['legal'],
|
||||||
|
json['dateOfBirth']
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
print("Not a main module")
|
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"domain": "georide",
|
||||||
|
"name": "Georide",
|
||||||
|
"config_flow": true,
|
||||||
|
"documentation": "https://georide.fr",
|
||||||
|
"dependencies": [
|
||||||
|
"urllib3"
|
||||||
|
],
|
||||||
|
"codeowners": []
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
# pylint: disable=invalid-name, exec-used
|
||||||
|
"""Setup georideapilib package."""
|
||||||
|
from __future__ import absolute_import
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from setuptools import setup
|
||||||
|
|
||||||
|
sys.path.insert(0, '.')
|
||||||
|
|
||||||
|
CURRENT_DIR = os.path.dirname(__file__)
|
||||||
|
|
||||||
|
# to deploy to pip, please use
|
||||||
|
# make pythonpack
|
||||||
|
# python setup.py register sdist upload
|
||||||
|
# and be sure to test it firstly using
|
||||||
|
# "python setup.py register sdist upload -r pypitest"
|
||||||
|
setup(
|
||||||
|
name='georideapilib',
|
||||||
|
packages=['georideapilib'], # this must be the same as the name above
|
||||||
|
version='0.1.0',
|
||||||
|
description='Lib to control georide tracker devices with their rest api',
|
||||||
|
author='Matthieu DUVAL',
|
||||||
|
author_email='georideapilib@duval-dev.fr',
|
||||||
|
# use the URL to the github repo
|
||||||
|
url='https://github.com/ptimatth/pyGeoride',
|
||||||
|
download_url='https://codeload.github.com/ptimatth/pyGeoride/tar.gz/0.1.0',
|
||||||
|
keywords=['rest', 'georide', 'api', 'grutier'], # arbitrary keywords
|
||||||
|
classifiers=[],
|
||||||
|
install_requires=[],
|
||||||
|
tests_require=[
|
||||||
|
'pytest>=3.7',
|
||||||
|
'pytest-pep8',
|
||||||
|
'pytest-cov',
|
||||||
|
'python-coveralls',
|
||||||
|
'pylint',
|
||||||
|
'coverage>=4.4'
|
||||||
|
]
|
||||||
|
)
|
@ -0,0 +1,6 @@
|
|||||||
|
pytest>=3.7
|
||||||
|
pytest-pep8
|
||||||
|
pytest-cov
|
||||||
|
python-coveralls
|
||||||
|
pylint
|
||||||
|
coverage>=4.4
|
Loading…
Reference in new issue