#sdk #prototype #networking #file #io #dao #newcoin

app nc_rsdk

This is a prototype of a Rust SDK providing functionality for interacting with the Newcoin network

1 unstable release

0.1.0 Feb 28, 2023

#25 in #prototype

MIT license

70KB
1.5K SLoC

REST API example application

This is a prototype of a Rust SDK providing functionality for interacting with the Newcoin network.

The expected api functionality is exampled via the main.rs file.

//** This command will not yet work as rs_ncdao has not yet been uploaded to crates.io. **//

Install

cargo install nc_rsdk

Run the app

cargo run

Run the tests

cargo test

Get Table Rows/With Payload:

   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 / Exports

@newfound8ion/newcoin-rs-api

Table of contents

Namespaces

Classes

Type Aliases

Variables

Type Aliases

NCApproveDaoProposal

Ƭ NCApproveDaoProposal: Struct

Type declaration

Name Type
approver String
approver_prv_key String
dao_id u32
dao_owner String
proposal_author String
proposal_id u32

Defined in

types.ts:185


NCBuyRam

Ƭ NCBuyRam: Struct

Type declaration

Name Type
payer String
payer_prv_key String
ram_amt u32
user String

Defined in

types.ts:16


NCChangeFile

Ƭ NCChangeFile: Struct

Type declaration

Name Type
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

Defined in

types.ts:380


NCCreateCollection

Ƭ NCCreateCollection: Struct

Type declaration

Name Type
allow_notify bool
burnable bool
collection_name String
max_supply u32
mkt_fee u32
schema_fields Vec<NCNameType>
schema_name String
template_fields Vec<NCNameType>
template_name String
user String
user_prv_active_key String
xferable bool

Defined in

types.ts:35


NCCreateDao

Ƭ NCCreateDao: Struct

Type declaration

Name Type
author String
author_prv_key String
descr String
token String

Defined in

types.ts:138


NCCreateDaoProposal

Ƭ NCCreateDaoProposal: Struct

Type declaration

Name Type
dao_id String
dao_owner String
pass_rate u32
proposer String
proposer_prv_key String
summary String
title String
url String
vote_end String
vote_start String

Defined in

types.ts:145


NCCreateDaoStakeProposal

Ƭ NCCreateDaoStakeProposal: Struct

Type declaration

Name Type
dao_id String
dao_owner String
pass_rate u32
proposer String
proposer_prv_key String
quantity (Struct) { contract: String, quantity: String }
quantity.contract String
quantity.quantity String
to String
vote_end String
vote_start String

Defined in

types.ts:170


NCCreateDaoUserWhitelistProposal

Ƭ NCCreateDaoUserWhitelistProposal: Struct

Type declaration

Name Type
dao_id String
dao_owner String
pass_rate u32
proposer String
proposer_prv_key String
type String
user String
vote_end String
vote_start String

Defined in

types.ts:158


NCCreatePermission

Ƭ NCCreatePermission: Struct

Type declaration

Name Type
author String
author_prv_active_key String
perm_name String
perm_pub_key String

Defined in

types.ts:50


NCCreatePool

Ƭ NCCreatePool: Struct

Type declaration

Name Type
is_deflatable bool
is_inflatable bool
is_treasury bool
owner String
owner_prv_active_key String
ticker String

Defined in

types.ts:65


NCCreateUser

Ƭ NCCreateUser: Struct

Type declaration

Name Type
cpu_amount String
net_amount String
newUser String
newacc_pub_active_key String
newacc_pub_owner_key String
payer String
payer_prv_key String
ram_amt u32
xfer bool

Defined in

types.ts:23


NCDaoProposalVote

Ƭ NCDaoProposalVote: Struct

Type declaration

Name Type
dao_id String
dao_owner String
option String
proposal_id String
proposal_type String
quantity String
voter String
voter_prv_key String

Defined in

types.ts:217


NCDaoWithdrawVoteDeposit

Ƭ NCDaoWithdrawVoteDeposit: Struct

Type declaration

Name Type
vote_id String
voter String
voter_prv_key String

Defined in

types.ts:228


NCExecuteDaoProposal

Ƭ NCExecuteDaoProposal: Struct

Type declaration

Name Type
dao_id u32
dao_owner String
exec String
exec_prv_key String
proposal_author String
proposal_id u32

Defined in

types.ts:194


NCGetAccInfo

Ƭ NCGetAccInfo: Struct

Type declaration

Name Type
contract String
owner String
token_name String

Defined in

types.ts:392


NCGetDaoProposals

Ƭ NCGetDaoProposals: Struct

Type declaration

Name Type
dao_id String
dao_owner String
limit u32
lower_bound String
proposal_author String
proposal_id String
reverse bool
upper_bound String

Defined in

types.ts:204


NCGetDaoWhiteList

Ƭ NCGetDaoWhiteList: Struct

Type declaration

Name Type
dao_id String
dao_owner String
limit String
lower_bound String
reverse bool
upper_bound String

Defined in

types.ts:242


NCGetPoolInfo

Ƭ NCGetPoolInfo: Struct

Type declaration

Name Type
code String
owner String

Defined in

types.ts:398


NCGetVotes

Ƭ NCGetVotes: Struct

Type declaration

Name Type
limit String
lower_bound String
reverse bool
upper_bound String
voter String

Defined in

types.ts:234


NCKeyPair

Ƭ NCKeyPair: Struct

Type declaration

Name Type
prv_key String
pub_key String

Defined in

types.ts:6


NCKeyValPair

Ƭ NCKeyValPair: Struct

Type declaration

Name Type
key String
value Vec<String>

Defined in

types.ts:251


NCLinkPerm

Ƭ NCLinkPerm: Struct

Type declaration

Name Type
action_owner String
action_to_link String
author String
author_prv_active_key String
perm_to_link String

Defined in

types.ts:57


NCMintAsset

Ƭ NCMintAsset: Struct

Type declaration

Name Type
col_name String
creator String
immutable_data Vec<NCKeyValPair>
mutable_data Vec<NCKeyValPair>
payer String
payer_prv_key String
sch_name String
tmpl_id u32
user_prv_active_key String

Defined in

types.ts:256


NCMintFile

Ƭ NCMintFile: Struct

Type declaration

Name Type
content String
creator String
image String
name String
path String
payer String
payer_prv_key String
user_prv_active_key String

Defined in

types.ts:369


Ƭ NCMintLink: Struct

Type declaration

Name Type
col_name String
creator String
description String
image String
payer String
payer_prv_key String
subj_name String
subj_type String

Defined in

types.ts:285


NCMintProfile

Ƭ NCMintProfile: Struct

Type declaration

Name Type
apple String
aspectRatio String
authority String
bio String
blurHash String
content String
contentType String
contentUrl String
coverContentUrl String
creator String
discord String
displayName String
email String
facebook String
facebookId String
firstName String
fullName String
instagram String
lastName String
medium String
offer String
payer String
payer_prv_key String
phone String
pinterest String
reddit String
signal String
signature String
snapchat String
soundcloud String
source String
spotify String
status String
telegram String
tiktok String
tumblr String
twitter String
user_prv_active_key String
username String
youtube String
youtubeId String

Defined in

types.ts:318


NCModifyAsset

Ƭ NCModifyAsset: Struct

Type declaration

Name Type
asset_id String
editor String
new_data Vec<NCKeyValPair>
owner String
payer String
payer_prv_key String

Defined in

types.ts:268


NCNameType

Ƭ NCNameType: Struct

Type declaration

Name Type
name String
type String

Defined in

types.ts:11


NCPoolsInfo

Ƭ NCPoolsInfo: Struct

Type declaration

Name Type
more bool
next_key String
rows Vec<NCPoolInfo>

Defined in

types.ts:124


NCReturnInfo

Ƭ NCReturnInfo: Struct

Type declaration

Name Type
acc_balances Vec<String>

Defined in

types.ts:442


NCReturnTxs

Ƭ NCReturnTxs: Struct

Type declaration

Name Type
TxID String
TxID_WithdrawVoteDeposit String
TxID_addToWhiteList String
TxID_approveDaoProposal String
TxID_changeFile String
TxID_createAcc String
TxID_createCol String
TxID_createDao String
TxID_createDaoProposal String
TxID_createPerm String
TxID_createPool String
TxID_createSch String
TxID_createTpl String
TxID_executeDaoProposal String
TxID_linkPerm String
TxID_mintAsset String
TxID_mintFile String
TxID_mintNft String
TxID_mintProfile String
TxID_modifyAsset String
TxID_removeFromWhiteList String
TxID_stakeMainDAO String
TxID_stakePool String
TxID_txNcoBalance String
TxID_unstakeMainDAO String
TxID_unstakePool String
TxID_voteDaoProposal String
TxID_withdrawFromPool String
asset_id String
dao_id String
pool_code String
pool_id String
proposal_id u32
template_id String
tx TransactResult

Defined in

types.ts:403


NCStakeMainDao

Ƭ NCStakeMainDao: Struct

Type declaration

Name Type
amt String
payer String
payer_prv_key String

Defined in

types.ts:74


NCStakePool

Ƭ NCStakePool: Struct

Type declaration

Name Type
amt String
owner String
payer String
payer_prv_key String

Defined in

types.ts:80


NCTxBal

Ƭ NCTxBal: Struct

Type declaration

Name Type
amt String
memo String
payer String
payer_prv_key String
to String

Defined in

types.ts:102


NCTxNcoBal

Ƭ NCTxNcoBal: Struct

Type declaration

Name Type
amt String
memo String
payer String
payer_prv_key String
to String

Defined in

types.ts:94


NCUnstakePool

Ƭ NCUnstakePool: Struct

Type declaration

Name Type
amt String
payer String
payer_prv_key String

Defined in

types.ts:87

Variables

default_nft_schema

Const default_nft_schema: { name: String, nft_schema_type: String}

Defined in

schemas.ts:9


devnet_services

Const devnet_services: NCInitServices

Defined in

system.ts:43


devnet_urls

Const devnet_urls: NCInitUrls

Defined in

system.ts:26


file_schema

Const file_schema: { name: String, file_schema_type: String}[]

Defined in

schemas.ts:19


Const link_schema: { name: String, link_schema_type: String}[]

Defined in

schemas.ts:91


profile_schema

Const profile_schema: { name: String, profile_schema_type: String}[]

Defined in

schemas.ts:38

//** As of yet, the text below has not been reworked for the application.** //

REST API

The REST API to the example app is described below.

Get list of Things

Request

GET /thing/

curl -i -H 'Accept: application/json' http://localhost:7000/thing/

Response

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

[]

Get Dao Proposal by Id:

    let url_val = NCInitUrlsDev::default().nodeos_url.clone();
    let gtr_response: Response = get_table_rows().await;
    let data = gtr_response.json().await;

Request

POST /thing/

curl -i -H 'Accept: application/json' -d 'name=Foo&status=new' http://localhost:7000/thing

Response

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 a specific Thing

Request

GET /thing/id

curl -i -H 'Accept: application/json' http://localhost:7000/thing/1

Response

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 a non-existent Thing

Request

GET /thing/id

curl -i -H 'Accept: application/json' http://localhost:7000/thing/9999

Response

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"}

Create another new Thing

Request

POST /thing/

curl -i -H 'Accept: application/json' -d 'name=Bar&junk=rubbish' http://localhost:7000/thing

Response

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 list of Things again

Request

GET /thing/

curl -i -H 'Accept: application/json' http://localhost:7000/thing/

Response

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}]

Change a Thing's state

Request

PUT /thing/:id/status/changed

curl -i -H 'Accept: application/json' -X PUT http://localhost:7000/thing/1/status/changed

Response

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 changed Thing

Request

GET /thing/id

curl -i -H 'Accept: application/json' http://localhost:7000/thing/1

Response

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"}

Change a Thing

Request

PUT /thing/:id

curl -i -H 'Accept: application/json' -X PUT -d 'name=Foo&status=changed2' http://localhost:7000/thing/1

Response

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"}

Attempt to change a Thing using partial params

Request

PUT /thing/:id

curl -i -H 'Accept: application/json' -X PUT -d 'status=changed3' http://localhost:7000/thing/1

Response

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"}

Attempt to change a Thing using invalid params

Request

PUT /thing/:id

curl -i -H 'Accept: application/json' -X PUT -d 'id=99&status=changed4' http://localhost:7000/thing/1

Response

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"}

Change a Thing using the _method hack

Request

POST /thing/:id_method=POST

curl -i -H 'Accept: application/json' -X POST -d 'name=Baz&_method=PUT' http://localhost:7000/thing/1

Response

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"}

Change a Thing using the _method hack in the url

Request

POST /thing/:id_method=POST

curl -i -H 'Accept: application/json' -X POST -d 'name=Qux' http://localhost:7000/thing/1_method=PUT

Response

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 a Thing

Request

DELETE /thing/id

curl -i -H 'Accept: application/json' -X DELETE http://localhost:7000/thing/1/

Response

HTTP/1.1 204 No Content
Date: Thu, 24 Feb 2011 12:36:32 GMT
Status: 204 No Content
Connection: close

Try to delete same Thing again

Request

DELETE /thing/id

curl -i -H 'Accept: application/json' -X DELETE http://localhost:7000/thing/1/

Response

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 deleted Thing

Request

GET /thing/1

curl -i -H 'Accept: application/json' http://localhost:7000/thing/1

Response

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"}

Delete a Thing using the _method hack

Request

DELETE /thing/id

curl -i -H 'Accept: application/json' -X POST -d'_method=DELETE' http://localhost:7000/thing/2/

Response

HTTP/1.1 204 No Content
Date: Thu, 24 Feb 2011 12:36:33 GMT
Status: 204 No Content
Connection: close

Dependencies

~8–20MB
~305K SLoC