mirror of
https://github.com/bohd4nx/FragmentAPI.git
synced 2026-07-25 06:14:29 +00:00
feat: Refactor configuration handling and enhance logging setup; update imports and improve error handling in API methods
This commit is contained in:
+19
-27
@@ -6,36 +6,34 @@ import httpx
|
||||
from tonutils.client import TonapiClient
|
||||
from tonutils.wallet import WalletV5R1
|
||||
|
||||
from app.core.config import Config
|
||||
from app.utils import TransactionProcessor, WalletLinker, ApiClient, clean_decode
|
||||
from app.core import config
|
||||
from app.utils import TransactionProcessor, WalletLinker, ApiClient, clean_decode, parse_json_response
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class FragmentTon:
|
||||
def __init__(self):
|
||||
config_reader = Config()
|
||||
self.config = config_reader.get_config()
|
||||
|
||||
self.headers = {
|
||||
'accept': 'application/json, text/javascript, */*; q=0.01',
|
||||
'accept-encoding': 'gzip, deflate, br, zstd',
|
||||
'accept-language': 'en-US,en;q=0.9,uk;q=0.8,ru;q=0.7',
|
||||
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
|
||||
'cookie': self.config['cookies'],
|
||||
'cookie': config.COOKIES,
|
||||
'origin': 'https://fragment.com',
|
||||
'referer': 'https://fragment.com/ads/topup',
|
||||
'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1',
|
||||
'x-requested-with': 'XMLHttpRequest'
|
||||
}
|
||||
|
||||
self.transaction_processor = TransactionProcessor(self.config, clean_decode)
|
||||
self.wallet_linker = WalletLinker(self.config, self.headers, self.transaction_processor)
|
||||
self.api_client = ApiClient(self.config, self.headers, self.wallet_linker)
|
||||
self.transaction_processor = TransactionProcessor(clean_decode)
|
||||
self.wallet_linker = WalletLinker(self.headers, self.transaction_processor)
|
||||
self.api_client = ApiClient(self.headers, self.wallet_linker)
|
||||
|
||||
async def _get_account_info(self):
|
||||
client = TonapiClient(api_key=self.config['api_key'], is_testnet=False)
|
||||
wallet, pub_key, _, _ = WalletV5R1.from_mnemonic(client=client, mnemonic=self.config['seed'])
|
||||
@staticmethod
|
||||
async def _get_account_info():
|
||||
client = TonapiClient(api_key=config.API_KEY, is_testnet=False)
|
||||
wallet, pub_key, _, _ = WalletV5R1.from_mnemonic(client=client, mnemonic=config.SEED)
|
||||
boc = wallet.state_init.serialize().to_boc()
|
||||
|
||||
return {
|
||||
@@ -53,34 +51,28 @@ class FragmentTon:
|
||||
|
||||
async with httpx.AsyncClient() as client:
|
||||
update_data = {"mode": "new", "method": "updateAdsTopupState"}
|
||||
await client.post(f"https://fragment.com/api?hash={self.config['hash']}",
|
||||
await client.post(f"https://fragment.com/api?hash={config.HASH}",
|
||||
headers=self.headers, data=update_data)
|
||||
|
||||
search_data = {"query": username, "method": "searchAdsTopupRecipient"}
|
||||
search_resp = await client.post(f"https://fragment.com/api?hash={self.config['hash']}",
|
||||
search_resp = await client.post(f"https://fragment.com/api?hash={config.HASH}",
|
||||
headers=self.headers, data=search_data)
|
||||
|
||||
try:
|
||||
search_result = search_resp.json()
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to parse search response: {e}")
|
||||
return {"success": False, "error": f"Invalid response from Fragment API: {str(e)}"}
|
||||
search_result, error = parse_json_response(search_resp, logger, "search")
|
||||
if search_result is None:
|
||||
return {"success": False, "error": f"Invalid response from Fragment API: {error}"}
|
||||
|
||||
recipient = search_result.get("found", {}).get("recipient")
|
||||
if not recipient:
|
||||
return {"success": False, "error": "User not found"}
|
||||
|
||||
init_data = {"recipient": recipient, "amount": amount, "method": "initAdsTopupRequest"}
|
||||
init_resp = await client.post(f"https://fragment.com/api?hash={self.config['hash']}",
|
||||
init_resp = await client.post(f"https://fragment.com/api?hash={config.HASH}",
|
||||
headers=self.headers, data=init_data)
|
||||
|
||||
try:
|
||||
init_result = init_resp.json()
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to parse init response: {e}")
|
||||
logger.error(f"Response status: {init_resp.status_code}")
|
||||
logger.error(f"Response content: {init_resp.content[:200]}")
|
||||
return {"success": False, "error": f"Invalid response from Fragment API: {str(e)}"}
|
||||
init_result, error = parse_json_response(init_resp, logger, "init")
|
||||
if init_result is None:
|
||||
return {"success": False, "error": f"Invalid response from Fragment API: {error}"}
|
||||
|
||||
req_id = init_result.get("req_id")
|
||||
if not req_id:
|
||||
|
||||
Reference in New Issue
Block a user