xync-client 0.0.46.dev2__tar.gz → 0.0.48.dev1__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.46.dev2/xync_client.egg-info → xync_client-0.0.48.dev1}/PKG-INFO +1 -1
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Abc/Agent.py +4 -4
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Abc/Auth.py +2 -3
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Abc/Ex.py +32 -18
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Abc/types.py +5 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Binance/ex.py +1 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Gate/ex.py +1 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Htx/ex.py +3 -3
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Mexc/ex.py +9 -9
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1/xync_client.egg-info}/PKG-INFO +1 -1
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client.egg-info/SOURCES.txt +0 -1
- xync_client-0.0.46.dev2/xync_client/Abc/Base.py +0 -17
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/.env.sample +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/.gitignore +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/.pre-commit-config.yaml +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/README.md +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/makefile +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/pyproject.toml +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/setup.cfg +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/tests/TestAgent.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/tests/TestAsset.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/tests/TestEx.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/tests/TestOrder.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/tests/_todo_refact/Binance/test_binance.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/tests/_todo_refact/Bybit/test_bybit.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/tests/_todo_refact/Bybit/test_bybit_p2p.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/tests/_todo_refact/Gate/test_gate.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/tests/_todo_refact/Htx/test_htx_p2p.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/tests/_todo_refact/Wallet/test_agent.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/tests/_todo_refact/Wallet/test_ex.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/tests/_todo_refact/__init__.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/tests/_todo_refact/_test_ex.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Abc/Asset.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Abc/BaseTest.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Abc/InAgent.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Abc/Order.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Binance/__init__.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Binance/binance_async.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Binance/earn_api.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Binance/etype/ad.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Binance/etype/pm.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Binance/exceptions.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Binance/sapi.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Binance/web_c2c.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/BingX/__init__.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/BingX/agent.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/BingX/base.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/BingX/etype/ad.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/BingX/etype/pm.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/BingX/ex.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/BingX/req.mjs +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/BingX/sign.js +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/BitGet/__init__.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/BitGet/agent.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/BitGet/etype/ad.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/BitGet/ex.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/BitPapa/ex.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Bybit/InAgent.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Bybit/agent.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Bybit/etype/ad.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Bybit/etype/cred.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Bybit/etype/order.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Bybit/ex.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Bybit/web_earn.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Bybit/web_p2p.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Bybit/ws.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Gate/etype/ad.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Gate/premarket.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Htx/agent.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Htx/earn.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Htx/etype/__init__.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Htx/etype/ad.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Htx/etype/cred.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Htx/etype/pm.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Htx/etype/test.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/KuCoin/etype/ad.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/KuCoin/etype/pm.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/KuCoin/ex.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/KuCoin/web.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Mexc/etype/ad.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Mexc/etype/pm.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Okx/etype/ad.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Okx/etype/pm.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Okx/ex.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Pms/Alfa/__init__.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Pms/Alfa/state.json +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Pms/Sber/__init__.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Pms/Tinkoff/__init__.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Pms/Tinkoff/state.json +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Pms/Volet/__init__.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Pms/Volet/_todo_req/req.mjs +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Pms/Volet/_todo_req/req.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Pms/Volet/api.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/Pms/Volet/pl.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/TgWallet/agent.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/TgWallet/asset.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/TgWallet/auth.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/TgWallet/ex.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/TgWallet/inAgent.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/TgWallet/order.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/TgWallet/pyd.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/TgWallet/pyro.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/TgWallet/web.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/__init__.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/loader.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client/pm_unifier.py +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client.egg-info/dependency_links.txt +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client.egg-info/requires.txt +0 -0
- {xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client.egg-info/top_level.txt +0 -0
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
from abc import abstractmethod
|
|
2
2
|
|
|
3
3
|
from pydantic import BaseModel
|
|
4
|
+
from x_client.aiohttp import Client as HttpClient
|
|
4
5
|
from xync_schema import models
|
|
5
6
|
from xync_schema.models import OrderStatus, Coin, Cur, Ad, AdStatus, Actor
|
|
6
7
|
from xync_schema.types import BaseAd
|
|
7
8
|
|
|
8
9
|
from xync_client.Abc.Ex import BaseExClient
|
|
9
|
-
from xync_client.Abc.Base import BaseClient
|
|
10
10
|
from xync_client.Abc.types import CredExOut, BaseOrderReq, BaseAdUpdate
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
class BaseAgentClient(
|
|
13
|
+
class BaseAgentClient(HttpClient):
|
|
14
14
|
def __init__(self, actor: Actor, headers: dict[str, str] = None, cookies: dict[str, str] = None):
|
|
15
15
|
self.actor: Actor = actor
|
|
16
|
-
super().__init__(actor.ex
|
|
17
|
-
self.ex_client: BaseExClient = self.ex.client(actor)
|
|
16
|
+
super().__init__(actor.ex.host_p2p, headers, cookies)
|
|
17
|
+
self.ex_client: BaseExClient = self.actor.ex.client(actor)
|
|
18
18
|
|
|
19
19
|
# 0: Получшение ордеров в статусе status, по монете coin, в валюте coin, в направлении is_sell: bool
|
|
20
20
|
@abstractmethod
|
|
@@ -3,12 +3,11 @@ from abc import abstractmethod
|
|
|
3
3
|
|
|
4
4
|
from aiohttp import ClientResponse
|
|
5
5
|
from aiohttp.http_exceptions import HttpProcessingError
|
|
6
|
+
from x_client.aiohttp import Client as HttpClient
|
|
6
7
|
from xync_schema.models import Actor
|
|
7
8
|
|
|
8
|
-
from xync_client.Abc.Base import BaseClient
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
class BaseAuthClient(BaseClient):
|
|
10
|
+
class BaseAuthClient(HttpClient):
|
|
12
11
|
actor: Actor = None
|
|
13
12
|
|
|
14
13
|
@abstractmethod
|
|
@@ -3,29 +3,37 @@ from abc import abstractmethod
|
|
|
3
3
|
from asyncio import sleep
|
|
4
4
|
|
|
5
5
|
import msgspec
|
|
6
|
-
from aiohttp import ClientSession
|
|
6
|
+
from aiohttp import ClientSession, ClientResponse
|
|
7
7
|
from msgspec import Struct
|
|
8
8
|
from pyro_client.client.file import FileClient
|
|
9
|
-
from pyro_client.loader import API_ID, API_HASH
|
|
10
9
|
from tortoise.exceptions import MultipleObjectsReturned, IntegrityError
|
|
10
|
+
from x_client.aiohttp import Client as HttpClient
|
|
11
11
|
from xync_schema import models
|
|
12
12
|
from xync_schema.enums import FileType, df_curs
|
|
13
13
|
from xync_schema.types import CurEx, CoinEx, BaseAd, BaseAdIn
|
|
14
14
|
|
|
15
|
-
from xync_client.Abc.
|
|
16
|
-
from xync_client.Abc.types import PmEx
|
|
17
|
-
from xync_client.loader import TOKEN
|
|
15
|
+
from xync_client.Abc.types import PmEx, MapOfIdsList
|
|
18
16
|
from xync_client.pm_unifier import PmUnifier, PmUni
|
|
19
17
|
|
|
20
18
|
|
|
21
|
-
class BaseExClient(
|
|
19
|
+
class BaseExClient(HttpClient):
|
|
22
20
|
cur_map: dict[int, str] = {}
|
|
23
21
|
unifier_class: type = PmUnifier
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
logo_pre_url: str
|
|
23
|
+
ex: models.Ex
|
|
24
|
+
|
|
25
|
+
def __init__(
|
|
26
|
+
self,
|
|
27
|
+
ex: models.Ex,
|
|
28
|
+
bot: FileClient,
|
|
29
|
+
attr: str = "host_p2p",
|
|
30
|
+
headers: dict[str, str] = None,
|
|
31
|
+
cookies: dict[str, str] = None,
|
|
32
|
+
proxy: models.Proxy = None,
|
|
33
|
+
):
|
|
34
|
+
self.ex = ex
|
|
35
|
+
self.bot = bot
|
|
36
|
+
super().__init__(getattr(ex, attr), headers, cookies, proxy and proxy.str())
|
|
29
37
|
|
|
30
38
|
@abstractmethod
|
|
31
39
|
def pm_type_map(self, typ: models.Pmex) -> str: ...
|
|
@@ -176,8 +184,6 @@ class BaseExClient(BaseClient):
|
|
|
176
184
|
)
|
|
177
185
|
|
|
178
186
|
# Pmexs
|
|
179
|
-
pbot = FileClient(API_ID, API_HASH, TOKEN)
|
|
180
|
-
await pbot.start()
|
|
181
187
|
async with ClientSession(headers=getattr(self, "logo_headers", None)) as ss:
|
|
182
188
|
pmexs = [
|
|
183
189
|
models.Pmex(
|
|
@@ -186,11 +192,10 @@ class BaseExClient(BaseClient):
|
|
|
186
192
|
ex=self.ex,
|
|
187
193
|
pm=pm,
|
|
188
194
|
name=pmexs_epyds[k].name,
|
|
189
|
-
logo=await self.logo_save(pmexs_epyds[k].logo,
|
|
195
|
+
logo=await self.logo_save(pmexs_epyds[k].logo, ss),
|
|
190
196
|
)
|
|
191
197
|
for k, pm in pms.items()
|
|
192
198
|
]
|
|
193
|
-
await pbot.stop()
|
|
194
199
|
|
|
195
200
|
await models.Pmex.bulk_create(pmexs, on_conflict=["ex_id", "exid"], update_fields=["pm_id", "logo_id", "name"])
|
|
196
201
|
# Pmex banks
|
|
@@ -215,17 +220,17 @@ class BaseExClient(BaseClient):
|
|
|
215
220
|
# pmcurexs = [Pmcurex(pmcur=pmcur, ex=self.ex) for pmcur in pmcurs]
|
|
216
221
|
# await Pmcurex.bulk_create(pmcurexs)
|
|
217
222
|
|
|
218
|
-
async def logo_save(self, url: str | None,
|
|
223
|
+
async def logo_save(self, url: str | None, ss: ClientSession) -> models.File | None:
|
|
219
224
|
if url or (file := None):
|
|
220
225
|
if not url.startswith("https:"):
|
|
221
226
|
if not url.startswith("/"):
|
|
222
227
|
url = "/" + url
|
|
223
|
-
url = "https://" + self.
|
|
228
|
+
url = "https://" + self.logo_pre_url + url
|
|
224
229
|
if not (file := await models.File.get_or_none(name=url)):
|
|
225
230
|
resp = await ss.get(url)
|
|
226
231
|
if resp.ok:
|
|
227
232
|
byts = await resp.read()
|
|
228
|
-
upf, ref = await
|
|
233
|
+
upf, ref = await self.bot.save_doc(byts, resp.content_type)
|
|
229
234
|
await sleep(0.34)
|
|
230
235
|
typ = FileType[resp.content_type.split("/")[-1]]
|
|
231
236
|
file, _ = await models.File.update_or_create({"ref": ref, "size": len(byts), "typ": typ}, name=url)
|
|
@@ -271,3 +276,12 @@ class BaseExClient(BaseClient):
|
|
|
271
276
|
await ad_db.credexs.add(*getattr(ad_pydin, "credexs_", []))
|
|
272
277
|
await ad_db.pmexs.add(*getattr(ad_pydin, "pmexs_", []))
|
|
273
278
|
return ad_db
|
|
279
|
+
|
|
280
|
+
async def _proc(self, resp: ClientResponse, data_key: str = None, body: dict | str = None) -> dict | str:
|
|
281
|
+
if resp.status in (401, 403):
|
|
282
|
+
proxy = await models.Proxy.filter(valid=True, country__short__not="US").order_by("-updated_at").first()
|
|
283
|
+
self.session = ClientSession(
|
|
284
|
+
self.session._base_url, headers=self.session.headers, cookies=self.session.cookie_jar, proxy=proxy
|
|
285
|
+
)
|
|
286
|
+
return await self.METHS[resp.method](self, resp.url.path, body, data_key=data_key)
|
|
287
|
+
return await super()._proc(resp, data_key)
|
|
@@ -8,6 +8,11 @@ from xync_schema.types import PmexBank
|
|
|
8
8
|
|
|
9
9
|
from xync_client.pm_unifier import PmUni
|
|
10
10
|
|
|
11
|
+
DictOfDicts = dict[int | str, dict]
|
|
12
|
+
ListOfDicts = list[dict]
|
|
13
|
+
FlatDict = dict[int | str, str]
|
|
14
|
+
MapOfIdsList = dict[int | str, list[int | str]]
|
|
15
|
+
|
|
11
16
|
|
|
12
17
|
class PmTrait:
|
|
13
18
|
typ: PmType | None = None
|
|
@@ -7,9 +7,8 @@ from xync_schema import models, types
|
|
|
7
7
|
from xync_schema.models import Ex, Cur
|
|
8
8
|
from xync_schema.enums import PmType
|
|
9
9
|
|
|
10
|
-
from xync_client.Abc.Base import MapOfIdsList
|
|
11
10
|
from xync_client.Abc.Ex import BaseExClient
|
|
12
|
-
from xync_client.Abc.types import PmEx
|
|
11
|
+
from xync_client.Abc.types import PmEx, MapOfIdsList
|
|
13
12
|
from xync_client.Htx.etype import pm, Country, ad
|
|
14
13
|
from xync_client.loader import PG_DSN
|
|
15
14
|
from xync_client.pm_unifier import PmUnifier
|
|
@@ -40,7 +39,8 @@ class ExClient(BaseExClient):
|
|
|
40
39
|
res = (await self._get(f"/-/x/otc/v1/trade/fast/config/list?side={side}&tradeMode=c2c_simple"))["data"]
|
|
41
40
|
for coin in res:
|
|
42
41
|
for cur in coin["quoteAsset"]:
|
|
43
|
-
|
|
42
|
+
if coen := rcoins.get(coin["cryptoAsset"]["name"]):
|
|
43
|
+
pair[rcurs[cur["name"]]] += [coen]
|
|
44
44
|
return tuple(pairs.values())
|
|
45
45
|
|
|
46
46
|
async def ads(
|
|
@@ -15,6 +15,14 @@ from xync_schema.models import Ex
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class ExClient(BaseExClient):
|
|
18
|
+
class MexcUnifier(PmUnifier):
|
|
19
|
+
pm_map = {
|
|
20
|
+
"Philippine National Bank (PNB)": "Philippines National Bank (PNB)",
|
|
21
|
+
"Al-Rajhi Bank": "Al Rajhi Bank",
|
|
22
|
+
"SBP - Fast Bank Transfer": "SBP",
|
|
23
|
+
"Touch 'n Go": "Touch n Go",
|
|
24
|
+
}
|
|
25
|
+
|
|
18
26
|
logo_headers = {
|
|
19
27
|
"accept-language": "ru,en;q=0.9",
|
|
20
28
|
"priority": "u=0, i",
|
|
@@ -24,15 +32,7 @@ class ExClient(BaseExClient):
|
|
|
24
32
|
"sec-fetch-site": "none", # work from CURL, not work from aiohttp with no this header
|
|
25
33
|
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36",
|
|
26
34
|
}
|
|
27
|
-
|
|
28
|
-
class MexcUnifier(PmUnifier):
|
|
29
|
-
pm_map = {
|
|
30
|
-
"Philippine National Bank (PNB)": "Philippines National Bank (PNB)",
|
|
31
|
-
"Al-Rajhi Bank": "Al Rajhi Bank",
|
|
32
|
-
"SBP - Fast Bank Transfer": "SBP",
|
|
33
|
-
"Touch 'n Go": "Touch n Go",
|
|
34
|
-
}
|
|
35
|
-
|
|
35
|
+
logo_pre_url = "www.mexc.com/api/file/download"
|
|
36
36
|
unifier_class = MexcUnifier
|
|
37
37
|
|
|
38
38
|
async def _pms(self, cur) -> list[pm.PmE]:
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
from x_client.aiohttp import Client
|
|
2
|
-
from xync_schema.models import Ex
|
|
3
|
-
|
|
4
|
-
DictOfDicts = dict[int | str, dict]
|
|
5
|
-
ListOfDicts = list[dict]
|
|
6
|
-
FlatDict = dict[int | str, str]
|
|
7
|
-
MapOfIdsList = dict[int | str, list[int | str]]
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class BaseClient(Client):
|
|
11
|
-
ex: Ex
|
|
12
|
-
|
|
13
|
-
def __init__(
|
|
14
|
-
self, ex: Ex, attr: str = "host_p2p", headers: dict[str, str] = None, cookies: dict[str, str] = None, **kwargs
|
|
15
|
-
):
|
|
16
|
-
self.ex = ex
|
|
17
|
-
super().__init__(getattr(ex, attr), headers, cookies)
|
|
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.46.dev2 → xync_client-0.0.48.dev1}/tests/_todo_refact/Binance/test_binance.py
RENAMED
|
File without changes
|
|
File without changes
|
{xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/tests/_todo_refact/Bybit/test_bybit_p2p.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
|
{xync_client-0.0.46.dev2 → xync_client-0.0.48.dev1}/xync_client.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|