xync-client 0.0.25.dev59__tar.gz → 0.0.25.dev62__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.25.dev59/xync_client.egg-info → xync_client-0.0.25.dev62}/PKG-INFO +1 -1
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/tests/TestEx.py +8 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Abc/Ex.py +18 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/BingX/ex.py +4 -3
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Htx/ex.py +5 -4
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/KuCoin/etype/ad.py +6 -3
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/KuCoin/ex.py +34 -18
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62/xync_client.egg-info}/PKG-INFO +1 -1
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/.env.sample +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/.gitignore +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/.pre-commit-config.yaml +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/README.md +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/makefile +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/pyproject.toml +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/setup.cfg +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/tests/TestAgent.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/tests/TestAsset.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/tests/TestOrder.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/tests/_todo_refact/Binance/test_binance.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/tests/_todo_refact/Bybit/test_bybit.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/tests/_todo_refact/Bybit/test_bybit_p2p.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/tests/_todo_refact/Gate/test_gate.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/tests/_todo_refact/Htx/test_htx_p2p.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/tests/_todo_refact/Wallet/test_agent.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/tests/_todo_refact/Wallet/test_ex.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/tests/_todo_refact/__init__.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/tests/_todo_refact/_test_ex.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Abc/Agent.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Abc/Asset.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Abc/AuthTrait.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Abc/Base.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Abc/BaseTest.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Abc/InAgent.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Abc/Order.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Abc/types.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Binance/__init__.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Binance/binance_async.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Binance/earn_api.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Binance/ex.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Binance/exceptions.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Binance/sapi.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Binance/web_c2c.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/BingX/__init__.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/BingX/agent.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/BingX/base.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/BingX/etype/ad.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/BingX/etype/pm.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/BingX/req.mjs +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/BingX/sign.js +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/BitGet/__init__.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/BitGet/agent.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/BitGet/ex.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/BitGet/req.mjs +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Bybit/agent.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Bybit/ex.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Bybit/web_earn.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Bybit/web_p2p.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Gate/ex.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Gate/premarket.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Htx/agent.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Htx/earn.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Htx/etype/__init__.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Htx/etype/ad.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Htx/etype/cred.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Htx/etype/pm.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/KuCoin/etype/pm.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/KuCoin/web.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Okx/etype/ad.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Okx/etype/pm.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/Okx/ex.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/TgWallet/agent.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/TgWallet/asset.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/TgWallet/auth.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/TgWallet/ex.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/TgWallet/inAgent.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/TgWallet/order.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/TgWallet/pyd.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/TgWallet/pyro.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/TgWallet/web.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/__init__.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/loader.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/pm_unifier.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client/pyro.py +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client.egg-info/SOURCES.txt +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client.egg-info/dependency_links.txt +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client.egg-info/requires.txt +0 -0
- {xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client.egg-info/top_level.txt +0 -0
|
@@ -100,3 +100,11 @@ class TestEx(BaseTest):
|
|
|
100
100
|
t, _ = await ExTest.update_or_create({"ok": True}, ex=client.ex, action=ExAction.set_pmcurs)
|
|
101
101
|
assert t.ok, "PmCurs not set"
|
|
102
102
|
logging.info(f"{client.ex.name}: {ExAction.ads.name} - ok")
|
|
103
|
+
|
|
104
|
+
# 0
|
|
105
|
+
async def test_set_pairs(self, clients: list[BaseExClient]):
|
|
106
|
+
for client in clients:
|
|
107
|
+
await client.set_pairs()
|
|
108
|
+
t, _ = await ExTest.update_or_create({"ok": True}, ex=client.ex, action=ExAction.set_pairs)
|
|
109
|
+
assert t.ok, "Pairs not set"
|
|
110
|
+
logging.info(f"{client.ex.name}: {ExAction.ads.name} - ok")
|
|
@@ -193,6 +193,24 @@ class BaseExClient(BaseClient):
|
|
|
193
193
|
]
|
|
194
194
|
await models.Coinex.bulk_create(coinexs, update_fields=["minimum"], on_conflict=["coin_id", "ex_id"])
|
|
195
195
|
|
|
196
|
+
# Импорт пар биржи в бд
|
|
197
|
+
async def set_pairs(self):
|
|
198
|
+
curs: dict[str, CurEx] = {
|
|
199
|
+
k: (await models.Cur.get_or_create(ticker=c.ticker))[0] for k, c in (await self.curs()).items()
|
|
200
|
+
}
|
|
201
|
+
coins: dict[str, CoinEx] = {
|
|
202
|
+
k: (await models.Coin.get_or_create(ticker=c.ticker))[0] for k, c in (await self.coins()).items()
|
|
203
|
+
}
|
|
204
|
+
prs: tuple[dict, dict] = await self.pairs()
|
|
205
|
+
for is_sell in (0, 1):
|
|
206
|
+
dirs: list[models.Direction] = []
|
|
207
|
+
for cur, coinz in prs[is_sell].items():
|
|
208
|
+
for coin in coinz:
|
|
209
|
+
pair, _ = await models.Pair.get_or_create(coin=coins[coin], cur=curs[cur])
|
|
210
|
+
pairex, _ = await models.PairEx.get_or_create(pair=pair, ex=self.ex)
|
|
211
|
+
dirs += [models.Direction(sell=is_sell, pairex=pairex)]
|
|
212
|
+
await models.Direction.bulk_create(dirs, ignore_conflicts=True)
|
|
213
|
+
|
|
196
214
|
# Сохранение чужого объявления (с Pm-ами) в бд
|
|
197
215
|
async def ad_pydin2db(self, ad_pydin: BaseAdIn) -> models.Ad:
|
|
198
216
|
ad_db, _ = await models.Ad.update_or_create(**ad_pydin.df_unq())
|
|
@@ -74,13 +74,13 @@ class ExClient(BaseExClient, BaseBingXClient):
|
|
|
74
74
|
|
|
75
75
|
# 24: ads
|
|
76
76
|
async def ads(
|
|
77
|
-
|
|
77
|
+
self, coin_exid: str, cur_exid: str, is_sell: bool, pm_exids: list[str | int] = None, amount: int = None
|
|
78
78
|
) -> list[ad.Ad]:
|
|
79
79
|
params = {
|
|
80
80
|
"type": 1,
|
|
81
81
|
"fiat": cur_exid,
|
|
82
82
|
"asset": coin_exid,
|
|
83
|
-
"amount":
|
|
83
|
+
"amount": amount,
|
|
84
84
|
"hidePaymentInfo": "",
|
|
85
85
|
"payMethodId": pm_exids if pm_exids else "",
|
|
86
86
|
"isUserMatchCondition": "true" if is_sell else "false",
|
|
@@ -94,6 +94,8 @@ async def main():
|
|
|
94
94
|
_ = await init_db(PG_DSN, models, True)
|
|
95
95
|
bg = await Ex.get(name="BingX")
|
|
96
96
|
cl = ExClient(bg)
|
|
97
|
+
_ads = await cl.ads("USDT", "RUB", False)
|
|
98
|
+
await cl.set_pairs()
|
|
97
99
|
await cl.set_coinexs()
|
|
98
100
|
await cl.set_pmcurexs()
|
|
99
101
|
# _curs = await cl.curs()
|
|
@@ -101,7 +103,6 @@ async def main():
|
|
|
101
103
|
# _pairs = await cl.pairs()
|
|
102
104
|
# _pms = await cl.pms("EUR")
|
|
103
105
|
# _pms_map = await cl.cur_pms_map()
|
|
104
|
-
# _ads = await cl.ads("USDT", "RUB", False)
|
|
105
106
|
await cl.close()
|
|
106
107
|
|
|
107
108
|
|
|
@@ -101,7 +101,7 @@ class ExClient(BaseExClient):
|
|
|
101
101
|
return pmsd
|
|
102
102
|
|
|
103
103
|
# 21: Get all: currency,pay,allCountry,coin
|
|
104
|
-
async def curs(self) -> dict[
|
|
104
|
+
async def curs(self) -> dict[int, types.CurEx]:
|
|
105
105
|
self.session.headers["client-type"] = "web"
|
|
106
106
|
curs: list[dict] = (await self._coin_curs_pms())["currency"]
|
|
107
107
|
cmap: dict[str, int] = {c["nameShort"]: c["currencyId"] for c in curs}
|
|
@@ -110,7 +110,7 @@ class ExClient(BaseExClient):
|
|
|
110
110
|
for c in res:
|
|
111
111
|
for q in c["quoteAsset"]:
|
|
112
112
|
cursd[q["name"]] = max(cursd.get(q["name"], 0), float(q["minAmount"]))
|
|
113
|
-
return {
|
|
113
|
+
return {exid: types.CurEx(exid=exid, ticker=tkr, minimum=cursd.get(tkr)) for tkr, exid in cmap.items()}
|
|
114
114
|
|
|
115
115
|
# 22: Список платежных методов по каждой валюте
|
|
116
116
|
async def cur_pms_map(self) -> dict[int, set[int]]:
|
|
@@ -119,13 +119,13 @@ class ExClient(BaseExClient):
|
|
|
119
119
|
return {c["currencyId"]: set(c["supportPayments"]) - wrong_pms for c in res["currency"] if c["supportPayments"]}
|
|
120
120
|
|
|
121
121
|
# 23: Список торгуемых монет
|
|
122
|
-
async def coins(self) -> dict[
|
|
122
|
+
async def coins(self) -> dict[int, types.CoinEx]:
|
|
123
123
|
self.session.headers["client-type"] = "web"
|
|
124
124
|
coins: list[dict] = (await self._coin_curs_pms())["coin"]
|
|
125
125
|
cmap: dict[str, int] = {c["coinCode"]: c["coinId"] for c in coins}
|
|
126
126
|
res = (await self._get("/-/x/otc/v1/trade/fast/config/list?side=buy&tradeMode=c2c_simple"))["data"]
|
|
127
127
|
coinsl: list[str] = [c["cryptoAsset"]["name"] for c in res]
|
|
128
|
-
return {
|
|
128
|
+
return {cid: types.CoinEx(exid=cid, ticker=tkr, p2p=tkr in coinsl) for tkr, cid in cmap.items()}
|
|
129
129
|
|
|
130
130
|
# 99: Страны
|
|
131
131
|
async def countries(self) -> list[Country]:
|
|
@@ -157,6 +157,7 @@ async def main():
|
|
|
157
157
|
_ = await init_db(PG_DSN, models, True)
|
|
158
158
|
ex = await Ex.get(name="Htx")
|
|
159
159
|
cl = ExClient(ex)
|
|
160
|
+
await cl.set_pairs()
|
|
160
161
|
await cl.pms()
|
|
161
162
|
await cl.pairs()
|
|
162
163
|
await cl.set_pmcurexs()
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
from pydantic import BaseModel, Field
|
|
2
2
|
from typing import List, Optional
|
|
3
|
+
from xync_schema.types import BaseAd
|
|
4
|
+
|
|
3
5
|
|
|
4
6
|
class AdPayType(BaseModel):
|
|
5
7
|
id: str
|
|
@@ -10,8 +12,9 @@ class AdPayType(BaseModel):
|
|
|
10
12
|
subBranch: Optional[str] = None
|
|
11
13
|
reservedFields: Optional[str] = None
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
|
|
16
|
+
class Ad(BaseAd):
|
|
17
|
+
exid: str | None = Field(alias="id")
|
|
15
18
|
side: str
|
|
16
19
|
legal: str
|
|
17
20
|
currency: str
|
|
@@ -46,4 +49,4 @@ class Ad(BaseModel):
|
|
|
46
49
|
tradeLimitTip: Optional[str] = None
|
|
47
50
|
opponentBalanceLimit: str
|
|
48
51
|
blackStatus: int
|
|
49
|
-
self: bool
|
|
52
|
+
self: bool
|
|
@@ -14,58 +14,74 @@ from xync_client.Abc.types import PmEx
|
|
|
14
14
|
class ExClient(BaseExClient):
|
|
15
15
|
async def _pms(self, cur) -> list[pm.PmE]:
|
|
16
16
|
params = {
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
"legal": cur,
|
|
18
|
+
"lang": "ru_RU",
|
|
19
19
|
}
|
|
20
20
|
pms = await self._get("/_api/otc/legal/payTypes", params=params)
|
|
21
21
|
return [pm.PmE(**_pm) for _pm in pms["data"]]
|
|
22
22
|
|
|
23
|
-
async def curs(self) ->
|
|
23
|
+
async def curs(self) -> dict[types.CurEx]:
|
|
24
24
|
curs = (await self._get("/_api/otc/dictionary/getData", {"type": "LEGAL"}))["data"]
|
|
25
|
-
return {
|
|
26
|
-
cur["typeCode"]:types.CurEx(exid=cur["typeCode"], ticker=cur["typeCode"]) for cur in curs
|
|
27
|
-
}
|
|
25
|
+
return {cur["typeCode"]: types.CurEx(exid=cur["typeCode"], ticker=cur["typeCode"]) for cur in curs}
|
|
28
26
|
|
|
29
27
|
async def pms(self, cur: models.Cur = None) -> dict[int | str, PmEx]:
|
|
30
28
|
all_pms = {}
|
|
31
29
|
for cur_obj in (await self.curs()).values():
|
|
32
30
|
pms = await self._pms(cur_obj.ticker)
|
|
33
|
-
for
|
|
34
|
-
all_pms[
|
|
31
|
+
for p in pms:
|
|
32
|
+
all_pms[p.payTypeCode] = PmEx(exid=p.payTypeCode, name=p.payTypeName)
|
|
35
33
|
return all_pms
|
|
36
34
|
|
|
37
35
|
async def cur_pms_map(self) -> MapOfIdsList:
|
|
38
|
-
return {
|
|
36
|
+
return {
|
|
37
|
+
cur.exid: [pm.payTypeCode for pm in await self._pms(cur.ticker)] for cur in (await self.curs()).values()
|
|
38
|
+
}
|
|
39
39
|
|
|
40
|
-
async def coins(self) ->
|
|
40
|
+
async def coins(self) -> dict[types.CoinEx]:
|
|
41
41
|
all_coins = {}
|
|
42
42
|
for cur in (await self.curs()).keys():
|
|
43
43
|
params = {
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
"legal": cur,
|
|
45
|
+
"lang": "ru_RU",
|
|
46
46
|
}
|
|
47
47
|
coins = await self._get("/_api/otc/symbol/support", params=params)
|
|
48
48
|
for coin in coins["data"]:
|
|
49
|
-
all_coins[coin["currency"]] = types.CoinEx(
|
|
49
|
+
all_coins[coin["currency"]] = types.CoinEx(
|
|
50
|
+
exid=coin["currency"], ticker=coin["currency"], scale=coin["currencyPrecision"]
|
|
51
|
+
)
|
|
50
52
|
return all_coins
|
|
51
53
|
|
|
52
|
-
async def pairs(self) -> MapOfIdsList:
|
|
54
|
+
async def pairs(self) -> tuple[MapOfIdsList, MapOfIdsList]:
|
|
53
55
|
coins = (await self.coins()).keys()
|
|
54
56
|
curs = (await self.curs()).keys()
|
|
55
57
|
s = {cur: {c for c in coins} for cur in curs}
|
|
56
58
|
return s, s
|
|
57
59
|
|
|
58
60
|
async def ads(
|
|
59
|
-
|
|
61
|
+
self, coin_exid: str, cur_exid: str, is_sell: bool, pm_exids: list[str | int] = None, amount: int = None
|
|
60
62
|
) -> list[ad.Ad]:
|
|
61
|
-
|
|
63
|
+
params = {
|
|
64
|
+
"status": "PUTUP",
|
|
65
|
+
"currency": coin_exid,
|
|
66
|
+
"legal": cur_exid,
|
|
67
|
+
"page": "1",
|
|
68
|
+
"pageSize": "10",
|
|
69
|
+
"side": "SELL",
|
|
70
|
+
"amount": amount or "",
|
|
71
|
+
"payTypeCodes": pm_exids or "",
|
|
72
|
+
"sortCode": "PRICE",
|
|
73
|
+
"highQualityMerchant": "0",
|
|
74
|
+
"lang": "ru_RU",
|
|
75
|
+
}
|
|
76
|
+
ads = await self._get("/_api/otc/ad/list", params=params)
|
|
77
|
+
return [ad.Ad(price=a["floatPrice"], **a) for a in ads["items"]]
|
|
62
78
|
|
|
63
79
|
|
|
64
80
|
async def main():
|
|
65
81
|
_ = await init_db(PG_DSN, models, True)
|
|
66
|
-
bg = await Ex.get(name="KuCoin")
|
|
82
|
+
bg = await models.Ex.get(name="KuCoin")
|
|
67
83
|
cl = ExClient(bg)
|
|
68
|
-
|
|
84
|
+
_ads = await cl.ads("USDT", "RUB", False)
|
|
69
85
|
# await cl.coins()
|
|
70
86
|
await cl.pms()
|
|
71
87
|
|
|
File without changes
|
|
File without changes
|
|
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.25.dev59 → xync_client-0.0.25.dev62}/tests/_todo_refact/Binance/test_binance.py
RENAMED
|
File without changes
|
{xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/tests/_todo_refact/Bybit/test_bybit.py
RENAMED
|
File without changes
|
{xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/tests/_todo_refact/Bybit/test_bybit_p2p.py
RENAMED
|
File without changes
|
|
File without changes
|
{xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/tests/_todo_refact/Htx/test_htx_p2p.py
RENAMED
|
File without changes
|
{xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/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
|
{xync_client-0.0.25.dev59 → xync_client-0.0.25.dev62}/xync_client.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|