xync-client 0.0.155.dev2__tar.gz → 0.0.173__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.155.dev2/xync_client.egg-info → xync_client-0.0.173}/PKG-INFO +2 -1
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/README.md +20 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/pyproject.toml +1 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/TestAgent.py +10 -10
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/TestEx.py +11 -10
- xync_client-0.0.173/tests/TestOrder.py +24 -0
- xync_client-0.0.173/xync_client/Abc/AdLoader.py +5 -0
- xync_client-0.0.173/xync_client/Abc/Agent.py +623 -0
- xync_client-0.0.173/xync_client/Abc/Ex.py +676 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Abc/Order.py +24 -28
- xync_client-0.0.173/xync_client/Abc/xtype.py +236 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BingX/agent.py +1 -1
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BitGet/agent.py +1 -3
- xync_client-0.0.173/xync_client/Bybit/agent.py +1142 -0
- xync_client-0.0.173/xync_client/Bybit/etype/ad.py +191 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Bybit/etype/cred.py +25 -3
- xync_client-0.0.173/xync_client/Bybit/etype/order.py +370 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Bybit/ex.py +41 -55
- xync_client-0.0.173/xync_client/Bybit/inAgent.py +31 -0
- xync_client-0.0.173/xync_client/Bybit/order.py +65 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Htx/agent.py +115 -60
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Htx/etype/ad.py +22 -7
- xync_client-0.0.173/xync_client/Htx/etype/order.py +194 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Htx/etype/test.py +4 -4
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Htx/ex.py +50 -18
- xync_client-0.0.173/xync_client/Mexc/agent.py +268 -0
- xync_client-0.0.173/xync_client/Mexc/api.py +1255 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Mexc/etype/ad.py +52 -1
- xync_client-0.0.173/xync_client/Mexc/etype/order.py +354 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Mexc/ex.py +29 -19
- xync_client-0.0.173/xync_client/Okx/1.py +14 -0
- xync_client-0.0.173/xync_client/Okx/agent.py +39 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Okx/ex.py +8 -8
- xync_client-0.0.173/xync_client/Pms/Payeer/agent.py +396 -0
- xync_client-0.0.173/xync_client/Pms/Payeer/login.py +2 -0
- xync_client-0.0.173/xync_client/Pms/Payeer/trade.py +58 -0
- xync_client-0.0.155.dev2/xync_client/Pms/Volet/__init__.py → xync_client-0.0.173/xync_client/Pms/Volet/agent.py +1 -2
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/TgWallet/agent.py +21 -21
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/TgWallet/ex.py +11 -11
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/TgWallet/pyd.py +5 -5
- xync_client-0.0.173/xync_client/__init__.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/loader.py +1 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/pm_unifier.py +3 -2
- {xync_client-0.0.155.dev2 → xync_client-0.0.173/xync_client.egg-info}/PKG-INFO +2 -1
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client.egg-info/SOURCES.txt +8 -4
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client.egg-info/requires.txt +1 -0
- xync_client-0.0.155.dev2/tests/TestOrder.py +0 -20
- xync_client-0.0.155.dev2/xync_client/Abc/AdLoader.py +0 -299
- xync_client-0.0.155.dev2/xync_client/Abc/Agent.py +0 -216
- xync_client-0.0.155.dev2/xync_client/Abc/Ex.py +0 -287
- xync_client-0.0.155.dev2/xync_client/Abc/xtype.py +0 -130
- xync_client-0.0.155.dev2/xync_client/Bybit/InAgent.py +0 -465
- xync_client-0.0.155.dev2/xync_client/Bybit/agent.py +0 -1292
- xync_client-0.0.155.dev2/xync_client/Bybit/etype/ad.py +0 -157
- xync_client-0.0.155.dev2/xync_client/Bybit/etype/order.py +0 -333
- xync_client-0.0.155.dev2/xync_client/Bybit/order.py +0 -41
- xync_client-0.0.155.dev2/xync_client/Mexc/agent.py +0 -85
- xync_client-0.0.155.dev2/xync_client/Mexc/api.py +0 -636
- xync_client-0.0.155.dev2/xync_client/Mexc/etype/order.py +0 -639
- xync_client-0.0.155.dev2/xync_client/Pms/Payeer/__init__.py +0 -262
- xync_client-0.0.155.dev2/xync_client/Pms/Payeer/api.py +0 -25
- xync_client-0.0.155.dev2/xync_client/Pms/Payeer/login.py +0 -64
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/.env.sample +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/.gitignore +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/.pre-commit-config.yaml +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/__init__.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/makefile +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/setup.cfg +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/TestAsset.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/_todo_refact/Binance/test_binance.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/_todo_refact/Bybit/test_bybit.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/_todo_refact/Bybit/test_bybit_p2p.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/_todo_refact/Gate/test_gate.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/_todo_refact/Wallet/test_agent.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/_todo_refact/Wallet/test_ex.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/_todo_refact/__init__.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/tests/_todo_refact/_test_ex.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Abc/Asset.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Abc/Auth.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Abc/BaseTest.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Abc/Exception.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Abc/HasAbotUid.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Abc/InAgent.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Abc/PmAgent.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Binance/__init__.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Binance/binance_async.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Binance/earn_api.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Binance/etype/ad.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Binance/etype/pm.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Binance/ex.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Binance/exceptions.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Binance/sapi.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Binance/web_c2c.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BingX/__init__.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BingX/base.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BingX/etype/ad.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BingX/etype/pm.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BingX/ex.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BingX/req.mjs +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BingX/sign.js +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BitGet/__init__.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BitGet/etype/ad.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BitGet/ex.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/BitPapa/ex.py +0 -0
- {xync_client-0.0.155.dev2/xync_client → xync_client-0.0.173/xync_client/Bybit/etype}/__init__.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Bybit/web_earn.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Bybit/web_p2p.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Bybit/ws.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Gate/etype/ad.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Gate/ex.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Gate/premarket.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Gmail/__init__.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Htx/earn.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Htx/etype/__init__.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Htx/etype/cred.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Htx/etype/pm.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/KuCoin/etype/ad.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/KuCoin/etype/pm.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/KuCoin/ex.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/KuCoin/web.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Mexc/etype/pm.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Okx/etype/ad.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Okx/etype/pm.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/.gitignore +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Alfa/__init__.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Alfa/state.json +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/MTS/__init__.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Ozon/__init__.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Payeer/.gitignore +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Sber/__init__.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Sber/utils.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Tinkoff/__init__.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Volet/_todo_req/req.mjs +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Volet/_todo_req/req.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Volet/api.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Volet/pl.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Xync/__main__.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Xync/ed.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/Pms/Yandex/__init__.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/TgWallet/asset.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/TgWallet/auth.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/TgWallet/inAgent.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/TgWallet/order.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/TgWallet/pyro.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/TgWallet/web.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client/details.py +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client.egg-info/dependency_links.txt +0 -0
- {xync_client-0.0.155.dev2 → xync_client-0.0.173}/xync_client.egg-info/top_level.txt +0 -0
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: xync-client
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.173
|
|
4
4
|
Author-email: Mike Artemiev <mixartemev@gmail.com>
|
|
5
5
|
Project-URL: Homepage, https://gitlab.com/XyncNet/client
|
|
6
6
|
Project-URL: Repository, https://gitlab.com/XyncNet/client
|
|
7
7
|
Requires-Python: >=3.11
|
|
8
8
|
Requires-Dist: asynchuobi
|
|
9
|
+
Requires-Dist: blackboxprotobuf
|
|
9
10
|
Requires-Dist: bs4
|
|
10
11
|
Requires-Dist: bybit-p2p
|
|
11
12
|
Requires-Dist: google-api-python-client
|
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
## Структура http-клиентов
|
|
2
|
+
#### Абстрактные классы клиентов:
|
|
3
|
+
**BaseClient** *[host: str]* - базовый http-клиент, с низкоуровнеными методами get, post, put и delete, сессией, и общими
|
|
4
|
+
для всех клиентов свойствами. *[В конструкторе принимает хост строкой]*
|
|
5
|
+
|
|
6
|
+
**BaseExClient**(BaseClient) *[ex: Ex]* - клиент с публичными/анонимными методами конкретной биржи.
|
|
7
|
+
*[В конструкторе принимает зависимость: экземпляр биржи]*
|
|
8
|
+
|
|
9
|
+
**_BaseAuthClient**(BaseClient) *[agent: Agent]* - клиент реализующий логин (получение необходимых заголовков) конкретного
|
|
10
|
+
юзера биржи. *[В конструкторе принимает зависимость: экземпляр агента]*
|
|
11
|
+
|
|
12
|
+
**BaseInAgentTrait** - класс реализующий прием входящих событий от биржи. Если у биржи есть вебсокет канал, то по нему,
|
|
13
|
+
если нет - то через поллинг каждые х секунд.
|
|
14
|
+
|
|
15
|
+
**BaseAgentClient**(BaseAuthClient, BaseInAgentTrait) *[agent: Agent, ex_client: BaseExClient]* - клиент с приватными
|
|
16
|
+
методами биржи от лица конкретного юзера биржи. *[В конструкторе принимает зависимости: экземпляр агента, и клиента биржи]*
|
|
17
|
+
|
|
18
|
+
**BaseOrderClient** *[order: Order, agent_client: BaseExClient]* - методы для обработки конкретного ордера на бирже.
|
|
19
|
+
*[В конструкторе принимает зависимости: экземпляр ордера, и клиента агента]*
|
|
20
|
+
|
|
1
21
|
## Order Flow:
|
|
2
22
|
- 0: Получшение заявок за заданное время, в статусе, по валюте, монете, направлению: `get_orders(stauts=OrderStatus.active, coin='USDT', cur='RUB', is_sell=False) => [order]`
|
|
3
23
|
|
|
@@ -9,7 +9,7 @@ from xync_schema.xtype import BaseAd
|
|
|
9
9
|
from xync_client.Abc.BaseTest import BaseTest
|
|
10
10
|
from xync_client.Abc.Ex import BaseExClient
|
|
11
11
|
from xync_client.Abc.Agent import BaseAgentClient
|
|
12
|
-
from xync_client.Abc.xtype import
|
|
12
|
+
from xync_client.Abc.xtype import BaseCredEx, BaseOrderReq, ListOfDicts
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
@pytest.mark.asyncio(loop_scope="session")
|
|
@@ -44,8 +44,8 @@ class TestAgent(BaseTest):
|
|
|
44
44
|
# 25
|
|
45
45
|
async def test_my_creds(self, clients: list[tuple[BaseAgentClient, BaseAgentClient]]):
|
|
46
46
|
for maker, taker in clients:
|
|
47
|
-
my_creds: list[
|
|
48
|
-
ok = self.is_list_of_objects(my_creds,
|
|
47
|
+
my_creds: list[BaseCredEx] = await taker.get_creds()
|
|
48
|
+
ok = self.is_list_of_objects(my_creds, BaseCredEx)
|
|
49
49
|
t, _ = await ExStat.update_or_create({"ok": ok}, ex=taker.actor.ex, action=ExAction.my_creds)
|
|
50
50
|
assert t.ok, "No my creds"
|
|
51
51
|
logging.info(f"{taker.actor.ex.name}:{ExAction.my_creds.name} - ok")
|
|
@@ -53,7 +53,7 @@ class TestAgent(BaseTest):
|
|
|
53
53
|
# 27
|
|
54
54
|
async def test_cred_upd(self, clients: list[tuple[BaseAgentClient, BaseAgentClient]]):
|
|
55
55
|
for maker, taker in clients:
|
|
56
|
-
credex = (await taker.
|
|
56
|
+
credex = (await taker.get_creds())[0]
|
|
57
57
|
credex_db = await CredEx.get(exid=credex.id, ex=taker.actor.ex).prefetch_related("cred")
|
|
58
58
|
credex_db.cred.name += "+Test!"
|
|
59
59
|
cred_upd: CredEx = await taker.cred_upd(credex_db.cred, credex.id)
|
|
@@ -65,7 +65,7 @@ class TestAgent(BaseTest):
|
|
|
65
65
|
# 28
|
|
66
66
|
async def test_cred_del(self, clients: list[tuple[BaseAgentClient, BaseAgentClient]]):
|
|
67
67
|
for maker, taker in clients:
|
|
68
|
-
credex = (await taker.
|
|
68
|
+
credex = (await taker.get_creds())[0]
|
|
69
69
|
cred_del: int = await taker.cred_del(credex.id)
|
|
70
70
|
ok = cred_del == credex.id
|
|
71
71
|
t, _ = await ExStat.update_or_create({"ok": ok}, ex=taker.actor.ex, action=ExAction.cred_del)
|
|
@@ -111,7 +111,7 @@ class TestAgent(BaseTest):
|
|
|
111
111
|
req = BaseOrderReq(
|
|
112
112
|
ad_id=ad.exid,
|
|
113
113
|
is_sell=ad.direction.sell,
|
|
114
|
-
|
|
114
|
+
amount=ad.min_fiat,
|
|
115
115
|
cred_id=mutual_cred.id,
|
|
116
116
|
)
|
|
117
117
|
order_request: dict | bool = await taker.order_request(req)
|
|
@@ -123,7 +123,7 @@ class TestAgent(BaseTest):
|
|
|
123
123
|
# 29
|
|
124
124
|
async def test_my_ads(self, clients: list[tuple[BaseAgentClient, BaseAgentClient]]):
|
|
125
125
|
for maker, taker in clients:
|
|
126
|
-
my_ads: list[BaseAd] = await maker.
|
|
126
|
+
my_ads: list[BaseAd] = await maker.get_my_ads()
|
|
127
127
|
ok = self.is_list_of_objects(my_ads, BaseAd)
|
|
128
128
|
t, _ = await ExStat.update_or_create({"ok": ok}, ex=taker.actor.ex, action=ExAction.my_ads)
|
|
129
129
|
assert t.ok, "Maker should has ads"
|
|
@@ -148,7 +148,7 @@ class TestAgent(BaseTest):
|
|
|
148
148
|
# 31
|
|
149
149
|
async def test_ad_upd(self, clients: list[tuple[BaseAgentClient, BaseAgentClient]]):
|
|
150
150
|
for maker, taker in clients:
|
|
151
|
-
my_ads: ListOfDicts = await taker.
|
|
151
|
+
my_ads: ListOfDicts = await taker.get_my_ads()
|
|
152
152
|
ad_upd: Ad.pyd() = await taker.ad_upd(offer_id=my_ads[0]["id"], amount="11")
|
|
153
153
|
ok = ad_upd["status"] == "SUCCESS"
|
|
154
154
|
t, _ = await ExStat.update_or_create({"ok": ok}, ex=taker.actor.ex.name, action=ExAction.ad_upd)
|
|
@@ -158,7 +158,7 @@ class TestAgent(BaseTest):
|
|
|
158
158
|
# 32
|
|
159
159
|
async def test_ad_del(self, clients: list[tuple[BaseAgentClient, BaseAgentClient]]):
|
|
160
160
|
for maker, taker in clients:
|
|
161
|
-
my_ads: ListOfDicts = await taker.
|
|
161
|
+
my_ads: ListOfDicts = await taker.get_my_ads()
|
|
162
162
|
ad_del: bool = await taker.ad_del(ad_id=my_ads[0]["id"])
|
|
163
163
|
t, _ = await ExStat.update_or_create({"ok": ad_del}, ex=taker.actor.ex, action=ExAction.ad_del)
|
|
164
164
|
assert t.ok, "No add new ad"
|
|
@@ -167,7 +167,7 @@ class TestAgent(BaseTest):
|
|
|
167
167
|
# 33
|
|
168
168
|
async def test_ad_switch(self, clients: list[tuple[BaseAgentClient, BaseAgentClient]]):
|
|
169
169
|
for maker, taker in clients:
|
|
170
|
-
my_ads: ListOfDicts = await taker.
|
|
170
|
+
my_ads: ListOfDicts = await taker.get_my_ads()
|
|
171
171
|
new_status = not (my_ads[0]["status"] == "ACTIVE")
|
|
172
172
|
ad_switch: bool = await taker.ad_switch(offer_id=my_ads[0]["id"], active=new_status)
|
|
173
173
|
t, _ = await ExStat.update_or_create({"ok": ad_switch}, ex=taker.actor.ex, action=ExAction.ad_switch)
|
|
@@ -4,12 +4,13 @@ import pytest
|
|
|
4
4
|
from pyro_client.client.file import FileClient
|
|
5
5
|
from x_client.aiohttp import Client as HttpClient
|
|
6
6
|
from xync_schema.xtype import BaseAd
|
|
7
|
+
from xync_schema.models import PmEx, ExStat
|
|
7
8
|
|
|
8
9
|
from xync_client.Abc.BaseTest import BaseTest
|
|
9
10
|
from xync_schema.enums import ExStatus, ExType, ExAction
|
|
10
11
|
from xync_schema import models
|
|
11
12
|
from xync_client.Abc.Ex import BaseExClient
|
|
12
|
-
from xync_client.loader import
|
|
13
|
+
from xync_client.loader import NET_TOKEN
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
@pytest.mark.asyncio(loop_scope="session")
|
|
@@ -18,7 +19,7 @@ class TestEx(BaseTest):
|
|
|
18
19
|
async def clients(self) -> list[HttpClient]:
|
|
19
20
|
exs = await models.Ex.filter(status__gt=ExStatus.plan).prefetch_related("pm_reps")
|
|
20
21
|
[await ex for ex in exs if ex.typ == ExType.tg]
|
|
21
|
-
async with FileClient(
|
|
22
|
+
async with FileClient(NET_TOKEN) as b:
|
|
22
23
|
b: FileClient
|
|
23
24
|
clients: list[BaseExClient] = [ex.client(b) for ex in exs]
|
|
24
25
|
yield clients
|
|
@@ -66,14 +67,14 @@ class TestEx(BaseTest):
|
|
|
66
67
|
# logging.info(f"{client.ex.name}: {ExAction.curs.name} - ok")
|
|
67
68
|
#
|
|
68
69
|
# # 20
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
70
|
+
async def test_pms(self, clients: list[BaseExClient]):
|
|
71
|
+
for client in clients:
|
|
72
|
+
pms: dict[int | str, PmEx] = await client.pms()
|
|
73
|
+
ok = self.is_dict_of_objects(pms, PmEx)
|
|
74
|
+
t, _ = await ExStat.update_or_create({"ok": ok}, ex=client.ex, action=ExAction.pms)
|
|
75
|
+
assert t.ok, "No pms"
|
|
76
|
+
logging.info(f"{client.ex.name}: {ExAction.pms.name} - ok")
|
|
77
|
+
|
|
77
78
|
# # 21
|
|
78
79
|
# async def test_cur_pms_map(self, clients: list[BaseExClient]):
|
|
79
80
|
# for client in clients:
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
from xync_client.Abc.Order import BaseOrderClient
|
|
3
|
+
from xync_schema.models import Agent, Ex
|
|
4
|
+
|
|
5
|
+
from xync_client.Abc.Agent import BaseAgentClient
|
|
6
|
+
|
|
7
|
+
from xync_client.Abc.BaseTest import BaseTest
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class AgentTest(BaseTest):
|
|
11
|
+
@pytest.fixture(scope="class")
|
|
12
|
+
async def cl(self) -> BaseAgentClient:
|
|
13
|
+
agent = await Agent.filter(auth__not_isnull=True, status__gt=0).prefetch_related("actor__ex").first()
|
|
14
|
+
ex: Ex = agent.actor.ex
|
|
15
|
+
acl: BaseAgentClient = agent.client(ex.client())
|
|
16
|
+
yield acl
|
|
17
|
+
await acl.close()
|
|
18
|
+
|
|
19
|
+
@pytest.fixture(scope="class")
|
|
20
|
+
async def cl1(self) -> BaseOrderClient:
|
|
21
|
+
agent = (await self.exq).agents.filter(auth__not_isnull=True).offset(1).first()
|
|
22
|
+
acl = BaseOrderClient(agent)
|
|
23
|
+
yield acl
|
|
24
|
+
await acl.close()
|