xync-client 0.0.57.dev13__tar.gz → 0.0.57.dev14__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.dev13/xync_client.egg-info → xync_client-0.0.57.dev14}/PKG-INFO +1 -1
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Bybit/agent.py +78 -59
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Bybit/etype/cred.py +6 -6
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Bybit/etype/order.py +5 -3
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14/xync_client.egg-info}/PKG-INFO +1 -1
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/.env.sample +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/.gitignore +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/.pre-commit-config.yaml +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/README.md +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/makefile +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/pyproject.toml +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/setup.cfg +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/tests/TestAgent.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/tests/TestAsset.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/tests/TestEx.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/tests/TestOrder.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/tests/_todo_refact/Binance/test_binance.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/tests/_todo_refact/Bybit/test_bybit.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/tests/_todo_refact/Bybit/test_bybit_p2p.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/tests/_todo_refact/Gate/test_gate.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/tests/_todo_refact/Htx/test_htx_p2p.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/tests/_todo_refact/Wallet/test_agent.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/tests/_todo_refact/Wallet/test_ex.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/tests/_todo_refact/__init__.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/tests/_todo_refact/_test_ex.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Abc/Agent.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Abc/Asset.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Abc/Auth.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Abc/BaseTest.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Abc/Ex.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Abc/InAgent.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Abc/Order.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Abc/xtype.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Binance/__init__.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Binance/binance_async.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Binance/earn_api.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Binance/etype/ad.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Binance/etype/pm.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Binance/ex.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Binance/exceptions.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Binance/sapi.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Binance/web_c2c.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/BingX/__init__.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/BingX/agent.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/BingX/base.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/BingX/etype/ad.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/BingX/etype/pm.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/BingX/ex.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/BingX/req.mjs +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/BingX/sign.js +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/BitGet/__init__.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/BitGet/agent.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/BitGet/etype/ad.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/BitGet/ex.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/BitPapa/ex.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Bybit/InAgent.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Bybit/etype/ad.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Bybit/ex.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Bybit/order.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Bybit/web_earn.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Bybit/web_p2p.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Bybit/ws.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Gate/etype/ad.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Gate/ex.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Gate/premarket.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Gmail/__init__.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Htx/agent.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Htx/earn.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Htx/etype/__init__.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Htx/etype/ad.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Htx/etype/cred.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Htx/etype/pm.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Htx/etype/test.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Htx/ex.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/KuCoin/etype/ad.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/KuCoin/etype/pm.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/KuCoin/ex.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/KuCoin/web.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Mexc/etype/ad.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Mexc/etype/pm.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Mexc/ex.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Okx/etype/ad.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Okx/etype/pm.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Okx/ex.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Pms/.gitignore +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Pms/Alfa/__init__.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Pms/Alfa/state.json +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Pms/Ozon/__init__.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Pms/Sber/__init__.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Pms/Tinkoff/__init__.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Pms/Tinkoff/state.json +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Pms/Volet/__init__.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Pms/Volet/_todo_req/req.mjs +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Pms/Volet/_todo_req/req.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Pms/Volet/api.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Pms/Volet/pl.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/TgWallet/agent.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/TgWallet/asset.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/TgWallet/auth.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/TgWallet/ex.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/TgWallet/inAgent.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/TgWallet/order.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/TgWallet/pyd.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/TgWallet/pyro.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/TgWallet/web.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/__init__.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/loader.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/pm_unifier.py +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client.egg-info/SOURCES.txt +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client.egg-info/dependency_links.txt +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client.egg-info/requires.txt +0 -0
- {xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client.egg-info/top_level.txt +0 -0
|
@@ -12,7 +12,7 @@ from asyncpg import ConnectionDoesNotExistError
|
|
|
12
12
|
from bybit_p2p import P2P
|
|
13
13
|
from bybit_p2p._exceptions import FailedRequestError
|
|
14
14
|
from pyro_client.client.file import FileClient
|
|
15
|
-
from tortoise.exceptions import IntegrityError
|
|
15
|
+
from tortoise.exceptions import IntegrityError, MultipleObjectsReturned
|
|
16
16
|
from tortoise.expressions import F, Q
|
|
17
17
|
from urllib3.exceptions import ReadTimeoutError
|
|
18
18
|
from x_model import init_db
|
|
@@ -122,41 +122,42 @@ class AgentClient(BaseAgentClient): # Bybit client
|
|
|
122
122
|
return data
|
|
123
123
|
return [CredEpyd.model_validate(credex) for credex in data["result"]]
|
|
124
124
|
|
|
125
|
-
async def cred_epyd2db(self,
|
|
126
|
-
if
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
)
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
)
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
125
|
+
async def cred_epyd2db(self, ecdx: CredEpyd, pers_id: int = None, cur_id: int = None) -> models.CredEx | None:
|
|
126
|
+
if ecdx.paymentType in (416,):
|
|
127
|
+
return None
|
|
128
|
+
if not (
|
|
129
|
+
pmex := await models.Pmex.get_or_none(exid=ecdx.paymentType, ex=self.ex_client.ex).prefetch_related(
|
|
130
|
+
"pm__curs"
|
|
131
|
+
)
|
|
132
|
+
):
|
|
133
|
+
raise HTTPException(f"No Pmex {ecdx.paymentType} on ex#{self.ex_client.ex.name}", 404)
|
|
134
|
+
if cred_old := await models.Cred.get_or_none(credexs__exid=ecdx.id, credexs__ex=self.actor.ex).prefetch_related(
|
|
135
|
+
"pmcur"
|
|
136
|
+
):
|
|
137
|
+
cur_id = cred_old.pmcur.cur_id
|
|
138
|
+
elif not cur_id: # is new Cred
|
|
139
|
+
cur_id = (
|
|
140
|
+
pmex.pm.df_cur_id
|
|
141
|
+
or (pmex.pm.country_id and await pmex.pm.country.cur_id)
|
|
142
|
+
or (ecdx.currencyBalance and await models.Cur.get_or_none(ticker=ecdx.currencyBalance[0]))
|
|
143
|
+
or (0 < len(pmex.pm.curs) < 20 and pmex.pm.curs[-1].id)
|
|
144
|
+
)
|
|
145
|
+
if not cur_id:
|
|
146
|
+
raise Exception(f"Set default cur for {pmex.name}")
|
|
147
|
+
if not (pmcur := await models.Pmcur.get_or_none(cur_id=cur_id, pm_id=pmex.pm_id)):
|
|
148
|
+
raise HTTPException(f"No Pmcur with cur#{ecdx.currencyBalance} and pm#{ecdx.paymentType}", 404)
|
|
149
|
+
dct = {
|
|
150
|
+
"pmcur_id": pmcur.id,
|
|
151
|
+
"name": ecdx.paymentConfigVo.paymentName,
|
|
152
|
+
"person_id": pers_id or self.actor.person_id,
|
|
153
|
+
"detail": ecdx.accountNo,
|
|
154
|
+
"extra": ecdx.branchName or ecdx.bankName or ecdx.qrcode or ecdx.payMessage or ecdx.paymentExt1,
|
|
155
|
+
} # todo: WTD with multicur pms?
|
|
156
|
+
cred_in = models.Cred.validate(dct, False)
|
|
157
|
+
cred_db, _ = await models.Cred.update_or_create(**cred_in.df_unq())
|
|
158
|
+
credex_in = models.CredEx.validate({"exid": ecdx.id, "cred_id": cred_db.id, "ex_id": self.actor.ex.id})
|
|
159
|
+
credex_db, _ = await models.CredEx.update_or_create(**credex_in.df_unq())
|
|
160
|
+
return credex_db
|
|
160
161
|
|
|
161
162
|
# 25: Список реквизитов моих платежных методов
|
|
162
163
|
async def set_creds(self) -> list[models.CredEx]:
|
|
@@ -411,39 +412,51 @@ class AgentClient(BaseAgentClient): # Bybit client
|
|
|
411
412
|
order = OrderFull.model_validate(fo["result"])
|
|
412
413
|
await sleep(0.5)
|
|
413
414
|
ad = Ad(**self.api.get_ad_details(itemId=order.itemId)["result"])
|
|
414
|
-
maker_name = o.buyerRealName, o.sellerRealName
|
|
415
|
+
maker_name = o.buyerRealName, o.sellerRealName
|
|
416
|
+
seller_person, _ = await Person.get_or_create(name=o.sellerRealName)
|
|
415
417
|
im_maker = order.makerUserId == o.userId
|
|
416
418
|
taker_id = (o.userId, o.targetUserId)[int(im_maker)]
|
|
417
419
|
taker_nick = (self.actor.name, o.targetNickName)[int(im_maker)]
|
|
418
420
|
ad_db, cond_isnew = await self.cond_upsert(ad, maker_name[ad.side], force=True)
|
|
419
421
|
if not ad_db:
|
|
420
422
|
...
|
|
421
|
-
|
|
422
|
-
|
|
423
|
+
ecredex: CredEpyd = order.confirmedPayTerm
|
|
424
|
+
if ecredex.paymentType:
|
|
425
|
+
if not (credex := await models.CredEx.get_or_none(exid=ecredex.id, ex=self.ex_client.ex)):
|
|
426
|
+
# cur_id = await Cur.get(ticker=ad.currencyId).values_list('id', flat=True)
|
|
427
|
+
# await self.cred_epyd2db(ecredex, ad_db.maker.person_id, cur_id)
|
|
423
428
|
if (
|
|
424
429
|
await Pmcur.filter(
|
|
425
|
-
pm__pmexs__ex=self.ex_client.ex,
|
|
430
|
+
pm__pmexs__ex=self.ex_client.ex,
|
|
431
|
+
pm__pmexs__exid=ecredex.paymentType,
|
|
432
|
+
cur__ticker=ad.currencyId,
|
|
426
433
|
).count()
|
|
427
434
|
!= 1
|
|
428
435
|
):
|
|
429
436
|
...
|
|
430
437
|
pmcur = await Pmcur.get(
|
|
431
|
-
pm__pmexs__ex=self.ex_client.ex, pm__pmexs__exid=
|
|
438
|
+
pm__pmexs__ex=self.ex_client.ex, pm__pmexs__exid=ecredex.paymentType, cur__ticker=ad.currencyId
|
|
432
439
|
)
|
|
433
440
|
if not (
|
|
434
441
|
crd := await models.Cred.get_or_none(
|
|
435
|
-
pmcur=pmcur, person=
|
|
442
|
+
pmcur=pmcur, person=seller_person, detail=ecredex.accountNo
|
|
436
443
|
)
|
|
437
444
|
):
|
|
438
|
-
extr =
|
|
445
|
+
extr = (
|
|
446
|
+
ecredex.bankName
|
|
447
|
+
or ecredex.branchName
|
|
448
|
+
or ecredex.qrcode
|
|
449
|
+
or ecredex.payMessage
|
|
450
|
+
or ecredex.paymentExt1
|
|
451
|
+
)
|
|
439
452
|
crd = await models.Cred.create(
|
|
440
|
-
detail=
|
|
453
|
+
detail=ecredex.accountNo,
|
|
441
454
|
pmcur=pmcur,
|
|
442
455
|
person=ad_db.maker.person,
|
|
443
|
-
name=
|
|
456
|
+
name=ecredex.realName,
|
|
444
457
|
extra=extr,
|
|
445
458
|
)
|
|
446
|
-
credex = await models.CredEx.create(exid=
|
|
459
|
+
credex = await models.CredEx.create(exid=ecredex.id, ex=self.ex_client.ex, cred=crd)
|
|
447
460
|
taker_person, _ = await Person.get_or_create(name=maker_name[::-1][ad.side])
|
|
448
461
|
try:
|
|
449
462
|
taker, _ = await Actor.get_or_create(
|
|
@@ -459,7 +472,7 @@ class AgentClient(BaseAgentClient): # Bybit client
|
|
|
459
472
|
"payed_at": order.transferDate != "0" and int(order.transferDate[:-3]),
|
|
460
473
|
"confirmed_at": Statuses(o.status) == Statuses.completed and int(order.updateDate[:-3]),
|
|
461
474
|
"appealed_at": o.status == 30 and int(order.updateDate[:-3]),
|
|
462
|
-
"cred_id":
|
|
475
|
+
"cred_id": ecredex.paymentType and credex.cred_id or None,
|
|
463
476
|
"taker": taker,
|
|
464
477
|
},
|
|
465
478
|
exid=o.id,
|
|
@@ -537,7 +550,7 @@ class AgentClient(BaseAgentClient): # Bybit client
|
|
|
537
550
|
):
|
|
538
551
|
k = (-1) ** int(is_sell) # on_buy=1, on_sell=-1
|
|
539
552
|
|
|
540
|
-
creds: dict[models.Pmex, models.CredEx] = await
|
|
553
|
+
creds: dict[models.Pmex, models.CredEx] = await self.get_credexs_by_norms(pms, curex.cur_id)
|
|
541
554
|
if not volume:
|
|
542
555
|
if is_sell: # гонка в стакане продажи - мы покупаем монету за ФИАТ
|
|
543
556
|
# todo: we using the only one fiat exactly from THE FIRST cred
|
|
@@ -626,7 +639,7 @@ class AgentClient(BaseAgentClient): # Bybit client
|
|
|
626
639
|
k = (-1) ** int(is_sell) # on_buy=1, on_sell=-1
|
|
627
640
|
|
|
628
641
|
if pms:
|
|
629
|
-
creds: dict[models.Pmex, models.CredEx] = await
|
|
642
|
+
creds: dict[models.Pmex, models.CredEx] = await self.get_credexs_by_norms(pms, curex.cur_id)
|
|
630
643
|
[str(p.exid) for p in creds.values()]
|
|
631
644
|
|
|
632
645
|
if is_sell: # гонка в стакане продажи - мы покупаем монету за ФИАТ
|
|
@@ -803,6 +816,20 @@ class AgentClient(BaseAgentClient): # Bybit client
|
|
|
803
816
|
ad = Ad(id=str(ad_db.exid), userId=str(ad_db.maker.exid), remark=ad_db.cond.raw_txt)
|
|
804
817
|
await self.cond_upsert(ad, dr=dr, cid=ad_db.cond_id)
|
|
805
818
|
|
|
819
|
+
async def get_credexs_by_norms(self, norms: list[str], cur_id: int) -> dict[models.Pmex, models.CredEx] | None:
|
|
820
|
+
try:
|
|
821
|
+
return {
|
|
822
|
+
await models.Pmex.get(pm__norm=n, ex=self.ex_client.ex): await models.CredEx.get(
|
|
823
|
+
ex=self.ex_client.ex,
|
|
824
|
+
cred__pmcur__pm__norm=n,
|
|
825
|
+
cred__person_id=self.actor.person_id,
|
|
826
|
+
cred__pmcur__cur_id=cur_id,
|
|
827
|
+
)
|
|
828
|
+
for n in norms
|
|
829
|
+
}
|
|
830
|
+
except MultipleObjectsReturned as e:
|
|
831
|
+
logging.exception(e)
|
|
832
|
+
|
|
806
833
|
|
|
807
834
|
def get_sim(s1, s2) -> int:
|
|
808
835
|
sim = int((SequenceMatcher(None, s1, s2).ratio() - 0.9) * 10_000)
|
|
@@ -847,21 +874,13 @@ def listen(data: dict):
|
|
|
847
874
|
print(data)
|
|
848
875
|
|
|
849
876
|
|
|
850
|
-
async def get_creds(norms: list[str], ex: models.Ex, cur: Cur) -> dict[models.Pmex, models.CredEx]:
|
|
851
|
-
return {
|
|
852
|
-
await models.Pmex.get(ex=ex, pm__norm=n): await models.CredEx.get(
|
|
853
|
-
ex=ex, cred__pmcur__pm__norm=n, pmcur__cur=cur
|
|
854
|
-
)
|
|
855
|
-
for n in norms
|
|
856
|
-
}
|
|
857
|
-
|
|
858
|
-
|
|
859
877
|
class ExcCode(IntEnum):
|
|
860
878
|
FixPriceLimit = 912120022
|
|
861
879
|
RareLimit = 912120050
|
|
862
880
|
InsufficientAmount = 912120024
|
|
863
881
|
Timestamp = 10002
|
|
864
882
|
IP = 10010
|
|
883
|
+
Quantity = 912300019
|
|
865
884
|
|
|
866
885
|
|
|
867
886
|
async def main():
|
|
@@ -887,7 +906,6 @@ async def main():
|
|
|
887
906
|
for c in await Cond.all().prefetch_related("ads__maker")
|
|
888
907
|
}
|
|
889
908
|
# await cl.set_creds()
|
|
890
|
-
await cl.get_api_orders(16)
|
|
891
909
|
# await cl.actual_cond()
|
|
892
910
|
await gather(
|
|
893
911
|
cl.battle(usdt, rub, False, ["volet"], 79.97), # гонка в стакане покупки - мы продаем
|
|
@@ -900,6 +918,7 @@ async def main():
|
|
|
900
918
|
cl.battle(usdc, rub, True, ["volet"], 79),
|
|
901
919
|
cl.take(usdt, rub, False, ceil=80.5, volume=360),
|
|
902
920
|
cl.take(usdt, rub, True, ceil=80.5, volume=360),
|
|
921
|
+
cl.get_api_orders(1),
|
|
903
922
|
)
|
|
904
923
|
|
|
905
924
|
bor = BaseOrderReq(
|
|
@@ -45,7 +45,6 @@ class CredEpyd(CredExOut):
|
|
|
45
45
|
businessName: str
|
|
46
46
|
concept: str
|
|
47
47
|
online: str
|
|
48
|
-
countNo: str
|
|
49
48
|
paymentExt1: str
|
|
50
49
|
paymentExt2: str
|
|
51
50
|
paymentExt3: str
|
|
@@ -53,8 +52,9 @@ class CredEpyd(CredExOut):
|
|
|
53
52
|
paymentExt5: str
|
|
54
53
|
paymentExt6: str
|
|
55
54
|
paymentTemplateVersion: int
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
55
|
+
countNo: str = None # only for my cred
|
|
56
|
+
hasPaymentTemplateChanged: bool = None # only for my cred
|
|
57
|
+
paymentConfigVo: PaymentConfigVo # only for my cred
|
|
58
|
+
realNameVerified: bool = None # only for my cred
|
|
59
|
+
channel: str = None # only for my cred
|
|
60
|
+
currencyBalance: list[str] = None # only for my cred
|
|
@@ -4,6 +4,8 @@ from typing import Literal
|
|
|
4
4
|
|
|
5
5
|
from pydantic import BaseModel
|
|
6
6
|
|
|
7
|
+
from xync_client.Bybit.etype.cred import CredEpyd
|
|
8
|
+
|
|
7
9
|
|
|
8
10
|
class Statuses(IntEnum):
|
|
9
11
|
deleted = 40 # order canceled
|
|
@@ -183,7 +185,7 @@ class OrderFull(OrderItem):
|
|
|
183
185
|
payCode: str
|
|
184
186
|
paymentType: int
|
|
185
187
|
transferDate: str
|
|
186
|
-
paymentTermList: list[
|
|
188
|
+
paymentTermList: list[CredEpyd]
|
|
187
189
|
remark: str
|
|
188
190
|
recentOrderNum: int
|
|
189
191
|
recentExecuteRate: int
|
|
@@ -192,8 +194,8 @@ class OrderFull(OrderItem):
|
|
|
192
194
|
appealNickName: str
|
|
193
195
|
canAppeal: str
|
|
194
196
|
totalAppealTimes: str
|
|
195
|
-
paymentTermResult:
|
|
196
|
-
confirmedPayTerm:
|
|
197
|
+
paymentTermResult: CredEpyd
|
|
198
|
+
confirmedPayTerm: CredEpyd
|
|
197
199
|
appealedTimes: str
|
|
198
200
|
orderFinishMinute: int
|
|
199
201
|
makerFee: str
|
|
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.dev13 → xync_client-0.0.57.dev14}/tests/_todo_refact/Binance/test_binance.py
RENAMED
|
File without changes
|
{xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/tests/_todo_refact/Bybit/test_bybit.py
RENAMED
|
File without changes
|
{xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/tests/_todo_refact/Bybit/test_bybit_p2p.py
RENAMED
|
File without changes
|
|
File without changes
|
{xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/tests/_todo_refact/Htx/test_htx_p2p.py
RENAMED
|
File without changes
|
{xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/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
|
{xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/xync_client/Pms/Volet/_todo_req/req.mjs
RENAMED
|
File without changes
|
{xync_client-0.0.57.dev13 → xync_client-0.0.57.dev14}/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.dev13 → xync_client-0.0.57.dev14}/xync_client.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|