mirror of
https://github.com/vibe-existing/pyfragment.git
synced 2026-07-25 15:04:33 +00:00
d2d046a2b9
- Rename app/ → fragmentapi/ for proper package naming - Add FragmentClient class with gift_premium, gift_stars, topup_ton methods - Restructure core/ → types/ (exceptions, results, constants) - Merge utils/hash.py into utils/client.py - Replace _version.py with importlib.metadata - Add input validation with min/max bounds - Add unit tests: decode, client init/cookies - Rename 002_test_hash → 003_test_hash - Clean up pyproject.toml: pin deps, production classifiers
21 lines
573 B
Python
21 lines
573 B
Python
import base64
|
|
|
|
from pytoniq_core import Cell
|
|
|
|
from fragmentapi.types import RequestError
|
|
|
|
|
|
def clean_decode(payload: str) -> str:
|
|
s = payload.strip()
|
|
if not s:
|
|
return ""
|
|
s += "=" * (-len(s) % 4)
|
|
try:
|
|
boc = base64.b64decode(s)
|
|
cell = Cell.one_from_boc(boc)
|
|
sl = cell.begin_parse()
|
|
sl.load_uint(32) # op code — always 0 for text comment
|
|
return sl.load_snake_string().strip()
|
|
except Exception as exc:
|
|
raise RequestError(RequestError.UNPARSEABLE.format(context="payload decode", exc=exc)) from exc
|