dev@locazia: add blockchain routes, edit resolve content system to cid class, add web2 docs
This commit is contained in:
1 parent
78a4a84c2b
commit
d7ebc26bce
14 files changed
+314
-61
No files matched your search
@@ -0,0 +1,118 @@
|
||||
## Web2 Client (through HTTP API)
|
||||
|
||||
### API Public Endpoints
|
||||
|
||||
```text
|
||||
https://music-gateway.letsw.app
|
||||
– /api/v1
|
||||
```
|
||||
|
||||
### Telegram WebApp Authorization
|
||||
|
||||
[Implementation](../app/api/routes/auth.py)
|
||||
|
||||
#### Request (POST, /api/v1/auth.twa, JSON)
|
||||
|
||||
```javascript
|
||||
{
|
||||
twa_data: window.Telegram.WebApp.initData
|
||||
}
|
||||
```
|
||||
|
||||
#### Response (JSON)
|
||||
|
||||
```javascript
|
||||
{
|
||||
user: { ...User },
|
||||
connected_wallet: null | {
|
||||
version: string,
|
||||
address: string,
|
||||
ton_balance: string // nanoTON bignum
|
||||
},
|
||||
auth_v1_token: string
|
||||
}
|
||||
```
|
||||
|
||||
**Use** `auth_v1_token` as `Authorization` header for all authorized requests.
|
||||
|
||||
### Upload file
|
||||
|
||||
[Implementation](../app/api/routes/node_storage.py)
|
||||
|
||||
#### Request (POST, /api/v1/storage, FormData)
|
||||
|
||||
```javascript
|
||||
{
|
||||
file: File
|
||||
}
|
||||
```
|
||||
|
||||
#### Response (JSON)
|
||||
|
||||
```javascript
|
||||
{
|
||||
content_sha256: string,
|
||||
content_id_v1: string,
|
||||
content_url: string
|
||||
}
|
||||
```
|
||||
|
||||
### Download file
|
||||
|
||||
[Implementation](../app/api/routes/node_storage.py)
|
||||
|
||||
#### Request (GET, /api/v1/storage/:content_id)
|
||||
|
||||
#### Response (File)
|
||||
|
||||
### Create new content
|
||||
|
||||
[Implementation](../app/api/routes/blockchain.py)
|
||||
|
||||
#### Request (POST, /api/v1/blockchain.sendNewContentMessage, JSON)
|
||||
|
||||
```javascript
|
||||
{
|
||||
title: string,
|
||||
authors: list,
|
||||
content: string, // recommended dmy://
|
||||
image: string, // recommended dmy://
|
||||
description: string,
|
||||
price: string, // nanoTON bignum
|
||||
resaleLicensePrice: string // nanoTON bignum (default = 0)
|
||||
allowResale: boolean,
|
||||
royaltyParams: [{
|
||||
address: string,
|
||||
value: number // 10000 = 100%
|
||||
}]
|
||||
}
|
||||
```
|
||||
|
||||
#### Response (JSON)
|
||||
|
||||
```javascript
|
||||
{
|
||||
message: "Transaction requested"
|
||||
}
|
||||
```
|
||||
|
||||
### Purchase content
|
||||
|
||||
[Implementation](../app/api/routes/blockchain.py)
|
||||
|
||||
#### Request (POST, /api/v1/blockchain.sendPurchaseContentMessage, JSON)
|
||||
|
||||
```javascript
|
||||
{
|
||||
content_address: string,
|
||||
price: string // nanoTON bignum
|
||||
}
|
||||
```
|
||||
|
||||
#### Response (JSON)
|
||||
|
||||
```javascript
|
||||
{
|
||||
message: "Transaction requested"
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,9 @@
|
||||
## Web2 Client Task #280224
|
||||
|
||||
1. В процессе изменения дизайна сделать все элементы по нормальному в отличие от того как сейчас: чтобы страница состояла из компонентов, а не монолитно написана.
|
||||
2. Сделать чтобы при нажатии на кнопку "Загрузить контент" открывалось окно с "Перейдите в кошелек, вы запросили транзакцию" и если сервер в дополнении к обычному message вернул еще и walletLink, то отобразить кнопку для перехода в кошелек
|
||||
3. Чтобы запросить транзакцию, нужно отправить запрос `docs/web2-client/UploadFile` с файлом и получить в ответ content_url, который после загрузки изображения и самого контента нужно приложить в запрос `docs/web2-client/CreateNewContent` в поле image и content соответственно
|
||||
4. Желательно: сделать отображение загруженной обложки в виде карточки с кнопкой "Удалить" и "Изменить" (при нажатии на изменить открывается окно загрузки контента)
|
||||
5. Обработать чтобы контент проходил полную цепочку загрузки (загрузка изображения, загрузка контента, запрос транзакции через бэкенд) и после всего вебапп закрывался через window.Telegram.WebApp.close()
|
||||
6. Сделать дизайн как хочет Миша
|
||||
7. Обработать ситуацию когда кошелек не подключен, то есть в ответе на запрос `docs/web2-client/auth.twa` приходит connected_wallet: null
|
||||
Reference in new issue
Block a user