xync-client 0.0.218.dev8__tar.gz → 0.0.218.dev10__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.218.dev8 → xync_client-0.0.218.dev10}/PKG-INFO +1 -1
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/tests/TestOrder.py +2 -2
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Abc/Agent.py +4 -1
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Abc/Ex.py +3 -2
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Abc/Order.py +11 -1
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Bybit/agent.py +1 -3
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Bybit/order.py +21 -9
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client.egg-info/PKG-INFO +1 -1
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/.env.sample +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/.gitignore +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/.pre-commit-config.yaml +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/CLAUDE.md +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/README.md +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/__init__.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/makefile +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/pyproject.toml +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/setup.cfg +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/tests/TestAgent.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/tests/TestAsset.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/tests/TestEx.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/tests/_todo_refact/Binance/test_binance.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/tests/_todo_refact/Bybit/test_bybit.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/tests/_todo_refact/Bybit/test_bybit_p2p.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/tests/_todo_refact/Gate/test_gate.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/tests/_todo_refact/Wallet/test_agent.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/tests/_todo_refact/Wallet/test_ex.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/tests/_todo_refact/__init__.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/tests/_todo_refact/_test_ex.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Abc/AdLoader.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Abc/Asset.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Abc/Auth.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Abc/BaseTest.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Abc/Exception.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Abc/HasAbotUid.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Abc/InAgent.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Abc/PmAgent.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Abc/xtype.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Binance/__init__.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Binance/binance_async.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Binance/earn_api.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Binance/etype/ad.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Binance/etype/pm.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Binance/ex.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Binance/exceptions.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Binance/sapi.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Binance/web_c2c.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/BingX/__init__.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/BingX/agent.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/BingX/base.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/BingX/etype/ad.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/BingX/etype/pm.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/BingX/ex.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/BingX/req.mjs +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/BingX/sign.js +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/BitGet/__init__.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/BitGet/agent.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/BitGet/etype/ad.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/BitGet/ex.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/BitPapa/ex.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Bybit/etype/__init__.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Bybit/etype/ad.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Bybit/etype/cred.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Bybit/etype/order.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Bybit/ex.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Bybit/inAgent.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Bybit/web_earn.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Bybit/web_p2p.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Bybit/ws.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Gate/etype/ad.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Gate/ex.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Gate/premarket.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Gmail/__init__.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Htx/agent.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Htx/earn.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Htx/etype/__init__.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Htx/etype/ad.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Htx/etype/cred.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Htx/etype/order.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Htx/etype/pm.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Htx/etype/test.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Htx/ex.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/KuCoin/etype/ad.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/KuCoin/etype/pm.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/KuCoin/ex.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/KuCoin/web.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Mexc/agent.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Mexc/api.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Mexc/etype/ad.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Mexc/etype/order.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Mexc/etype/pm.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Mexc/ex.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Okx/1.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Okx/agent.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Okx/etype/ad.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Okx/etype/pm.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Okx/ex.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/.gitignore +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/Alfa/__init__.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/Alfa/state.json +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/MTS/__init__.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/Ozon/__init__.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/Payeer/.gitignore +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/Payeer/agent.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/Payeer/login.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/Payeer/trade.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/Sber/__init__.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/Sber/utils.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/Tinkoff/__init__.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/Volet/_todo_req/req.mjs +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/Volet/_todo_req/req.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/Volet/agent.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/Volet/api.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/Volet/pl.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/Xync/__main__.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/Xync/ed.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/Yandex/__init__.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/airtm/__init__.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/TgWallet/agent.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/TgWallet/asset.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/TgWallet/auth.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/TgWallet/ex.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/TgWallet/inAgent.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/TgWallet/order.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/TgWallet/pyd.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/TgWallet/pyro.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/TgWallet/web.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/__init__.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/details.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/loader.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client/pm_unifier.py +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client.egg-info/SOURCES.txt +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client.egg-info/dependency_links.txt +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client.egg-info/requires.txt +0 -0
- {xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client.egg-info/top_level.txt +0 -0
|
@@ -14,7 +14,7 @@ class TestOrder(BaseTest):
|
|
|
14
14
|
|
|
15
15
|
@pytest.fixture(scope="class", autouse=True)
|
|
16
16
|
async def clients(self) -> BaseOrderClient:
|
|
17
|
-
order = await Order.get(exid=self.exid).prefetch_related("ad__pair_side")
|
|
17
|
+
order = await Order.get(exid=self.exid).prefetch_related("ad__pair_side", "cred")
|
|
18
18
|
if not (agent := await Agent.get_or_none(actor_id=order.ad.maker_id)):
|
|
19
19
|
agent = await Agent.get(actor_id=order.taker_id)
|
|
20
20
|
await agent.fetch_related("actor__ex", "actor__person__user__gmail")
|
|
@@ -31,7 +31,7 @@ class TestOrder(BaseTest):
|
|
|
31
31
|
|
|
32
32
|
# async def test_cancel_accept(self, clients: BaseOrderClient):
|
|
33
33
|
# res = await clients.cancel_accept()
|
|
34
|
-
# assert res, f"cancel_accept failed: {res}"
|
|
34
|
+
# assert not res[0], f"cancel_accept failed: {res}"
|
|
35
35
|
#
|
|
36
36
|
# async def test_appeal_accept(self, clients: BaseOrderClient):
|
|
37
37
|
# res = await clients.appeal_accept()
|
|
@@ -209,7 +209,10 @@ class BaseAgentClient(HttpClient, BaseInAgentClient): # , metaclass=ABCMeta
|
|
|
209
209
|
order_db = await self.order_save(order)
|
|
210
210
|
elif order_db.status in {OrderStatus.created, OrderStatus.paid}:
|
|
211
211
|
if order_db.hot_id:
|
|
212
|
-
await order_db.hot_process()
|
|
212
|
+
await order_db.hot_process()
|
|
213
|
+
elif order_db.status in {OrderStatus.canceled}:
|
|
214
|
+
ocl = order_db.client(self)
|
|
215
|
+
await ocl.cancel_request()
|
|
213
216
|
self.orders[order_exid] = order_db, order
|
|
214
217
|
return self.orders[order_exid]
|
|
215
218
|
|
|
@@ -463,6 +463,7 @@ class BaseExClient(HttpClient, AdLoader):
|
|
|
463
463
|
_, cur_scale, _cur_min = await self.x2e_cur(await self.e2x_cur(base_ad.curex_exid))
|
|
464
464
|
_, coin_scale = await self.x2e_coin(await self.e2x_coin(base_ad.coinex_exid))
|
|
465
465
|
badd = base_ad.model_dump()
|
|
466
|
+
pms = await models.Pm.filter(pmexs__ex=self.ex, pmexs__exid__in=base_ad.pmex_exids)
|
|
466
467
|
badd.update(
|
|
467
468
|
amount=int((base_ad.amount or base_ad.quantity * base_ad.price) * 10**cur_scale),
|
|
468
469
|
max_fiat=int(base_ad.max_fiat * 10**cur_scale),
|
|
@@ -473,7 +474,7 @@ class BaseExClient(HttpClient, AdLoader):
|
|
|
473
474
|
maker_id=(await self.e2x_actor(base_ad.maker)).id,
|
|
474
475
|
cond_id=cond and cond.id,
|
|
475
476
|
pair_side_id=await self.e2x_pair(base_ad.coinex_exid, base_ad.curex_exid, bool(base_ad.side.value)),
|
|
476
|
-
|
|
477
|
+
pm_ids=[pm.id for pm in pms],
|
|
477
478
|
)
|
|
478
479
|
ad = xtype.BaseAd.model_validate(badd)
|
|
479
480
|
ad_upd = models.Ad.validate(ad.model_dump(), with_pk=False)
|
|
@@ -482,7 +483,7 @@ class BaseExClient(HttpClient, AdLoader):
|
|
|
482
483
|
except OperationalError as e:
|
|
483
484
|
raise e
|
|
484
485
|
await ad_db.pms.clear()
|
|
485
|
-
await ad_db.pms.add(*
|
|
486
|
+
await ad_db.pms.add(*pms)
|
|
486
487
|
return ad_db
|
|
487
488
|
|
|
488
489
|
async def load_cond(self, txt: str, maker_exid: int) -> models.Cond | None:
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import logging
|
|
1
2
|
from abc import abstractmethod
|
|
2
3
|
|
|
4
|
+
|
|
3
5
|
from xync_client.Abc.Agent import BaseAgentClient
|
|
4
6
|
from xync_schema.models import Order, PmEx, CredEx, PairSide, Cred
|
|
5
7
|
|
|
@@ -35,7 +37,15 @@ class BaseOrderClient:
|
|
|
35
37
|
async def cancel_request(self) -> bool: ...
|
|
36
38
|
|
|
37
39
|
# 6: Одобрение запроса на отмену (оплаченная мной покупка)
|
|
38
|
-
async def cancel_accept(self):
|
|
40
|
+
async def cancel_accept(self):
|
|
41
|
+
try:
|
|
42
|
+
return await self._cancel_accept()
|
|
43
|
+
except Exception as e:
|
|
44
|
+
o = await self.agent_client.get_order_full(self.order.exid)
|
|
45
|
+
logging.error(f"ORDER STATUS NOW: {o.status}")
|
|
46
|
+
raise e
|
|
47
|
+
txt = "Buyer canceled your sell" if self.im_seller else "You accepted canceling of buy"
|
|
48
|
+
logging.info(txt)
|
|
39
49
|
|
|
40
50
|
# 7: [S] Подтвердить получение оплаты
|
|
41
51
|
@abstractmethod
|
|
@@ -908,9 +908,7 @@ class AgentClient(BaseAgentClient): # Bybit client
|
|
|
908
908
|
# msg_read()
|
|
909
909
|
upd = Read.model_validate(data["data"])
|
|
910
910
|
|
|
911
|
-
elif
|
|
912
|
-
topic == TopicWs.SELLER_CANCEL_CHANGE.name
|
|
913
|
-
): # я покупатель, уже проставил оплату, продавец запросил отмену
|
|
911
|
+
elif topic == TopicWs.SELLER_CANCEL_CHANGE.name: # me buyer mark paid already, seller asks to cancel
|
|
914
912
|
upd = SellerCancelChange.model_validate(data["data"])
|
|
915
913
|
order_db, order = await self.load_order(upd.id)
|
|
916
914
|
await order_db.cancel_request()
|
|
@@ -3,6 +3,8 @@ from asyncio import sleep
|
|
|
3
3
|
from uuid import uuid4
|
|
4
4
|
|
|
5
5
|
from bybit_p2p._exceptions import FailedRequestError
|
|
6
|
+
from xync_schema.models import Order
|
|
7
|
+
|
|
6
8
|
from xync_client.Bybit.agent import AgentClient
|
|
7
9
|
|
|
8
10
|
from xync_client.Abc.Order import BaseOrderClient
|
|
@@ -10,6 +12,14 @@ from xync_client.Abc.Order import BaseOrderClient
|
|
|
10
12
|
|
|
11
13
|
class OrderClient(BaseOrderClient):
|
|
12
14
|
agent_client: AgentClient
|
|
15
|
+
hdrs = {
|
|
16
|
+
"accept-language": "en",
|
|
17
|
+
"sec-fetch-site": "same-origin",
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
def __init__(self, order: Order, agent_client: AgentClient):
|
|
21
|
+
super().__init__(order, agent_client)
|
|
22
|
+
self.hdrs["referer"] = f"https://www.bybit.com/p2p/orderList/{order.exid}"
|
|
13
23
|
|
|
14
24
|
# 5: Перевод сделки в состояние "оплачено", c отправкой чека
|
|
15
25
|
async def _mark_payed(self, credex_exid: int = None, pmex_exid: int | str = None, receipt: bytes = None):
|
|
@@ -42,21 +52,23 @@ class OrderClient(BaseOrderClient):
|
|
|
42
52
|
"cancelRemark": "",
|
|
43
53
|
"voucherPictures": "",
|
|
44
54
|
}
|
|
45
|
-
res = await self.agent_client._post("/x-api/fiat/otc/order/cancel", data)
|
|
55
|
+
res = await self.agent_client._post("/x-api/fiat/otc/order/cancel", data, hdrs=self.hdrs)
|
|
46
56
|
if res["ret_code"]:
|
|
47
57
|
logging.error(res, self.order.exid)
|
|
48
|
-
return res["ret_code"]
|
|
58
|
+
return res["ret_code"]
|
|
49
59
|
|
|
50
60
|
# 6: Запрос отмены (оплаченная контрагентом продажа)
|
|
51
61
|
async def cancel_request(self) -> bool: ...
|
|
52
62
|
|
|
53
63
|
# 6: Одобрение запроса на отмену (оплаченная мной покупка)
|
|
54
|
-
async def
|
|
64
|
+
async def _cancel_accept(self) -> bool:
|
|
55
65
|
data = {"orderId": str(self.order.exid), "examineResult": "PASS"}
|
|
56
|
-
res = await self.agent_client._post(
|
|
66
|
+
res = await self.agent_client._post(
|
|
67
|
+
"/x-api/fiat/otc/order/buyer/examine/sellerCancelOrderApply", data, hdrs=self.hdrs
|
|
68
|
+
)
|
|
57
69
|
if res["ret_code"]:
|
|
58
70
|
logging.error(res, self.order.exid)
|
|
59
|
-
return res["ret_code"]
|
|
71
|
+
return res["ret_code"]
|
|
60
72
|
|
|
61
73
|
# 9, 10: Подать аппеляцию cо скриншотом/видео/файлом
|
|
62
74
|
async def start_appeal(self, file: bytes = None) -> bool:
|
|
@@ -73,7 +85,7 @@ class OrderClient(BaseOrderClient):
|
|
|
73
85
|
res = await self.agent_client._post("/x-api/fiat/otc/order/appealwithconsult", data)
|
|
74
86
|
if res["ret_code"]:
|
|
75
87
|
logging.error(res, self.order.exid)
|
|
76
|
-
return res["ret_code"]
|
|
88
|
+
return res["ret_code"]
|
|
77
89
|
|
|
78
90
|
# 9, 10: Подать аппеляцию cо скриншотом/видео/файлом
|
|
79
91
|
async def start_completed_order_appeal(self, file: bytes = None) -> bool:
|
|
@@ -87,7 +99,7 @@ class OrderClient(BaseOrderClient):
|
|
|
87
99
|
res = await self.agent_client._post("/x-api/fiat/otc/completeOrder/appeal", data)
|
|
88
100
|
if res["ret_code"]:
|
|
89
101
|
logging.error(res, self.order.exid)
|
|
90
|
-
return res["ret_code"]
|
|
102
|
+
return res["ret_code"]
|
|
91
103
|
|
|
92
104
|
# 11, 12: Встречное оспаривание полученной аппеляции cо скриншотом/видео/файлом
|
|
93
105
|
async def dispute_appeal(self, file) -> bool: ...
|
|
@@ -102,7 +114,7 @@ class OrderClient(BaseOrderClient):
|
|
|
102
114
|
res = await self.agent_client._post("/x-api/fiat/otc/completeOrder/cancel_appeal", data)
|
|
103
115
|
if res["ret_code"]:
|
|
104
116
|
logging.error(res, self.order.exid)
|
|
105
|
-
return res["ret_code"]
|
|
117
|
+
return res["ret_code"]
|
|
106
118
|
|
|
107
119
|
async def appeal_accept(self) -> bool:
|
|
108
120
|
data = {"orderId": str(self.order.exid)}
|
|
@@ -110,7 +122,7 @@ class OrderClient(BaseOrderClient):
|
|
|
110
122
|
res = await self.agent_client._post("/x-api/fiat/otc/order/cancelAfterCustomerNegotiation", data)
|
|
111
123
|
if res["ret_code"]:
|
|
112
124
|
logging.error(res, self.order.exid)
|
|
113
|
-
return res["ret_code"]
|
|
125
|
+
return res["ret_code"]
|
|
114
126
|
|
|
115
127
|
# 16: Отправка сообщения юзеру в чат по ордеру с приложенным файлом
|
|
116
128
|
async def send_order_msg(self, msg: str, file=None):
|
|
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.218.dev8 → xync_client-0.0.218.dev10}/tests/_todo_refact/Binance/test_binance.py
RENAMED
|
File without changes
|
{xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/tests/_todo_refact/Bybit/test_bybit.py
RENAMED
|
File without changes
|
{xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/tests/_todo_refact/Bybit/test_bybit_p2p.py
RENAMED
|
File without changes
|
|
File without changes
|
{xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/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
|
|
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.218.dev8 → xync_client-0.0.218.dev10}/xync_client/Pms/Volet/_todo_req/req.mjs
RENAMED
|
File without changes
|
{xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xync_client-0.0.218.dev8 → xync_client-0.0.218.dev10}/xync_client.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|