tesla-fleet-api 0.9.9__py3-none-any.whl → 1.0.0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. tesla_fleet_api/__init__.py +7 -22
  2. tesla_fleet_api/const.py +1 -225
  3. tesla_fleet_api/exceptions.py +117 -0
  4. tesla_fleet_api/tesla/__init__.py +11 -0
  5. tesla_fleet_api/tesla/bluetooth.py +33 -0
  6. tesla_fleet_api/{charging.py → tesla/charging.py} +1 -1
  7. tesla_fleet_api/{energy.py → tesla/energysite.py} +41 -33
  8. tesla_fleet_api/{teslafleetapi.py → tesla/fleet.py} +8 -53
  9. tesla_fleet_api/{teslafleetoauth.py → tesla/oauth.py} +3 -4
  10. tesla_fleet_api/{partner.py → tesla/partner.py} +1 -1
  11. tesla_fleet_api/tesla/tesla.py +52 -0
  12. tesla_fleet_api/{user.py → tesla/user.py} +1 -1
  13. tesla_fleet_api/teslemetry/__init__.py +5 -0
  14. tesla_fleet_api/{teslemetry.py → teslemetry/teslemetry.py} +16 -25
  15. tesla_fleet_api/teslemetry/vehicle.py +73 -0
  16. tesla_fleet_api/tessie/__init__.py +5 -0
  17. tesla_fleet_api/{tessie.py → tessie/tessie.py} +17 -9
  18. tesla_fleet_api/tessie/vehicle.py +41 -0
  19. {tesla_fleet_api-0.9.9.dist-info → tesla_fleet_api-1.0.0.dist-info}/METADATA +3 -2
  20. tesla_fleet_api-1.0.0.dist-info/RECORD +24 -0
  21. tesla_fleet_api/energyspecific.py +0 -125
  22. tesla_fleet_api/pb2/__init__.py +0 -0
  23. tesla_fleet_api/pb2/__init__.pyi +0 -9
  24. tesla_fleet_api/pb2/car_server_pb2.py +0 -175
  25. tesla_fleet_api/pb2/car_server_pb2.pyi +0 -904
  26. tesla_fleet_api/pb2/common_pb2.py +0 -33
  27. tesla_fleet_api/pb2/common_pb2.pyi +0 -130
  28. tesla_fleet_api/pb2/errors_pb2.py +0 -17
  29. tesla_fleet_api/pb2/errors_pb2.pyi +0 -32
  30. tesla_fleet_api/pb2/keys_pb2.py +0 -15
  31. tesla_fleet_api/pb2/keys_pb2.pyi +0 -21
  32. tesla_fleet_api/pb2/managed_charging_pb2.py +0 -15
  33. tesla_fleet_api/pb2/managed_charging_pb2.pyi +0 -17
  34. tesla_fleet_api/pb2/signatures_pb2.py +0 -35
  35. tesla_fleet_api/pb2/signatures_pb2.pyi +0 -152
  36. tesla_fleet_api/pb2/universal_message_pb2.py +0 -30
  37. tesla_fleet_api/pb2/universal_message_pb2.pyi +0 -148
  38. tesla_fleet_api/pb2/vcsec_pb2.py +0 -79
  39. tesla_fleet_api/pb2/vcsec_pb2.pyi +0 -482
  40. tesla_fleet_api/pb2/vehicle_pb2.py +0 -125
  41. tesla_fleet_api/pb2/vehicle_pb2.pyi +0 -1183
  42. tesla_fleet_api/teslafleetopensource.py +0 -61
  43. tesla_fleet_api/vehicle.py +0 -878
  44. tesla_fleet_api/vehiclesigned.py +0 -1127
  45. tesla_fleet_api/vehiclespecific.py +0 -505
  46. tesla_fleet_api-0.9.9.dist-info/RECORD +0 -42
  47. {tesla_fleet_api-0.9.9.dist-info → tesla_fleet_api-1.0.0.dist-info}/LICENSE +0 -0
  48. {tesla_fleet_api-0.9.9.dist-info → tesla_fleet_api-1.0.0.dist-info}/WHEEL +0 -0
  49. {tesla_fleet_api-0.9.9.dist-info → tesla_fleet_api-1.0.0.dist-info}/top_level.txt +0 -0
@@ -1,61 +0,0 @@
1
- import aiohttp
2
- import time
3
- import secrets
4
- import hashlib
5
- import base64
6
-
7
- from .teslafleetoauth import TeslaFleetOAuth
8
- from .const import Scope, SERVERS
9
-
10
-
11
- class TeslaFleetOpenSource(TeslaFleetOAuth):
12
- """Tesla Fleet Open Source OAuth API."""
13
-
14
- code_verifier: str
15
- code_challenge: str
16
-
17
- def __init__(
18
- self,
19
- session: aiohttp.ClientSession,
20
- client_id: str,
21
- redirect_uri: str,
22
- ):
23
- self.code_verifier = secrets.token_urlsafe(32)
24
-
25
- # Hash the code_verifier using SHA-256
26
- hashed_verifier = hashlib.sha256(self.code_verifier.encode()).digest()
27
- # Encode the hash using URL-safe Base64 encoding, without padding
28
- self.code_challenge = (
29
- base64.urlsafe_b64encode(hashed_verifier).decode().replace("=", "")
30
- )
31
-
32
- super().__init__(session, client_id, redirect_uri=redirect_uri)
33
-
34
- def get_login_url(self, scopes: list[Scope], state: str = "login") -> str:
35
- """Get the login URL without a client secret."""
36
-
37
- return (
38
- super().get_login_url(scopes, state)
39
- + f"&code_challenge={self.code_challenge}"
40
- )
41
-
42
- async def get_refresh_token(self, code: str) -> None:
43
- """Get the refresh token."""
44
- async with self.session.post(
45
- "https://auth.tesla.com/oauth2/v3/token",
46
- data={
47
- "grant_type": "authorization_code",
48
- "client_id": self.client_id,
49
- "code": code,
50
- "audience": self.server,
51
- "redirect_uri": self.redirect_uri,
52
- "code_verifier": self.code_verifier,
53
- },
54
- ) as resp:
55
- if resp.ok:
56
- data = await resp.json()
57
- self.refresh_token = data["refresh_token"]
58
- self.access_token = data["access_token"]
59
- self.expires = int(time.time()) + data["expires_in"]
60
- region = code.split("_")[0].lower()
61
- self.server = SERVERS.get(region)