Skip to content

Commit

Permalink
cleanup, remove get_token address requirement, continue graphql methods
Browse files Browse the repository at this point in the history
  • Loading branch information
barrettk8090 committed Jul 17, 2024
1 parent 7f798dd commit f46408c
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 5 deletions.
15 changes: 14 additions & 1 deletion dimo/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,20 @@ async def sign_challenge(self, message, private_key, env="Production"):
async def submit_challenge(self, form_data, headers):
return self._request('POST', 'Auth', '/auth/web3/submit_challenge', data=form_data, headers=headers)

async def get_token(self, client_id, domain, address, private_key, scope='openid email', response_type='code', grant_type="authorization_code", env="Production"):
# Requires client_id, domain, and private_key. Address defaults to client_id.
async def get_token(self,
client_id,
domain,
private_key,
address=None,
scope='openid email',
response_type='code',
grant_type="authorization_code",
env="Production"):

if address is None:
address = client_id

headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
Expand Down
4 changes: 3 additions & 1 deletion dimo/dimo.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,16 @@ def __init__(self, env="Production"):
self.urls = dimo_environment[env]
self.auth = Auth(self.request, self._get_auth_headers)
self.device_data = DeviceData(self.request, self._get_auth_headers)
self.device_definitions = DeviceDefinitions(self.request, self._get_auth_headers)
self.devices = Devices(self.request, self._get_auth_headers)
self.events = Events(self.request, self._get_auth_headers)
self.token_exchange = TokenExchange(self.request, self._get_auth_headers)
self.trips = Trips(self.request, self._get_auth_headers)
self.user = User(self.request, self._get_auth_headers)
self.valuations = Valuations(self.request, self._get_auth_headers)
self.vehicle_signal_decoding = VehicleSignalDecoding(self.request, self._get_auth_headers)
self.identity = Identity(self)
# self.telemetry = Telemetry(self)
self.telemetry = Telemetry(self)
self._session = Request.session

def _get_full_path(self, service, path, params=None):
Expand Down
27 changes: 25 additions & 2 deletions dimo/identity.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
from query import query

class Identity:
def __init__(self, dimo_instance):
self.dimo = dimo_instance
Expand All @@ -18,3 +16,28 @@ async def count_dimo_vehicles(self, token):
}
"""
return await self.dimo.query('Identity', query, token=token)

# Sample query - list vehicle definitions per address
async def list_vehicle_definitions_per_address(self, address, limit, token):
query = f"""
{{
vehicles(filterBy: owner: {address}, first: {limit}) {{
nodes {{
aftermarketDevice {{
tokenId
address
}}
syntheticDevice {{
address
tokenId
}}
definition {{
make
model
year
}}
}}
}}
}}
"""
return await self.dimo.query('Identity', query, token=token)
37 changes: 36 additions & 1 deletion dimo/telemetry.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,37 @@
class Telemetry:
pass
def __init__(self, dimo_instance):
self.dimo = dimo_instance

# Primary query method
async def query(self, query, token):
return await self.dimo.query('Telemetry', query, token=token)

async def custom_query(self, query, token):
pass

# Sample query - get signals latest
async def get_signals_latest(self, token, token_id):
query = f"""
query {{
signalsLatest(tokenId: {token_id}) {{
powertrainTransmissionTravelledDistance {{
timestamp
value
}}
exteriorAirTemperature {{
timestamp
value
}}
speed {{
timestamp
value
}}
powertrainType {{
timestamp
value
}}
}}
}}
"""
return await self.dimo.query('Telemetry', query, token=token)

0 comments on commit f46408c

Please sign in to comment.