1 个不稳定版本
0.1.0 | 2023年2月28日 |
---|
#16 in #dao
70KB
1.5K SLoC
REST API 示例应用程序
这是一个提供与 Newcoin 网络交互功能的 Rust SDK 原型。
期望的 API 功能通过 main.rs
文件进行示例。
//** 此命令尚不可用,因为 rs_ncdao 尚未上传到 crates.io。 **//
安装
cargo install nc_rsdk
运行应用程序
cargo run
运行测试
cargo test
获取表行/带有有效载荷
let gtr_response = get_table_rows().await;
let data_1 = gtr_response.text().await?;
let gtr_wp_response = get_proposal_by_id(&payload).await;
let data_2 = gtr_wp_response.unwrap_err();
let gtr_wp: Response = get_table_rows_with_payload(&payload).await.unwrap();
@newfound8ion/newcoin-sdk / 导出
@newfound8ion/newcoin-rs-api
目录
命名空间
类
类型别名
- NCApproveDaoProposal
- NCBuyRam
- NCChangeFile
- NCCreateCollection
- NCCreateDao
- NCCreateDaoProposal
- NCCreateDaoStakeProposal
- NCCreateDaoUserWhitelistProposal
- NCCreatePermission
- NCCreatePool
- NCCreateUser
- NCDaoProposalVote
- NCDaoWithdrawVoteDeposit
- NCExecuteDaoProposal
- NCGetAccInfo
- NCGetDaoProposals
- NCGetDaoWhiteList
- NCGetPoolInfo
- NCGetVotes
- NCKeyPair
- NCKeyValPair
- NCLinkPerm
- NCMintAsset
- NCMintFile
- NCMintLink
- NCMintProfile
- NCModifyAsset
- NCNameType
- NCPoolsInfo
- NCReturnInfo
- NCReturnTxs
- NCStakeMainDao
- NCStakePool
- NCTxBal
- NCTxNcoBal
- NCUnstakePool
变量
类型别名
NCApproveDaoProposal
Ƭ NCApproveDaoProposal: Struct
类型声明
名称 | 类型 |
---|---|
approver |
String |
approver_prv_key |
String |
dao_id |
u32 |
dao_owner |
String |
proposal_author |
String |
proposal_id |
u32 |
定义在
NCBuyRam
Ƭ NCBuyRam: Struct
类型声明
名称 | 类型 |
---|---|
payer |
String |
payer_prv_key |
String |
ram_amt |
u32 |
user |
String |
定义在
NCChangeFile
Ƭ NCChangeFile: Struct
类型声明
名称 | 类型 |
---|---|
asset_id |
String |
editor |
String |
new_content |
String |
new_image |
String |
new_name |
String |
new_path |
String |
owner |
String |
payer |
String |
payer_prv_key |
String |
定义在
NCCreateCollection
Ƭ NCCreateCollection: Struct
类型声明
名称 | 类型 |
---|---|
allow_notify |
bool |
burnable |
bool |
collection_name |
String |
max_supply |
u32 |
市场费用 |
u32 |
模式字段 |
Vec<NCNameType> |
模式名称 |
String |
模板字段 |
Vec<NCNameType> |
模板名称 |
String |
user |
String |
用户活跃密钥 |
String |
可转移 |
bool |
定义在
NCCreateDao
结构体 NCCreateDao: Struct
类型声明
名称 | 类型 |
---|---|
作者 |
String |
作者私钥 |
String |
描述 |
String |
代币 |
String |
定义在
NCCreateDaoProposal
结构体 NCCreateDaoProposal: Struct
类型声明
名称 | 类型 |
---|---|
dao_id |
String |
dao_owner |
String |
通过率 |
u32 |
提议者 |
String |
提议者私钥 |
String |
摘要 |
String |
标题 |
String |
网址 |
String |
投票结束 |
String |
投票开始 |
String |
定义在
NCCreateDaoStakeProposal
结构体 NCCreateDaoStakeProposal: Struct
类型声明
名称 | 类型 |
---|---|
dao_id |
String |
dao_owner |
String |
通过率 |
u32 |
提议者 |
String |
提议者私钥 |
String |
数量 |
(Struct ) { contract : String , quantity : String } |
数量.合约 |
String |
数量.数量 |
String |
到 |
String |
投票结束 |
String |
投票开始 |
String |
定义在
NCCreateDaoUserWhitelistProposal
结构体 NCCreateDaoUserWhitelistProposal: Struct
类型声明
名称 | 类型 |
---|---|
dao_id |
String |
dao_owner |
String |
通过率 |
u32 |
提议者 |
String |
提议者私钥 |
String |
类型 |
String |
user |
String |
投票结束 |
String |
投票开始 |
String |
定义在
NCCreatePermission
结构体 NCCreatePermission: Struct
类型声明
名称 | 类型 |
---|---|
作者 |
String |
作者活跃私钥 |
String |
权限名称 |
String |
权限公钥 |
String |
定义在
NCCreatePool
结构体 NCCreatePool: Struct
类型声明
名称 | 类型 |
---|---|
是否可缩放 |
bool |
是否可膨胀 |
bool |
是否为金库 |
bool |
owner |
String |
所有者活跃私钥 |
String |
代币符号 |
String |
定义在
NCCreateUser
结构体 NCCreateUser: Struct
类型声明
名称 | 类型 |
---|---|
CPU数量 |
String |
网络数量 |
String |
新用户 |
String |
新账户公钥活跃密钥 |
String |
新账户所有者公钥 |
String |
payer |
String |
payer_prv_key |
String |
ram_amt |
u32 |
转移 |
bool |
定义在
NCDaoProposalVote
结构体 NCDaoProposalVote: Struct
类型声明
名称 | 类型 |
---|---|
dao_id |
String |
dao_owner |
String |
选项 |
String |
proposal_id |
String |
提议类型 |
String |
数量 |
String |
投票者 |
String |
投票者私钥 |
String |
定义在
NCDaoWithdrawVoteDeposit
结构体 NCDaoWithdrawVoteDeposit: Struct
类型声明
名称 | 类型 |
---|---|
投票ID |
String |
投票者 |
String |
投票者私钥 |
String |
定义在
NCExecuteDaoProposal
结构体 NCExecuteDaoProposal: Struct
类型声明
名称 | 类型 |
---|---|
dao_id |
u32 |
dao_owner |
String |
执行 |
String |
执行私钥 |
String |
proposal_author |
String |
proposal_id |
u32 |
定义在
NCGetAccInfo
结构体 NCGetAccInfo: Struct
类型声明
名称 | 类型 |
---|---|
合约 |
String |
owner |
String |
代币名称 |
String |
定义在
NCGetDaoProposals
结构体 NCGetDaoProposals: Struct
类型声明
名称 | 类型 |
---|---|
dao_id |
String |
dao_owner |
String |
限制 |
u32 |
下界 |
String |
proposal_author |
String |
proposal_id |
String |
反向 |
bool |
上界 |
String |
定义在
NCGetDaoWhiteList
结构体 NCGetDaoWhiteList: Struct
类型声明
名称 | 类型 |
---|---|
dao_id |
String |
dao_owner |
String |
限制 |
String |
下界 |
String |
反向 |
bool |
上界 |
String |
定义在
NCGetPoolInfo
结构体 NCGetPoolInfo: Struct
类型声明
名称 | 类型 |
---|---|
代码 |
String |
owner |
String |
定义在
NCGetVotes
结构体 NCGetVotes: Struct
类型声明
名称 | 类型 |
---|---|
限制 |
String |
下界 |
String |
反向 |
bool |
上界 |
String |
投票者 |
String |
定义在
NCKeyPair
结构体 NCKeyPair: Struct
类型声明
名称 | 类型 |
---|---|
私钥 |
String |
公钥 |
String |
定义在
NCKeyValPair
结构体 NCKeyValPair: Struct
类型声明
名称 | 类型 |
---|---|
键 |
String |
值 |
Vec<String> |
定义在
NCLinkPerm
结构体 NCLinkPerm: Struct
类型声明
名称 | 类型 |
---|---|
操作所有者 |
String |
链接到的操作 |
String |
作者 |
String |
作者活跃私钥 |
String |
链接到的权限 |
String |
定义在
NCMintAsset
结构体 NCMintAsset: Struct
类型声明
名称 | 类型 |
---|---|
列名称 |
String |
创建者 |
String |
不可变数据 |
Vec<NCKeyValPair> |
可变数据 |
Vec<NCKeyValPair> |
payer |
String |
payer_prv_key |
String |
模式名称 |
String |
模板ID |
u32 |
用户活跃密钥 |
String |
定义在
NCMintFile
结构体 NCMintFile: Struct
类型声明
名称 | 类型 |
---|---|
内容 |
String |
创建者 |
String |
图像 |
String |
名称 |
String |
路径 |
String |
payer |
String |
payer_prv_key |
String |
用户活跃密钥 |
String |
定义在
NCMintLink
结构体 NCMintLink: Struct
类型声明
名称 | 类型 |
---|---|
列名称 |
String |
创建者 |
String |
描述 |
String |
图像 |
String |
payer |
String |
payer_prv_key |
String |
主题名称 |
String |
主题类型 |
String |
定义在
NCMintProfile
结构体 NCMintProfile: Struct
类型声明
名称 | 类型 |
---|---|
苹果 |
String |
宽高比 |
String |
权限 |
String |
生物 |
String |
模糊哈希 |
String |
内容 |
String |
内容类型 |
String |
内容URL |
String |
封面内容URL |
String |
创建者 |
String |
discord |
String |
显示名称 |
String |
电子邮件 |
String |
facebook |
String |
facebookId |
String |
名 |
String |
全名 |
String |
instagram |
String |
姓 |
String |
medium |
String |
出价 |
String |
payer |
String |
payer_prv_key |
String |
电话 |
String |
pinterest |
String |
reddit |
String |
signal |
String |
签名 |
String |
snapchat |
String |
soundcloud |
String |
来源 |
String |
spotify |
String |
状态 |
String |
telegram |
String |
tiktok |
String |
tumblr |
String |
twitter |
String |
用户活跃密钥 |
String |
用户名 |
String |
youtube |
String |
youtubeId |
String |
定义在
NCModifyAsset
结构体 NCModifyAsset: Struct
类型声明
名称 | 类型 |
---|---|
asset_id |
String |
editor |
String |
新数据 |
Vec<NCKeyValPair> |
owner |
String |
payer |
String |
payer_prv_key |
String |
定义在
NCNameType
结构体 NCNameType: Struct
类型声明
名称 | 类型 |
---|---|
名称 |
String |
类型 |
String |
定义在
NCPoolsInfo
结构体 NCPoolsInfo: Struct
类型声明
名称 | 类型 |
---|---|
更多 |
bool |
下一个键 |
String |
行 |
Vec<NCPoolInfo> |
定义在
NCReturnInfo
结构体 NCReturnInfo: Struct
类型声明
名称 | 类型 |
---|---|
账户余额 |
Vec<String> |
定义在
NCReturnTxs
结构体 NCReturnTxs: Struct
类型声明
名称 | 类型 |
---|---|
交易ID |
String |
提现投票存款交易ID |
String |
添加到白名单交易ID |
String |
批准DAO提案交易ID |
String |
更改文件交易ID |
String |
创建账户交易ID |
String |
创建列交易ID |
String |
创建DAO交易ID |
String |
创建DAO提案交易ID |
String |
创建永久权限交易ID |
String |
创建池交易ID |
String |
创建计划交易ID |
String |
创建模板交易ID |
String |
执行DAO提案交易ID |
String |
链接永久权限交易ID |
String |
铸造资产交易ID |
String |
铸造文件交易ID |
String |
铸造NFT交易ID |
String |
铸造个人资料交易ID |
String |
修改资产交易ID |
String |
从白名单中删除交易ID |
String |
抵押主DAO交易ID |
String |
抵押池交易ID |
String |
交易Nco余额交易ID |
String |
取消抵押主DAO交易ID |
String |
取消抵押池交易ID |
String |
投票给DAO提案交易ID |
String |
从池中提现交易ID |
String |
asset_id |
String |
dao_id |
String |
池代码 |
String |
池ID |
String |
proposal_id |
u32 |
模板ID |
String |
交易 |
交易结果 |
定义在
NCStakeMainDao
结构体 NCStakeMainDao: Struct
类型声明
名称 | 类型 |
---|---|
金额 |
String |
payer |
String |
payer_prv_key |
String |
定义在
NCStakePool
结构体 NCStakePool: Struct
类型声明
名称 | 类型 |
---|---|
金额 |
String |
owner |
String |
payer |
String |
payer_prv_key |
String |
定义在
NCTxBal
结构体 NCTxBal: Struct
类型声明
名称 | 类型 |
---|---|
金额 |
String |
备注 |
String |
payer |
String |
payer_prv_key |
String |
到 |
String |
定义在
NCTxNcoBal
结构体 NCTxNcoBal: Struct
类型声明
名称 | 类型 |
---|---|
金额 |
String |
备注 |
String |
payer |
String |
payer_prv_key |
String |
到 |
String |
定义在
NCUnstakePool
结构体 NCUnstakePool: Struct
类型声明
名称 | 类型 |
---|---|
金额 |
String |
payer |
String |
payer_prv_key |
String |
定义在
变量
default_nft_schema
常量 default_nft_schema
: { name
: String
, nft_schema_type
: String
}
定义在
devnet_services
常量 devnet_services
: NCInitServices
定义在
devnet_urls
常量 devnet_urls
: NCInitUrls
定义在
file_schema
常量 file_schema
: { name
: String
, file_schema_type
: String
}[]
定义在
link_schema
常量 link_schema
: { name
: String
, link_schema_type
: String
}[]
定义在
profile_schema
常量 profile_schema
: { name
: String
, profile_schema_type
: String
}[]
定义在
//** 目前以下文本尚未为应用重新编写。** //
REST API
以下是示例应用的REST API描述。
获取事物列表
请求
GET /thing/
curl -i -H 'Accept: application/json' https://127.0.0.1:7000/thing/
响应
HTTP/1.1 200 OK
Date: Thu, 24 Feb 2011 12:36:30 GMT
Status: 200 OK
Connection: close
Content-Type: application/json
Content-Length: 2
[]
通过ID获取DAO提案
let url_val = NCInitUrlsDev::default().nodeos_url.clone();
let gtr_response: Response = get_table_rows().await;
let data = gtr_response.json().await;
请求
POST /thing/
curl -i -H 'Accept: application/json' -d 'name=Foo&status=new' https://127.0.0.1:7000/thing
响应
HTTP/1.1 201 Created
Date: Thu, 24 Feb 2011 12:36:30 GMT
Status: 201 Created
Connection: close
Content-Type: application/json
Location: /thing/1
Content-Length: 36
{"id":1,"name":"Foo","status":"new"}
获取特定事物
请求
GET /thing/id
curl -i -H 'Accept: application/json' https://127.0.0.1:7000/thing/1
响应
HTTP/1.1 200 OK
Date: Thu, 24 Feb 2011 12:36:30 GMT
Status: 200 OK
Connection: close
Content-Type: application/json
Content-Length: 36
{"id":1,"name":"Foo","status":"new"}
获取不存在的物体
请求
GET /thing/id
curl -i -H 'Accept: application/json' https://127.0.0.1:7000/thing/9999
响应
HTTP/1.1 404 Not Found
Date: Thu, 24 Feb 2011 12:36:30 GMT
Status: 404 Not Found
Connection: close
Content-Type: application/json
Content-Length: 35
{"status":404,"reason":"Not found"}
创建另一个新事物
请求
POST /thing/
curl -i -H 'Accept: application/json' -d 'name=Bar&junk=rubbish' https://127.0.0.1:7000/thing
响应
HTTP/1.1 201 Created
Date: Thu, 24 Feb 2011 12:36:31 GMT
Status: 201 Created
Connection: close
Content-Type: application/json
Location: /thing/2
Content-Length: 35
{"id":2,"name":"Bar","status":null}
再次获取事物列表
请求
GET /thing/
curl -i -H 'Accept: application/json' https://127.0.0.1:7000/thing/
响应
HTTP/1.1 200 OK
Date: Thu, 24 Feb 2011 12:36:31 GMT
Status: 200 OK
Connection: close
Content-Type: application/json
Content-Length: 74
[{"id":1,"name":"Foo","status":"new"},{"id":2,"name":"Bar","status":null}]
更改事物状态
请求
PUT /thing/:id/状态/changed
curl -i -H 'Accept: application/json' -X PUT https://127.0.0.1:7000/thing/1/status/changed
响应
HTTP/1.1 200 OK
Date: Thu, 24 Feb 2011 12:36:31 GMT
Status: 200 OK
Connection: close
Content-Type: application/json
Content-Length: 40
{"id":1,"name":"Foo","status":"changed"}
获取更改后的物体
请求
GET /thing/id
curl -i -H 'Accept: application/json' https://127.0.0.1:7000/thing/1
响应
HTTP/1.1 200 OK
Date: Thu, 24 Feb 2011 12:36:31 GMT
Status: 200 OK
Connection: close
Content-Type: application/json
Content-Length: 40
{"id":1,"name":"Foo","status":"changed"}
更改事物
请求
PUT /thing/:id
curl -i -H 'Accept: application/json' -X PUT -d 'name=Foo&status=changed2' https://127.0.0.1:7000/thing/1
响应
HTTP/1.1 200 OK
Date: Thu, 24 Feb 2011 12:36:31 GMT
Status: 200 OK
Connection: close
Content-Type: application/json
Content-Length: 41
{"id":1,"name":"Foo","status":"changed2"}
尝试使用部分参数更改事物
请求
PUT /thing/:id
curl -i -H 'Accept: application/json' -X PUT -d 'status=changed3' https://127.0.0.1:7000/thing/1
响应
HTTP/1.1 200 OK
Date: Thu, 24 Feb 2011 12:36:32 GMT
Status: 200 OK
Connection: close
Content-Type: application/json
Content-Length: 41
{"id":1,"name":"Foo","status":"changed3"}
尝试使用无效参数更改事物
请求
PUT /thing/:id
curl -i -H 'Accept: application/json' -X PUT -d 'id=99&status=changed4' https://127.0.0.1:7000/thing/1
响应
HTTP/1.1 200 OK
Date: Thu, 24 Feb 2011 12:36:32 GMT
Status: 200 OK
Connection: close
Content-Type: application/json
Content-Length: 41
{"id":1,"name":"Foo","status":"changed4"}
使用_method黑客更改事物
请求
POST /thing/:id_method=POST
curl -i -H 'Accept: application/json' -X POST -d 'name=Baz&_method=PUT' https://127.0.0.1:7000/thing/1
响应
HTTP/1.1 200 OK
Date: Thu, 24 Feb 2011 12:36:32 GMT
Status: 200 OK
Connection: close
Content-Type: application/json
Content-Length: 41
{"id":1,"name":"Baz","status":"changed4"}
在URL中使用_method黑客更改事物
请求
POST /thing/:id_method=POST
curl -i -H 'Accept: application/json' -X POST -d 'name=Qux' https://127.0.0.1:7000/thing/1_method=PUT
响应
HTTP/1.1 404 Not Found
Date: Thu, 24 Feb 2011 12:36:32 GMT
Status: 404 Not Found
Connection: close
Content-Type: text/html;charset=utf-8
Content-Length: 35
{"status":404,"reason":"Not found"}
删除一个事物
请求
DELETE /thing/id
curl -i -H 'Accept: application/json' -X DELETE https://127.0.0.1:7000/thing/1/
响应
HTTP/1.1 204 No Content
Date: Thu, 24 Feb 2011 12:36:32 GMT
Status: 204 No Content
Connection: close
再次尝试删除相同的事物
请求
DELETE /thing/id
curl -i -H 'Accept: application/json' -X DELETE https://127.0.0.1:7000/thing/1/
响应
HTTP/1.1 404 Not Found
Date: Thu, 24 Feb 2011 12:36:32 GMT
Status: 404 Not Found
Connection: close
Content-Type: application/json
Content-Length: 35
{"status":404,"reason":"Not found"}
获取已删除的事物
请求
GET /thing/1
curl -i -H 'Accept: application/json' https://127.0.0.1:7000/thing/1
响应
HTTP/1.1 404 Not Found
Date: Thu, 24 Feb 2011 12:36:33 GMT
Status: 404 Not Found
Connection: close
Content-Type: application/json
Content-Length: 35
{"status":404,"reason":"Not found"}
使用_method黑客删除事物
请求
DELETE /thing/id
curl -i -H 'Accept: application/json' -X POST -d'_method=DELETE' https://127.0.0.1:7000/thing/2/
响应
HTTP/1.1 204 No Content
Date: Thu, 24 Feb 2011 12:36:33 GMT
Status: 204 No Content
Connection: close
依赖项
~7-23MB
~318K SLoC