mc5-api-client 1.0.9__py3-none-any.whl → 1.0.11__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mc5_api_client/__init__.py +57 -2
- mc5_api_client/auth.py +92 -0
- mc5_api_client/cli.py +6 -6
- {mc5_api_client-1.0.9.dist-info → mc5_api_client-1.0.11.dist-info}/METADATA +73 -83
- mc5_api_client-1.0.11.dist-info/RECORD +15 -0
- mc5_api_client-1.0.9.dist-info/RECORD +0 -15
- {mc5_api_client-1.0.9.dist-info → mc5_api_client-1.0.11.dist-info}/WHEEL +0 -0
- {mc5_api_client-1.0.9.dist-info → mc5_api_client-1.0.11.dist-info}/entry_points.txt +0 -0
- {mc5_api_client-1.0.9.dist-info → mc5_api_client-1.0.11.dist-info}/licenses/LICENSE +0 -0
- {mc5_api_client-1.0.9.dist-info → mc5_api_client-1.0.11.dist-info}/top_level.txt +0 -0
mc5_api_client/__init__.py
CHANGED
|
@@ -13,7 +13,9 @@ Provides easy access to authentication, profile management, clan operations,
|
|
|
13
13
|
messaging, and more.
|
|
14
14
|
"""
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
from typing import Optional, Dict, Any
|
|
17
|
+
|
|
18
|
+
__version__ = "1.0.11"
|
|
17
19
|
__author__ = "Chizoba"
|
|
18
20
|
__email__ = "chizoba2026@hotmail.com"
|
|
19
21
|
__license__ = "MIT"
|
|
@@ -38,6 +40,57 @@ from .admin_client import (
|
|
|
38
40
|
quick_update_player_score
|
|
39
41
|
)
|
|
40
42
|
|
|
43
|
+
# Encrypted token convenience functions
|
|
44
|
+
from .auth import TokenGenerator
|
|
45
|
+
|
|
46
|
+
def quick_generate_encrypted_token(
|
|
47
|
+
username: str,
|
|
48
|
+
password: str,
|
|
49
|
+
device_id: Optional[str] = None,
|
|
50
|
+
scope: str = "alert auth chat leaderboard_ro lobby message session social config storage_ro tracking_bi feed storage leaderboard_admin social_eve social soc transaction schedule lottery voice matchmaker",
|
|
51
|
+
nonce: str = "*"
|
|
52
|
+
) -> Dict[str, Any]:
|
|
53
|
+
"""
|
|
54
|
+
Quick function to generate and encrypt an access token.
|
|
55
|
+
|
|
56
|
+
Args:
|
|
57
|
+
username: MC5 username
|
|
58
|
+
password: Account password
|
|
59
|
+
device_id: Device ID (generated if not provided)
|
|
60
|
+
scope: Permission scopes
|
|
61
|
+
nonce: Nonce value for encryption
|
|
62
|
+
|
|
63
|
+
Returns:
|
|
64
|
+
Dictionary containing encrypted token information
|
|
65
|
+
"""
|
|
66
|
+
token_gen = TokenGenerator()
|
|
67
|
+
try:
|
|
68
|
+
result = token_gen.generate_encrypted_token(username, password, device_id, scope, nonce)
|
|
69
|
+
return result
|
|
70
|
+
finally:
|
|
71
|
+
token_gen.close()
|
|
72
|
+
|
|
73
|
+
def quick_encrypt_token(
|
|
74
|
+
access_token: str,
|
|
75
|
+
nonce: str = "*"
|
|
76
|
+
) -> str:
|
|
77
|
+
"""
|
|
78
|
+
Quick function to encrypt an existing access token.
|
|
79
|
+
|
|
80
|
+
Args:
|
|
81
|
+
access_token: Raw access token string
|
|
82
|
+
nonce: Nonce value for encryption
|
|
83
|
+
|
|
84
|
+
Returns:
|
|
85
|
+
Encrypted token string
|
|
86
|
+
"""
|
|
87
|
+
token_gen = TokenGenerator()
|
|
88
|
+
try:
|
|
89
|
+
result = token_gen.encrypt_token(access_token, nonce)
|
|
90
|
+
return result
|
|
91
|
+
finally:
|
|
92
|
+
token_gen.close()
|
|
93
|
+
|
|
41
94
|
__all__ = [
|
|
42
95
|
"MC5Client",
|
|
43
96
|
"SimpleMC5Client",
|
|
@@ -57,5 +110,7 @@ __all__ = [
|
|
|
57
110
|
"RateLimitError",
|
|
58
111
|
"help",
|
|
59
112
|
"examples",
|
|
60
|
-
"quick_reference"
|
|
113
|
+
"quick_reference",
|
|
114
|
+
"quick_generate_encrypted_token",
|
|
115
|
+
"quick_encrypt_token"
|
|
61
116
|
]
|
mc5_api_client/auth.py
CHANGED
|
@@ -38,6 +38,7 @@ class TokenGenerator:
|
|
|
38
38
|
self,
|
|
39
39
|
client_id: str = "1875:55979:6.0.0a:windows:windows",
|
|
40
40
|
auth_url: str = "https://eur-janus.gameloft.com:443/authorize",
|
|
41
|
+
encrypt_url: str = "https://eur-janus.gameloft.com/encrypt_token",
|
|
41
42
|
timeout: int = 30,
|
|
42
43
|
max_retries: int = 3
|
|
43
44
|
):
|
|
@@ -47,11 +48,13 @@ class TokenGenerator:
|
|
|
47
48
|
Args:
|
|
48
49
|
client_id: Game client identifier
|
|
49
50
|
auth_url: Authentication endpoint URL
|
|
51
|
+
encrypt_url: Token encryption endpoint URL
|
|
50
52
|
timeout: Request timeout in seconds
|
|
51
53
|
max_retries: Maximum number of retry attempts
|
|
52
54
|
"""
|
|
53
55
|
self.client_id = client_id
|
|
54
56
|
self.auth_url = auth_url
|
|
57
|
+
self.encrypt_url = encrypt_url
|
|
55
58
|
self.timeout = timeout
|
|
56
59
|
self.max_retries = max_retries
|
|
57
60
|
|
|
@@ -275,6 +278,95 @@ class TokenGenerator:
|
|
|
275
278
|
"signature": parts[6] if len(parts) > 6 else None
|
|
276
279
|
}
|
|
277
280
|
|
|
281
|
+
def encrypt_token(
|
|
282
|
+
self,
|
|
283
|
+
access_token: str,
|
|
284
|
+
nonce: str = "*"
|
|
285
|
+
) -> str:
|
|
286
|
+
"""
|
|
287
|
+
Encrypt an access token for additional security.
|
|
288
|
+
|
|
289
|
+
Args:
|
|
290
|
+
access_token: Raw access token string
|
|
291
|
+
nonce: Nonce value for encryption (default: "*")
|
|
292
|
+
|
|
293
|
+
Returns:
|
|
294
|
+
Encrypted token string
|
|
295
|
+
|
|
296
|
+
Raises:
|
|
297
|
+
AuthenticationError: If encryption fails
|
|
298
|
+
NetworkError: If network issues occur
|
|
299
|
+
"""
|
|
300
|
+
payload = {
|
|
301
|
+
"access_token": access_token,
|
|
302
|
+
"nonce": nonce
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
try:
|
|
306
|
+
print("🔐 Encrypting token...")
|
|
307
|
+
response = self.session.post(
|
|
308
|
+
self.encrypt_url,
|
|
309
|
+
data=payload,
|
|
310
|
+
timeout=self.timeout
|
|
311
|
+
)
|
|
312
|
+
|
|
313
|
+
if response.status_code == 200:
|
|
314
|
+
encrypted_token = response.text.strip()
|
|
315
|
+
if encrypted_token:
|
|
316
|
+
print("✅ Token encrypted successfully")
|
|
317
|
+
return encrypted_token
|
|
318
|
+
else:
|
|
319
|
+
raise AuthenticationError("Empty encrypted token response")
|
|
320
|
+
else:
|
|
321
|
+
raise AuthenticationError(
|
|
322
|
+
f"Token encryption failed with status {response.status_code}: {response.text}"
|
|
323
|
+
)
|
|
324
|
+
|
|
325
|
+
except requests.exceptions.Timeout:
|
|
326
|
+
raise NetworkError("Token encryption request timed out")
|
|
327
|
+
except requests.exceptions.ConnectionError:
|
|
328
|
+
raise NetworkError("Failed to connect to encryption server")
|
|
329
|
+
except requests.exceptions.RequestException as e:
|
|
330
|
+
raise NetworkError(f"Network error during token encryption: {e}")
|
|
331
|
+
|
|
332
|
+
def generate_encrypted_token(
|
|
333
|
+
self,
|
|
334
|
+
username: str,
|
|
335
|
+
password: str,
|
|
336
|
+
device_id: Optional[str] = None,
|
|
337
|
+
scope: str = "alert auth chat leaderboard_ro lobby message session social config storage_ro tracking_bi feed storage leaderboard_admin social_eve social soc transaction schedule lottery voice matchmaker",
|
|
338
|
+
nonce: str = "*"
|
|
339
|
+
) -> Dict[str, Any]:
|
|
340
|
+
"""
|
|
341
|
+
Generate and encrypt an access token in one step.
|
|
342
|
+
|
|
343
|
+
Args:
|
|
344
|
+
username: MC5 username
|
|
345
|
+
password: Account password
|
|
346
|
+
device_id: Device ID (generated if not provided)
|
|
347
|
+
scope: Space-separated list of permission scopes
|
|
348
|
+
nonce: Nonce value for encryption (default: "*")
|
|
349
|
+
|
|
350
|
+
Returns:
|
|
351
|
+
Dictionary containing encrypted token information
|
|
352
|
+
|
|
353
|
+
Raises:
|
|
354
|
+
InvalidCredentialsError: If credentials are invalid
|
|
355
|
+
AuthenticationError: If authentication or encryption fails
|
|
356
|
+
NetworkError: If network issues occur
|
|
357
|
+
"""
|
|
358
|
+
# First generate regular token
|
|
359
|
+
token_data = self.generate_token(username, password, device_id, scope)
|
|
360
|
+
|
|
361
|
+
# Then encrypt it
|
|
362
|
+
encrypted_token = self.encrypt_token(token_data["access_token"], nonce)
|
|
363
|
+
|
|
364
|
+
# Add encrypted token to result
|
|
365
|
+
token_data["encrypted_token"] = encrypted_token
|
|
366
|
+
token_data["nonce"] = nonce
|
|
367
|
+
|
|
368
|
+
return token_data
|
|
369
|
+
|
|
278
370
|
def close(self):
|
|
279
371
|
"""Close the HTTP session."""
|
|
280
372
|
if self.session:
|
mc5_api_client/cli.py
CHANGED
|
@@ -438,19 +438,19 @@ class MC5CLI:
|
|
|
438
438
|
|
|
439
439
|
def _print_help(self):
|
|
440
440
|
"""Print help information."""
|
|
441
|
-
self._print("
|
|
441
|
+
self._print("MC5 API Client CLI", "cyan")
|
|
442
442
|
self._print("=" * 30, "cyan")
|
|
443
443
|
self._print("\nAvailable commands:", "yellow")
|
|
444
444
|
self._print(" --help, -h Show this help message")
|
|
445
445
|
self._print(" version Show version information")
|
|
446
|
-
self._print("\
|
|
446
|
+
self._print("\nFor more examples, see the README.md file!", "green")
|
|
447
447
|
|
|
448
448
|
def _print_version(self):
|
|
449
449
|
"""Print version information."""
|
|
450
|
-
self._print("
|
|
451
|
-
self._print("
|
|
452
|
-
self._print("
|
|
453
|
-
self._print("
|
|
450
|
+
self._print("MC5 API Client v1.0.11", "cyan")
|
|
451
|
+
self._print("The ultimate Modern Combat 5 API library", "green")
|
|
452
|
+
self._print("Author: Chizoba", "blue")
|
|
453
|
+
self._print("Email: chizoba2026@hotmail.com", "blue")
|
|
454
454
|
|
|
455
455
|
|
|
456
456
|
def main():
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mc5_api_client
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.11
|
|
4
4
|
Summary: A comprehensive Python library for interacting with the Modern Combat 5 API
|
|
5
5
|
Home-page: https://pypi.org/project/mc5-api-client/
|
|
6
6
|
Author: Chizoba
|
|
@@ -413,15 +413,16 @@ try: except MC5APIError:
|
|
|
413
413
|
### **🚀 Install from PyPI (Recommended)**
|
|
414
414
|
|
|
415
415
|
```bash
|
|
416
|
-
pip install mc5_api_client==1.0.
|
|
416
|
+
pip install mc5_api_client==1.0.10
|
|
417
417
|
```
|
|
418
418
|
|
|
419
|
-
✅ **Published and Available!** The MC5 API Client v1.0.
|
|
419
|
+
✅ **Published and Available!** The MC5 API Client v1.0.10 is now live on PyPI with advanced automation features and admin capabilities!
|
|
420
420
|
|
|
421
421
|
### **� Install from Local Package**
|
|
422
422
|
|
|
423
423
|
```bash
|
|
424
424
|
# Install the wheel file you just created
|
|
425
|
+
pip install dist/mc5_api_client-1.0.10-py3-none-any.whl
|
|
425
426
|
pip install dist/mc5_api_client-1.0.8-py3-none-any.whl
|
|
426
427
|
|
|
427
428
|
# Or install from source
|
|
@@ -809,112 +810,101 @@ for event in events:
|
|
|
809
810
|
print(f" Task {i+1}: {points} points")
|
|
810
811
|
```
|
|
811
812
|
|
|
812
|
-
###
|
|
813
|
+
### 🔐 **Encrypted Token Support**
|
|
813
814
|
|
|
814
|
-
|
|
815
|
+
For users who prefer additional security, the module now supports token encryption:
|
|
815
816
|
|
|
816
817
|
```python
|
|
817
|
-
|
|
818
|
-
leaderboard = client.get_leaderboard("ro")
|
|
819
|
-
print(f"Top {len(leaderboard.get('players', []))} players")
|
|
818
|
+
from mc5_api_client import quick_generate_encrypted_token, quick_encrypt_token
|
|
820
819
|
|
|
821
|
-
#
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
The CLI tool is like having a remote control for MC5! Here are all the commands:
|
|
820
|
+
# Generate and encrypt a token in one step
|
|
821
|
+
encrypted_data = quick_generate_encrypted_token(
|
|
822
|
+
username="anonymous:d2luOF92M18xNzcwMDUxNjkwXy7H33aeTVB4YZictyDq48c=",
|
|
823
|
+
password="sSJKzhQ5l4vrFgov",
|
|
824
|
+
nonce="*" # Custom nonce value (optional)
|
|
825
|
+
)
|
|
828
826
|
|
|
829
|
-
|
|
827
|
+
print(f"Token ID: {encrypted_data['token_id']}")
|
|
828
|
+
print(f"Encrypted Token: {encrypted_data['encrypted_token']}")
|
|
829
|
+
print(f"Expires: {encrypted_data['expires_at']}")
|
|
830
830
|
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
831
|
+
# Encrypt an existing token
|
|
832
|
+
existing_token = "your_raw_access_token_here"
|
|
833
|
+
encrypted_token = quick_encrypt_token(existing_token, "*")
|
|
834
|
+
print(f"Encrypted: {encrypted_token}")
|
|
834
835
|
```
|
|
835
836
|
|
|
836
|
-
**
|
|
837
|
-
```bash
|
|
838
|
-
mc5 generate-admin-token --save
|
|
839
|
-
```
|
|
837
|
+
**Advanced TokenGenerator Usage:**
|
|
840
838
|
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
mc5 validate-token
|
|
844
|
-
```
|
|
845
|
-
|
|
846
|
-
### 🏰 Clan Management
|
|
847
|
-
|
|
848
|
-
**Search for clans:**
|
|
849
|
-
```bash
|
|
850
|
-
mc5 clan search "Elite" --limit 10
|
|
851
|
-
```
|
|
839
|
+
```python
|
|
840
|
+
from mc5_api_client import TokenGenerator
|
|
852
841
|
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
842
|
+
# Create token generator with custom settings
|
|
843
|
+
token_gen = TokenGenerator(
|
|
844
|
+
encrypt_url="https://eur-janus.gameloft.com/encrypt_token"
|
|
845
|
+
)
|
|
857
846
|
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
847
|
+
try:
|
|
848
|
+
# Generate encrypted token
|
|
849
|
+
result = token_gen.generate_encrypted_token(
|
|
850
|
+
username="anonymous:credential",
|
|
851
|
+
password="password",
|
|
852
|
+
nonce="custom_nonce"
|
|
853
|
+
)
|
|
854
|
+
|
|
855
|
+
# Or encrypt existing token
|
|
856
|
+
encrypted = token_gen.encrypt_token(
|
|
857
|
+
access_token="raw_token",
|
|
858
|
+
nonce="custom_nonce"
|
|
859
|
+
)
|
|
860
|
+
|
|
861
|
+
finally:
|
|
862
|
+
token_gen.close() # Always close the session
|
|
861
863
|
```
|
|
862
864
|
|
|
863
|
-
**
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
865
|
+
**Security Benefits:**
|
|
866
|
+
- ✅ **Additional Layer**: Tokens are encrypted before transmission
|
|
867
|
+
- ✅ **Custom Nonce**: Support for custom nonce values
|
|
868
|
+
- ✅ **Backward Compatible**: Works with existing authentication flow
|
|
869
|
+
- ✅ **Error Handling**: Proper validation and error recovery
|
|
867
870
|
|
|
868
|
-
**
|
|
869
|
-
```bash
|
|
870
|
-
mc5 clan invite your-clan-id "anonymous:player_credential" --role officer
|
|
871
|
-
```
|
|
871
|
+
### 🏆 **Checking Leaderboards**
|
|
872
872
|
|
|
873
|
-
|
|
874
|
-
```bash
|
|
875
|
-
mc5 clan applications your-clan-id
|
|
876
|
-
mc5 clan accept your-clan-id "anonymous:applicant" --role member
|
|
877
|
-
mc5 clan reject your-clan-id "anonymous:applicant"
|
|
878
|
-
```
|
|
873
|
+
See how you stack up:
|
|
879
874
|
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
mc5 clan apply target-clan-id --message "Let me join your squad!"
|
|
883
|
-
```
|
|
875
|
+
```python
|
|
876
|
+
from mc5_api_client import MC5Client
|
|
884
877
|
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
878
|
+
# Test that the method exists
|
|
879
|
+
client = MC5Client()
|
|
880
|
+
if hasattr(client, 'get_leaderboard'):
|
|
881
|
+
print("✅ get_leaderboard method available")
|
|
882
|
+
|
|
883
|
+
# You would need to authenticate first:
|
|
884
|
+
# client.authenticate('username', 'password')
|
|
885
|
+
# leaderboard = client.get_leaderboard("ro")
|
|
886
|
+
# print(f"Top {len(leaderboard.get('players', []))} players")
|
|
887
|
+
else:
|
|
888
|
+
print("❌ get_leaderboard method not found")
|
|
888
889
|
```
|
|
889
890
|
|
|
890
|
-
|
|
891
|
-
```bash
|
|
892
|
-
mc5 clan leaderboard your-clan-id
|
|
893
|
-
```
|
|
891
|
+
### 🖥️ CLI Commands - Currently Available
|
|
894
892
|
|
|
895
|
-
|
|
893
|
+
The CLI tool provides basic functionality with these commands:
|
|
896
894
|
|
|
897
|
-
**See your saved info:**
|
|
898
895
|
```bash
|
|
899
|
-
|
|
900
|
-
|
|
896
|
+
# Show help information
|
|
897
|
+
python -m mc5_api_client.cli --help
|
|
901
898
|
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
mc5 clear-config
|
|
899
|
+
# Show version information
|
|
900
|
+
python -m mc5_api_client.cli version
|
|
905
901
|
```
|
|
906
902
|
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
```bash
|
|
911
|
-
mc5 --debug generate-token --username "..." --password "..."
|
|
912
|
-
```
|
|
903
|
+
**Current Available Commands:**
|
|
904
|
+
- `--help, -h` - Show help message
|
|
905
|
+
- `version` - Show version information
|
|
913
906
|
|
|
914
|
-
**
|
|
915
|
-
```bash
|
|
916
|
-
mc5 --no-banner validate-token
|
|
917
|
-
```
|
|
907
|
+
**Note**: Advanced CLI commands (token management, clan operations) are planned features for future versions. The current CLI provides basic help and version functionality.
|
|
918
908
|
|
|
919
909
|
## 🔧 Where Does Everything Get Saved?
|
|
920
910
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
mc5_api_client/__init__.py,sha256=vJQmJ58TMBZ6Qeko7J9mQJht_71bwc7obVQtNrvkFQY,3296
|
|
2
|
+
mc5_api_client/admin_client.py,sha256=527aavolxVhY2M5ceFxVbbE5YTczU9Z86Fdt1UzdRZM,15220
|
|
3
|
+
mc5_api_client/auth.py,sha256=z8vmyQIHUdAzk0pUyKCesT8gTv4jboLIFGBxAu1v_-8,13396
|
|
4
|
+
mc5_api_client/cli.py,sha256=D5RTwRQJz86xf8Ocqj0Zr4O3BjPIj6_kbChEeF-ha5g,17255
|
|
5
|
+
mc5_api_client/client.py,sha256=q5PkdpTXjWCXdLFiK1-zqa7fThJGE4Z99A3ccMfwJIY,79239
|
|
6
|
+
mc5_api_client/exceptions.py,sha256=o7od4GrEIlgq6xSNUjZdh74xoDTytF3PLcMq5ewRiJw,2683
|
|
7
|
+
mc5_api_client/help.py,sha256=sqf3R6VHQuSYLvAMzh8nXAgCX5URsvXydvw8P0ATabg,7246
|
|
8
|
+
mc5_api_client/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
+
mc5_api_client/simple_client.py,sha256=31JI2rURHIXKcnDXQYJNpr-gypweO56ANFdhD-Z4Ft0,20241
|
|
10
|
+
mc5_api_client-1.0.11.dist-info/licenses/LICENSE,sha256=M0UBQ4B3pB9XcV54_jhVP681xyauF8GB6YK_rKmuXzk,1064
|
|
11
|
+
mc5_api_client-1.0.11.dist-info/METADATA,sha256=q6squlB7kiIgfioZBPKfPWniTFXoV8I-2rTKgZQyX6k,54718
|
|
12
|
+
mc5_api_client-1.0.11.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
13
|
+
mc5_api_client-1.0.11.dist-info/entry_points.txt,sha256=2kruOpleFYK3Jl1MoQwGyqCd-Pj4kQWngXmIjnXx_gE,48
|
|
14
|
+
mc5_api_client-1.0.11.dist-info/top_level.txt,sha256=eYJe4ue9j1ig_jFY5Z05mDqpizUEV7TYpk5lBXVd4kA,15
|
|
15
|
+
mc5_api_client-1.0.11.dist-info/RECORD,,
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
mc5_api_client/__init__.py,sha256=nEPnDWX7LtB9vDyBfNqBFDNP9Wskusav6Z0IM1SvI8Y,1711
|
|
2
|
-
mc5_api_client/admin_client.py,sha256=527aavolxVhY2M5ceFxVbbE5YTczU9Z86Fdt1UzdRZM,15220
|
|
3
|
-
mc5_api_client/auth.py,sha256=Yj_6s8KmtbswWbR6q816d8soIirUF2aD_KWxg-jNqR0,9978
|
|
4
|
-
mc5_api_client/cli.py,sha256=KegNTxwq28gu_vrffc_cXcALrHzUBDHd-5DqKyYp4p0,17284
|
|
5
|
-
mc5_api_client/client.py,sha256=q5PkdpTXjWCXdLFiK1-zqa7fThJGE4Z99A3ccMfwJIY,79239
|
|
6
|
-
mc5_api_client/exceptions.py,sha256=o7od4GrEIlgq6xSNUjZdh74xoDTytF3PLcMq5ewRiJw,2683
|
|
7
|
-
mc5_api_client/help.py,sha256=sqf3R6VHQuSYLvAMzh8nXAgCX5URsvXydvw8P0ATabg,7246
|
|
8
|
-
mc5_api_client/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
-
mc5_api_client/simple_client.py,sha256=31JI2rURHIXKcnDXQYJNpr-gypweO56ANFdhD-Z4Ft0,20241
|
|
10
|
-
mc5_api_client-1.0.9.dist-info/licenses/LICENSE,sha256=M0UBQ4B3pB9XcV54_jhVP681xyauF8GB6YK_rKmuXzk,1064
|
|
11
|
-
mc5_api_client-1.0.9.dist-info/METADATA,sha256=BvCujXZkPKOGRs-_BMiQRyjtmZlJH4yHg0r76XMXGs4,53906
|
|
12
|
-
mc5_api_client-1.0.9.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
13
|
-
mc5_api_client-1.0.9.dist-info/entry_points.txt,sha256=2kruOpleFYK3Jl1MoQwGyqCd-Pj4kQWngXmIjnXx_gE,48
|
|
14
|
-
mc5_api_client-1.0.9.dist-info/top_level.txt,sha256=eYJe4ue9j1ig_jFY5Z05mDqpizUEV7TYpk5lBXVd4kA,15
|
|
15
|
-
mc5_api_client-1.0.9.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|