Skip to content

Commit d112002

Browse files
committed
Add Fetch API to Python SDK
1 parent 0ee7278 commit d112002

File tree

4 files changed

+129
-0
lines changed

4 files changed

+129
-0
lines changed

dimo/api/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from .auth import Auth
22
from .attestation import Attestation
33
from .device_definitions import DeviceDefinitions
4+
from .fetch import Fetch
45
from .token_exchange import TokenExchange
56
from .trips import Trips
67
from .valuations import Valuations
@@ -9,6 +10,7 @@
910
"Auth",
1011
"Attestation",
1112
"DeviceDefinitions",
13+
"Fetch",
1214
"TokenExchange",
1315
"Trips",
1416
"Valuations",

dimo/api/fetch.py

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
from dimo.errors import check_type, check_optional_type
2+
3+
4+
class Fetch:
5+
6+
def __init__(self, request_method, get_auth_headers):
7+
self._request = request_method
8+
self._get_auth_headers = get_auth_headers
9+
10+
def _build_params(self, **kwargs):
11+
params = {}
12+
for key, value in kwargs.items():
13+
if value is not None:
14+
params[key] = value
15+
return params
16+
17+
def get_index_keys(
18+
self,
19+
vehicle_jwt: str,
20+
token_id: int,
21+
after=None,
22+
before=None,
23+
id=None,
24+
limit=None,
25+
producer=None,
26+
source=None,
27+
type=None,
28+
) -> dict:
29+
check_type("vehicle_jwt", vehicle_jwt, str)
30+
check_type("token_id", token_id, int)
31+
params = self._build_params(
32+
after=after, before=before, id=id, limit=limit,
33+
producer=producer, source=source, type=type,
34+
)
35+
url = f"/v1/vehicle/index-keys/{token_id}"
36+
return self._request(
37+
"GET",
38+
"Fetch",
39+
url,
40+
params=params,
41+
headers=self._get_auth_headers(vehicle_jwt),
42+
)
43+
44+
def get_latest_index_key(
45+
self,
46+
vehicle_jwt: str,
47+
token_id: int,
48+
after=None,
49+
before=None,
50+
id=None,
51+
limit=None,
52+
producer=None,
53+
source=None,
54+
type=None,
55+
) -> dict:
56+
check_type("vehicle_jwt", vehicle_jwt, str)
57+
check_type("token_id", token_id, int)
58+
params = self._build_params(
59+
after=after, before=before, id=id, limit=limit,
60+
producer=producer, source=source, type=type,
61+
)
62+
url = f"/v1/vehicle/latest-index-key/{token_id}"
63+
return self._request(
64+
"GET",
65+
"Fetch",
66+
url,
67+
params=params,
68+
headers=self._get_auth_headers(vehicle_jwt),
69+
)
70+
71+
def get_latest_object(
72+
self,
73+
vehicle_jwt: str,
74+
token_id: int,
75+
after=None,
76+
before=None,
77+
id=None,
78+
limit=None,
79+
producer=None,
80+
source=None,
81+
type=None,
82+
) -> dict:
83+
check_type("vehicle_jwt", vehicle_jwt, str)
84+
check_type("token_id", token_id, int)
85+
params = self._build_params(
86+
after=after, before=before, id=id, limit=limit,
87+
producer=producer, source=source, type=type,
88+
)
89+
url = f"/v1/vehicle/latest-object/{token_id}"
90+
return self._request(
91+
"GET",
92+
"Fetch",
93+
url,
94+
params=params,
95+
headers=self._get_auth_headers(vehicle_jwt),
96+
)
97+
98+
def get_objects(
99+
self,
100+
vehicle_jwt: str,
101+
token_id: int,
102+
after=None,
103+
before=None,
104+
id=None,
105+
limit=None,
106+
producer=None,
107+
source=None,
108+
type=None,
109+
) -> dict:
110+
check_type("vehicle_jwt", vehicle_jwt, str)
111+
check_type("token_id", token_id, int)
112+
params = self._build_params(
113+
after=after, before=before, id=id, limit=limit,
114+
producer=producer, source=source, type=type,
115+
)
116+
url = f"/v1/vehicle/objects/{token_id}"
117+
return self._request(
118+
"GET",
119+
"Fetch",
120+
url,
121+
params=params,
122+
headers=self._get_auth_headers(vehicle_jwt),
123+
)

dimo/dimo.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from .api.conversations import Conversations
66
from .api.device_definitions import DeviceDefinitions
77
from .api.token_exchange import TokenExchange
8+
from .api.fetch import Fetch
89
from .api.trips import Trips
910
from .api.valuations import Valuations
1011
from .api.vehicle_triggers import VehicleTriggers
@@ -78,6 +79,7 @@ def __getattr__(self, name: str) -> Any:
7879
"auth": (Auth, ("request", "_get_auth_headers", "env", "self")),
7980
"conversations": (Conversations, ("request", "_get_auth_headers", "_get_full_path", "session")),
8081
"device_definitions": (DeviceDefinitions, ("request", "_get_auth_headers")),
82+
"fetch": (Fetch, ("request", "_get_auth_headers")),
8183
"token_exchange": (
8284
TokenExchange,
8385
("request", "_get_auth_headers", "identity", "self"),

dimo/environments.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"Conversations": "https://conversations-api.dimo.zone",
66
"Identity": "https://identity-api.dimo.zone/query",
77
"DeviceDefinitions": "https://device-definitions-api.dimo.zone",
8+
"Fetch": "https://fetch-api.dimo.zone",
89
"Telemetry": "https://telemetry-api.dimo.zone/query",
910
"TokenExchange": "https://token-exchange-api.dimo.zone",
1011
"Trips": "https://trips-api.dimo.zone",
@@ -18,6 +19,7 @@
1819
"Conversations": "https://conversations-api.dev.dimo.zone",
1920
"Identity": "https://identity-api.dev.dimo.zone/query",
2021
"DeviceDefinitions": "https://device-definitions-api.dev.dimo.zone",
22+
"Fetch": "https://fetch-api.dev.dimo.zone",
2123
"Telemetry": "https://telemetry-api.dev.dimo.zone/query",
2224
"TokenExchange": "https://token-exchange-api.dev.dimo.zone",
2325
"Trips": "https://trips-api.dev.dimo.zone",

0 commit comments

Comments
 (0)