xync-client 0.0.57.dev15__tar.gz → 0.0.57.dev19__tar.gz
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.
- {xync_client-0.0.57.dev15/xync_client.egg-info → xync_client-0.0.57.dev19}/PKG-INFO +1 -1
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/pyproject.toml +1 -1
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Bybit/agent.py +42 -31
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Bybit/etype/order.py +2 -2
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19/xync_client.egg-info}/PKG-INFO +1 -1
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/.env.sample +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/.gitignore +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/.pre-commit-config.yaml +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/README.md +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/makefile +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/setup.cfg +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/tests/TestAgent.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/tests/TestAsset.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/tests/TestEx.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/tests/TestOrder.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/tests/_todo_refact/Binance/test_binance.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/tests/_todo_refact/Bybit/test_bybit.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/tests/_todo_refact/Bybit/test_bybit_p2p.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/tests/_todo_refact/Gate/test_gate.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/tests/_todo_refact/Htx/test_htx_p2p.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/tests/_todo_refact/Wallet/test_agent.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/tests/_todo_refact/Wallet/test_ex.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/tests/_todo_refact/__init__.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/tests/_todo_refact/_test_ex.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Abc/Agent.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Abc/Asset.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Abc/Auth.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Abc/BaseTest.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Abc/Ex.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Abc/InAgent.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Abc/Order.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Abc/xtype.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Binance/__init__.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Binance/binance_async.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Binance/earn_api.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Binance/etype/ad.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Binance/etype/pm.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Binance/ex.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Binance/exceptions.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Binance/sapi.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Binance/web_c2c.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/BingX/__init__.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/BingX/agent.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/BingX/base.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/BingX/etype/ad.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/BingX/etype/pm.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/BingX/ex.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/BingX/req.mjs +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/BingX/sign.js +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/BitGet/__init__.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/BitGet/agent.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/BitGet/etype/ad.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/BitGet/ex.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/BitPapa/ex.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Bybit/InAgent.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Bybit/etype/ad.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Bybit/etype/cred.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Bybit/ex.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Bybit/order.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Bybit/web_earn.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Bybit/web_p2p.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Bybit/ws.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Gate/etype/ad.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Gate/ex.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Gate/premarket.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Gmail/__init__.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Htx/agent.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Htx/earn.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Htx/etype/__init__.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Htx/etype/ad.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Htx/etype/cred.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Htx/etype/pm.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Htx/etype/test.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Htx/ex.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/KuCoin/etype/ad.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/KuCoin/etype/pm.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/KuCoin/ex.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/KuCoin/web.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Mexc/etype/ad.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Mexc/etype/pm.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Mexc/ex.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Okx/etype/ad.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Okx/etype/pm.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Okx/ex.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Pms/.gitignore +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Pms/Alfa/__init__.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Pms/Alfa/state.json +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Pms/Ozon/__init__.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Pms/Sber/__init__.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Pms/Tinkoff/__init__.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Pms/Tinkoff/state.json +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Pms/Volet/__init__.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Pms/Volet/_todo_req/req.mjs +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Pms/Volet/_todo_req/req.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Pms/Volet/api.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Pms/Volet/pl.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/TgWallet/agent.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/TgWallet/asset.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/TgWallet/auth.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/TgWallet/ex.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/TgWallet/inAgent.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/TgWallet/order.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/TgWallet/pyd.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/TgWallet/pyro.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/TgWallet/web.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/__init__.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/loader.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/pm_unifier.py +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client.egg-info/SOURCES.txt +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client.egg-info/dependency_links.txt +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client.egg-info/requires.txt +0 -0
- {xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client.egg-info/top_level.txt +0 -0
|
@@ -43,7 +43,7 @@ Repository = "https://gitlab.com/XyncNet/client"
|
|
|
43
43
|
packages = ["xync_client"]
|
|
44
44
|
|
|
45
45
|
[build-system]
|
|
46
|
-
requires = ["setuptools
|
|
46
|
+
requires = ["setuptools<81", "setuptools-scm[toml]>=8"]
|
|
47
47
|
build-backend = "setuptools.build_meta"
|
|
48
48
|
[tool.setuptools_scm]
|
|
49
49
|
version_scheme = "python-simplified-semver" # if "feature" in `branch_name` SEMVER_MINOR++ else SEMVER_PATCH++
|
|
@@ -19,7 +19,7 @@ from x_model import init_db
|
|
|
19
19
|
from xync_schema import models
|
|
20
20
|
from xync_schema.enums import OrderStatus
|
|
21
21
|
|
|
22
|
-
from xync_schema.models import
|
|
22
|
+
from xync_schema.models import Actor, Cond, Direction, CondSim, Pmcur
|
|
23
23
|
|
|
24
24
|
from xync_client.Abc.Agent import BaseAgentClient
|
|
25
25
|
from xync_client.Abc.xtype import BaseOrderReq, FlatDict
|
|
@@ -89,14 +89,14 @@ class AgentClient(BaseAgentClient): # Bybit client
|
|
|
89
89
|
|
|
90
90
|
""" Private METHs"""
|
|
91
91
|
|
|
92
|
-
def fiat_new(self, payment_type: int, real_name: str, account_number: str) -> FlatDict:
|
|
93
|
-
method1 = self._post(
|
|
92
|
+
async def fiat_new(self, payment_type: int, real_name: str, account_number: str) -> FlatDict | None:
|
|
93
|
+
method1 = await self._post(
|
|
94
94
|
"/fiat/otc/user/payment/new_create",
|
|
95
95
|
{"paymentType": payment_type, "realName": real_name, "accountNo": account_number, "securityRiskToken": ""},
|
|
96
96
|
)
|
|
97
97
|
if srt := method1["result"]["securityRiskToken"]:
|
|
98
|
-
self._check_2fa(srt)
|
|
99
|
-
method2 = self._post(
|
|
98
|
+
await self._check_2fa(srt)
|
|
99
|
+
method2 = await self._post(
|
|
100
100
|
"/fiat/otc/user/payment/new_create",
|
|
101
101
|
{
|
|
102
102
|
"paymentType": payment_type,
|
|
@@ -107,20 +107,20 @@ class AgentClient(BaseAgentClient): # Bybit client
|
|
|
107
107
|
)
|
|
108
108
|
return method2
|
|
109
109
|
else:
|
|
110
|
-
|
|
110
|
+
return logging.exception(method1)
|
|
111
111
|
|
|
112
|
-
def get_payment_method(self, fiat_id: int = None) -> dict:
|
|
113
|
-
list_methods = self.
|
|
112
|
+
async def get_payment_method(self, fiat_id: int = None) -> dict:
|
|
113
|
+
list_methods = self.creds()
|
|
114
114
|
if fiat_id:
|
|
115
115
|
fiat = [m for m in list_methods if m["id"] == fiat_id][0]
|
|
116
116
|
return fiat
|
|
117
117
|
return list_methods[1]
|
|
118
118
|
|
|
119
|
-
def creds(self) ->
|
|
119
|
+
def creds(self) -> dict[int, CredEpyd]:
|
|
120
120
|
data = self.api.get_user_payment_types()
|
|
121
121
|
if data["ret_code"] > 0:
|
|
122
122
|
return data
|
|
123
|
-
return
|
|
123
|
+
return {credex.id: CredEpyd.model_validate(credex) for credex in data["result"]}
|
|
124
124
|
|
|
125
125
|
async def cred_epyd2db(self, ecdx: CredEpyd, pers_id: int = None, cur_id: int = None) -> models.CredEx | None:
|
|
126
126
|
if ecdx.paymentType in (416,):
|
|
@@ -216,10 +216,6 @@ class AgentClient(BaseAgentClient): # Bybit client
|
|
|
216
216
|
ads = [ad for ad in list_ads if set(ad["payments"]) - {"5", "51"}]
|
|
217
217
|
return float(ads[0]["price"])
|
|
218
218
|
|
|
219
|
-
async def my_fiats(self, cur: Cur = None):
|
|
220
|
-
upm = await self._post("/fiat/otc/user/payment/list")
|
|
221
|
-
return upm["result"]
|
|
222
|
-
|
|
223
219
|
def get_user_ads(self, active: bool = True) -> list:
|
|
224
220
|
uo = self._post("/fiat/otc/item/personal/list", {"page": "1", "size": "10", "status": "2" if active else "0"})
|
|
225
221
|
return uo["result"]["items"]
|
|
@@ -405,18 +401,26 @@ class AgentClient(BaseAgentClient): # Bybit client
|
|
|
405
401
|
)
|
|
406
402
|
except FailedRequestError as e:
|
|
407
403
|
if e.status_code == 10000:
|
|
408
|
-
await sleep(
|
|
404
|
+
await sleep(9)
|
|
405
|
+
await self.get_api_orders(page, begin_time, end_time, status, side, token_id)
|
|
409
406
|
ords = {int(o["id"]): OrderItem.model_validate(o) for o in lst["result"]["items"]}
|
|
410
407
|
for oid, o in ords.items():
|
|
411
408
|
fo = self.api.get_order_details(orderId=oid)
|
|
412
409
|
order = OrderFull.model_validate(fo["result"])
|
|
413
|
-
await sleep(
|
|
410
|
+
await sleep(1)
|
|
414
411
|
ad = Ad(**self.api.get_ad_details(itemId=order.itemId)["result"])
|
|
412
|
+
await sleep(1)
|
|
415
413
|
maker_name = o.buyerRealName, o.sellerRealName
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
414
|
+
im_maker = int(order.makerUserId == o.userId)
|
|
415
|
+
taker_id = (o.userId, o.targetUserId)[im_maker]
|
|
416
|
+
taker_person = await self.person_upsert(maker_name[::-1][ad.side], taker_id)
|
|
417
|
+
im_seller = o.side == im_maker
|
|
418
|
+
if not im_maker:
|
|
419
|
+
...
|
|
420
|
+
seller_person = (
|
|
421
|
+
self.actor.person if im_seller else await self.person_upsert(o.sellerRealName, int(o.targetUserId))
|
|
422
|
+
)
|
|
423
|
+
taker_nick = (self.actor.name, o.targetNickName)[im_maker] # todo: check
|
|
420
424
|
ad_db, cond_isnew = await self.cond_upsert(ad, maker_name[ad.side], force=True)
|
|
421
425
|
if not ad_db:
|
|
422
426
|
...
|
|
@@ -457,7 +461,6 @@ class AgentClient(BaseAgentClient): # Bybit client
|
|
|
457
461
|
extra=extr,
|
|
458
462
|
)
|
|
459
463
|
credex = await models.CredEx.create(exid=ecredex.id, ex=self.ex_client.ex, cred=crd)
|
|
460
|
-
taker_person, _ = await Person.get_or_create(name=maker_name[::-1][ad.side])
|
|
461
464
|
try:
|
|
462
465
|
taker, _ = await Actor.get_or_create(
|
|
463
466
|
{"name": taker_nick, "person": taker_person}, ex=self.ex_client.ex, exid=taker_id
|
|
@@ -469,9 +472,9 @@ class AgentClient(BaseAgentClient): # Bybit client
|
|
|
469
472
|
"amount": o.amount,
|
|
470
473
|
"status": OrderStatus[Statuses(o.status).name],
|
|
471
474
|
"created_at": int(o.createDate[:-3]),
|
|
472
|
-
"payed_at": order.transferDate != "0" and int(order.transferDate[:-3]),
|
|
473
|
-
"confirmed_at": Statuses(o.status) == Statuses.completed and int(order.updateDate[:-3]),
|
|
474
|
-
"appealed_at": o.status == 30 and int(order.updateDate[:-3]),
|
|
475
|
+
"payed_at": order.transferDate != "0" and int(order.transferDate[:-3]) or None,
|
|
476
|
+
"confirmed_at": Statuses(o.status) == Statuses.completed and int(order.updateDate[:-3]) or None,
|
|
477
|
+
"appealed_at": o.status == 30 and int(order.updateDate[:-3]) or None,
|
|
475
478
|
"cred_id": ecredex.paymentType and credex.cred_id or None,
|
|
476
479
|
"taker": taker,
|
|
477
480
|
},
|
|
@@ -479,9 +482,9 @@ class AgentClient(BaseAgentClient): # Bybit client
|
|
|
479
482
|
ad=ad_db,
|
|
480
483
|
)
|
|
481
484
|
dmsgs = self.api.get_chat_messages(orderId=oid, size=200)["result"]["result"][::-1]
|
|
482
|
-
if ad.remark != dmsgs.pop(0)["message"]:
|
|
483
|
-
logging.exception(ad.remark)
|
|
484
485
|
msgs = [Message.model_validate(m) for m in dmsgs if m["msgType"] in (1, 2, 7, 8)]
|
|
486
|
+
if ad.remark:
|
|
487
|
+
msgs.pop(0)
|
|
485
488
|
msgs_db = [
|
|
486
489
|
models.Msg(
|
|
487
490
|
order=order_db,
|
|
@@ -611,7 +614,7 @@ class AgentClient(BaseAgentClient): # Bybit client
|
|
|
611
614
|
_res = self.ad_upd(req)
|
|
612
615
|
else:
|
|
613
616
|
raise e
|
|
614
|
-
elif ExcCode(e.status_code) == ExcCode.
|
|
617
|
+
elif ExcCode(e.status_code) == ExcCode.InsufficientBalance:
|
|
615
618
|
asset = await models.Asset.get(addr__actor=self.actor, addr__coin_id=coinex.coin_id)
|
|
616
619
|
req.quantity = round(asset.free - (asset.freeze or 0) - (asset.lock or 0), coinex.coin.scale)
|
|
617
620
|
_res = self.ad_upd(req)
|
|
@@ -750,7 +753,7 @@ class AgentClient(BaseAgentClient): # Bybit client
|
|
|
750
753
|
await old_ad.fetch_related("cond")
|
|
751
754
|
return old_ad, False
|
|
752
755
|
# но это не она, значит у него есть другая объява с похожим, но чуть отличающимся текстом
|
|
753
|
-
logging.warning(f"ad#{ad.id}-cond#{old_cid} txt updated:\n{txt}\n|\
|
|
756
|
+
logging.warning(f"ad#{ad.id}-cond#{old_cid} txt updated:\n{txt}\n|\nV\n{cleaned}")
|
|
754
757
|
|
|
755
758
|
new_cond = await Cond.create(raw_txt=cleaned)
|
|
756
759
|
self.all_conds[new_cond.id] = new_cond.raw_txt, {ad.userId}
|
|
@@ -760,12 +763,20 @@ class AgentClient(BaseAgentClient): # Bybit client
|
|
|
760
763
|
|
|
761
764
|
return await self.ad_create(ad, new_cond.id), True
|
|
762
765
|
|
|
766
|
+
async def person_upsert(self, name: str, exid: int) -> models.Person:
|
|
767
|
+
if actor := await models.Actor.get_or_none(exid=exid, ex=self.ex_client.ex).prefetch_related("person"):
|
|
768
|
+
if not actor.person:
|
|
769
|
+
actor.person = await models.Person.create(name=name)
|
|
770
|
+
await actor.save()
|
|
771
|
+
return actor.person
|
|
772
|
+
return await models.Person.create(name=name)
|
|
773
|
+
|
|
763
774
|
async def ad_create(self, ad: Ad, cid: int, rname: str = None, dr: Direction = None) -> models.Ad:
|
|
764
775
|
act_df = {}
|
|
765
776
|
if int(ad.userId) != self.actor.exid:
|
|
766
777
|
act_df |= {"name": ad.nickName}
|
|
767
778
|
if rname:
|
|
768
|
-
act_df |= {"person":
|
|
779
|
+
act_df |= {"person": await self.person_upsert(rname, int(ad.userId))}
|
|
769
780
|
actor, _ = await Actor.update_or_create(act_df, exid=ad.userId, ex=self.ex_client.ex)
|
|
770
781
|
ad_db = await models.Ad.create(
|
|
771
782
|
price=ad.price,
|
|
@@ -877,7 +888,7 @@ def listen(data: dict):
|
|
|
877
888
|
class ExcCode(IntEnum):
|
|
878
889
|
FixPriceLimit = 912120022
|
|
879
890
|
RareLimit = 912120050
|
|
880
|
-
|
|
891
|
+
InsufficientBalance = 912120024
|
|
881
892
|
Timestamp = 10002
|
|
882
893
|
IP = 10010
|
|
883
894
|
Quantity = 912300019
|
|
@@ -918,7 +929,7 @@ async def main():
|
|
|
918
929
|
cl.battle(usdc, rub, True, ["volet"], 79),
|
|
919
930
|
cl.take(usdt, rub, False, ceil=80.5, volume=360),
|
|
920
931
|
cl.take(usdt, rub, True, ceil=80.5, volume=360),
|
|
921
|
-
cl.get_api_orders(
|
|
932
|
+
cl.get_api_orders(48),
|
|
922
933
|
)
|
|
923
934
|
|
|
924
935
|
bor = BaseOrderReq(
|
|
@@ -154,7 +154,7 @@ class OrderItem(BaseModel):
|
|
|
154
154
|
notifyTokenId: str
|
|
155
155
|
fee: str
|
|
156
156
|
targetNickName: str
|
|
157
|
-
targetUserId: str
|
|
157
|
+
targetUserId: str # не я
|
|
158
158
|
status: Literal[
|
|
159
159
|
5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110
|
|
160
160
|
] # 5: waiting for chain (only web3), 10: waiting for buyer to pay, 20: waiting for seller to release, 30: appealing, 40: order cancelled, 50: order finished, 60: paying (only when paying online), 70: pay fail (only when paying online), 80: exception cancelled (the coin convert to other coin, only hotswap), 90: waiting for buyer to select tokenId, 100: objectioning, 110: waiting for the user to raise an objection
|
|
@@ -162,7 +162,7 @@ class OrderItem(BaseModel):
|
|
|
162
162
|
createDate: str
|
|
163
163
|
transferLastSeconds: str
|
|
164
164
|
appealLastSeconds: str
|
|
165
|
-
userId: str
|
|
165
|
+
userId: str # я
|
|
166
166
|
sellerRealName: str
|
|
167
167
|
buyerRealName: str
|
|
168
168
|
judgeInfo: JudgeInfo
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/tests/_todo_refact/Binance/test_binance.py
RENAMED
|
File without changes
|
{xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/tests/_todo_refact/Bybit/test_bybit.py
RENAMED
|
File without changes
|
{xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/tests/_todo_refact/Bybit/test_bybit_p2p.py
RENAMED
|
File without changes
|
|
File without changes
|
{xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/tests/_todo_refact/Htx/test_htx_p2p.py
RENAMED
|
File without changes
|
{xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/tests/_todo_refact/Wallet/test_agent.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Pms/Volet/_todo_req/req.mjs
RENAMED
|
File without changes
|
{xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client/Pms/Volet/_todo_req/req.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xync_client-0.0.57.dev15 → xync_client-0.0.57.dev19}/xync_client.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|