mirror of
https://github.com/vibe-existing/pyfragment.git
synced 2026-07-25 06:54:31 +00:00
4e03d2e2f6
- Security & validation: tighten hash regex, add HTTP timeouts to all requests, pass client.timeout through get_fragment_hash and AsyncClient - Constants: move all constants to types/constants.py; remove re-exports from types/__init__.py; add DEFAULT_TIMEOUT, REQUIRED_COOKIE_KEYS - FragmentClient: add timeout param (default 30 s); async-context-manager support; remove WALLET_CLASSES from public API - Exceptions: remove dead INVALID_USERNAME constant (Fragment validates server-side); keep full hierarchy intact - Tests: add 006_test_methods_mock.py (6 mock tests for all 3 methods); DRY-refactor 004_test_balance.py (_patch_wallet context manager); clean up 005_test_methods.py (remove fragile network test, rename tests) - Examples: switch all 4 examples to async-with; align error messages; replace %-format with f-strings - README: rewrite usage section with single comprehensive async-with example covering all 3 methods and full exception hierarchy - CI: add mypy step to lint job; add pytest-mock and mypy to dev deps; set FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 on all jobs; fix COOKIES_JSON to job-level env var
37 lines
884 B
Python
37 lines
884 B
Python
"""
|
|
Example: fetch wallet address, state, and balance.
|
|
|
|
Cookies can be passed as a dict or as a JSON string.
|
|
wallet_version defaults to "V5R1" — change to "V4R2" for older wallets.
|
|
"""
|
|
|
|
import asyncio
|
|
|
|
from pyfragment import FragmentClient
|
|
|
|
SEED = "word1 word2 ... word24"
|
|
API_KEY = "YOUR_TONAPI_KEY"
|
|
COOKIES = {
|
|
"stel_ssid": "YOUR_STEL_SSID",
|
|
"stel_dt": "YOUR_STEL_DT",
|
|
"stel_token": "YOUR_STEL_TOKEN",
|
|
"stel_ton_token": "YOUR_STEL_TON_TOKEN",
|
|
}
|
|
|
|
|
|
async def main() -> None:
|
|
async with FragmentClient(
|
|
seed=SEED,
|
|
api_key=API_KEY,
|
|
cookies=COOKIES,
|
|
wallet_version="V5R1", # or "V4R2"
|
|
) as client:
|
|
wallet = await client.get_wallet()
|
|
print(f"Address: {wallet.address}")
|
|
print(f"State: {wallet.state}")
|
|
print(f"Balance: {wallet.balance} TON")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|