Skip to content

Commit 71b7a41

Browse files
committed
[ADDED] Feature to set, get, rollback Route Status
1 parent f0555ef commit 71b7a41

File tree

10 files changed

+172
-3
lines changed

10 files changed

+172
-3
lines changed

VERSION.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
# VERSION.py - MAINTAINER's. Don't edit, if you don't know what are you doing
77
# ==============================================================================
88

9-
VERSION = (0, 1, 4, 4)
9+
VERSION = (0, 1, 5, 0)
1010
RELEASE_SUFFIX = ''
1111

1212
VERSION_STRING = '.'.join([str(x) for x in VERSION])
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# -*- coding: utf-8 -*-
2+
3+
import argparse
4+
5+
from route4me import Route4Me
6+
7+
8+
def main(api_key, route_id):
9+
r4m = Route4Me(api_key)
10+
11+
route = r4m.route_status
12+
print('Route ID: {}'.format(route_id))
13+
response = route.get_route_status(route_id=route_id)
14+
print(response)
15+
16+
17+
if __name__ == '__main__':
18+
parser = argparse.ArgumentParser(description='Get a Route')
19+
parser.add_argument('--api_key', dest='api_key', help='Route4Me API KEY',
20+
type=str, required=True)
21+
parser.add_argument('--route_id', dest='route_id', help='Route4Me Route ID',
22+
type=str, required=True)
23+
args = parser.parse_args()
24+
main(args.api_key, args.route_id)
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# -*- coding: utf-8 -*-
2+
3+
import argparse
4+
5+
from route4me import Route4Me
6+
7+
8+
def main(api_key, route_id):
9+
r4m = Route4Me(api_key)
10+
11+
route = r4m.route_status
12+
print('Route ID: {}'.format(route_id))
13+
response = route.get_route_status_history(route_id=route_id)
14+
print(response)
15+
16+
17+
if __name__ == '__main__':
18+
parser = argparse.ArgumentParser(description='Get a Route')
19+
parser.add_argument('--api_key', dest='api_key', help='Route4Me API KEY',
20+
type=str, required=True)
21+
parser.add_argument('--route_id', dest='route_id', help='Route4Me Route ID',
22+
type=str, required=True)
23+
args = parser.parse_args()
24+
main(args.api_key, args.route_id)
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# -*- coding: utf-8 -*-
2+
3+
import argparse
4+
5+
from route4me import Route4Me
6+
7+
8+
def main(api_key, route_id):
9+
r4m = Route4Me(api_key)
10+
11+
route = r4m.route_status
12+
print('Route ID: {}'.format(route_id))
13+
response = route.rollback_route_status(route_id=route_id)
14+
print(response)
15+
16+
17+
if __name__ == '__main__':
18+
parser = argparse.ArgumentParser(description='Get a Route')
19+
parser.add_argument('--api_key', dest='api_key', help='Route4Me API KEY',
20+
type=str, required=True)
21+
parser.add_argument('--route_id', dest='route_id', help='Route4Me Route ID',
22+
type=str, required=True)
23+
args = parser.parse_args()
24+
main(args.api_key, args.route_id)
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# -*- coding: utf-8 -*-
2+
3+
import argparse
4+
5+
from route4me import Route4Me
6+
7+
8+
def main(api_key, route_id, status, lat, lng):
9+
r4m = Route4Me(api_key)
10+
11+
route = r4m.route_status
12+
print('Route ID: {}'.format(route_id))
13+
print('Latitude: {} - Longitude: {}'.format(lat, lng))
14+
response = route.set_route_status(route_id=route_id, status=status, lat=lat, lng=lng)
15+
print(response)
16+
17+
18+
if __name__ == '__main__':
19+
parser = argparse.ArgumentParser(description='Get a Route')
20+
parser.add_argument('--api_key', dest='api_key', help='Route4Me API KEY',
21+
type=str, required=True)
22+
parser.add_argument('--route_id', dest='route_id', help='Route4Me Route ID',
23+
type=str, required=True)
24+
parser.add_argument('--status', dest='status', help='Route Status: planned, started, paused, completed',
25+
type=str, required=True)
26+
parser.add_argument('--lat', dest='lat', help='Latitude',
27+
type=float, required=True)
28+
parser.add_argument('--lng', dest='lng', help='Longitude',
29+
type=float, required=True)
30+
args = parser.parse_args()
31+
main(args.api_key, args.route_id, args.status, args.lat, args.lng)

route4me/api.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from .vehicles import Vehicle
2121
from .telematics import Telematics
2222
from .api_endpoints import API_HOST
23+
from .route_status import RouteStatus
2324

2425

2526
HEADERS = {
@@ -60,6 +61,7 @@ def __init__(self,
6061
self.redirects = redirects
6162
self.verify_ssl = verify_ssl
6263
self.proxies = proxies
64+
self.route_status = RouteStatus(self)
6365

6466
def _make_request(self, url, params, data, request_method):
6567
"""

route4me/api_endpoints.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
# codebeat:disable[TOO_MANY_FUNCTIONS, LOC, ABC, ARITY, TOTAL_LOC]
33

44
MAIN_HOST = 'https://api.route4me.com'
5+
API_V5 = 'https://wh.route4me.com/modules/api/v5.0'
56

67
ACTIVITY_FEED = '{0}/api.v4/activity_feed.php'.format(MAIN_HOST)
78
ADDRESSBOOK = '{0}/api.v4/address_book.php'.format(MAIN_HOST)
@@ -46,3 +47,4 @@
4647
ZIPCODE_TERRITORIES = 'https://rapid.route4me.com/street_data/territories'
4748

4849
EXPORTER_V5 = 'https://wh.route4me.com/modules/api/v5.0/route-export/{route_id}/export'
50+
ROUTE_STATUS_V5 = '{}/route-status'.format(API_V5)

route4me/constants.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,3 +119,9 @@ def auto_enum(*sequential, **named):
119119
SERVICE="SERVICE",
120120
VISIT="VISIT",
121121
DRIVEBY="DRIVEBY")
122+
123+
ROUTE_STATUS = enum(PLANNED="planned",
124+
STARTED="started",
125+
PAUSED="paused",
126+
RESUMED="resumed",
127+
COMPLETED="completed")

route4me/route_status.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# -*- coding: utf-8 -*-
2+
3+
from datetime import datetime
4+
from .base import Base
5+
from .api_endpoints import ROUTE_STATUS_V5
6+
7+
8+
class RouteStatus(Base):
9+
"""
10+
Route Status
11+
12+
- Planned
13+
- Started
14+
- Paused
15+
- Resumed
16+
- Completed
17+
18+
19+
"""
20+
21+
def __init__(self, api):
22+
"""
23+
Routes
24+
:param api: Route4Me API Instance
25+
"""
26+
self.params = {'api_key': api.key, }
27+
Base.__init__(self, api)
28+
29+
def get_route_status(self, route_id):
30+
response = self.api._request_get("{}/{}".format(ROUTE_STATUS_V5, route_id),
31+
self.params)
32+
return response.json()
33+
34+
def get_route_status_history(self, route_id):
35+
response = self.api._request_get("{}/{}/history".format(ROUTE_STATUS_V5, route_id),
36+
self.params)
37+
return response.json()
38+
39+
def set_route_status(self, route_id, status, lat, lng, event_timestamp=None):
40+
if event_timestamp is None:
41+
event_timestamp = int(datetime.now().timestamp())
42+
data = {
43+
"status": status,
44+
"lat": lat,
45+
'lng': lng,
46+
'event_timestamp': event_timestamp,
47+
}
48+
response = self.api._request_post("{}/{}".format(ROUTE_STATUS_V5, route_id),
49+
self.params,
50+
json=data)
51+
return response.json()
52+
53+
def rollback_route_status(self, route_id):
54+
response = self.api._request_get("{}/{}/rollback".format(ROUTE_STATUS_V5, route_id),
55+
self.params)
56+
return response.json()

route4me/version.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66
# VERSION.py - MAINTAINER's. Don't edit, if you don't know what are you doing
77
# ==============================================================================
88

9-
VERSION = (0, 1, 4, 4)
9+
VERSION = (0, 1, 5, 0)
1010
RELEASE_SUFFIX = ''
1111

1212
VERSION_STRING = '.'.join([str(x) for x in VERSION])
1313
RELEASE_STRING = "v{}{}".format(VERSION_STRING, RELEASE_SUFFIX)
1414

1515
PROJECT = 'Route4Me Python SDK'
16-
COPYRIGHT = '2016-2023 © Route4Me Python Team'
16+
COPYRIGHT = '2016-2021 © Route4Me Python Team'
1717
AUTHOR = 'Route4Me Python Team (SDK)'
1818
AUTHOR_EMAIL = '[email protected]'
1919
TITLE = 'route4me'

0 commit comments

Comments
 (0)