importjsonimportosimporturllib.requestNODE_URL=os.getenv('NODE_URL','http://libertalia.nemtest.net:7890')print(f'Using node {NODE_URL}')NAMESPACE_NAME=os.getenv('NAMESPACE_NAME','company')print(f'Namespace name: {NAMESPACE_NAME}')try:# Fetch namespace informationnamespace_path=f'/namespace?namespace={NAMESPACE_NAME}'print(f'Fetching namespace information from {namespace_path}')withurllib.request.urlopen(f'{NODE_URL}{namespace_path}')asresponse:namespace_info=json.loads(response.read().decode())print('Namespace information:')print(f' Name: {namespace_info["fqn"]}')print(f' Owner: {namespace_info["owner"]}')lease_height=namespace_info['height']print(f' Height: {lease_height}')# Compute the lease expirationLEASE_DURATION=525600# approximately one year of blockswithurllib.request.urlopen(f'{NODE_URL}/chain/height')asresponse:current_height=json.loads(response.read().decode())['height']expiration_height=lease_height+LEASE_DURATIONprint(f'\nCurrent chain height: {current_height}')print(f'Lease expiration height: {expiration_height}')print(f'Blocks until expiration: {expiration_height-current_height}')# List the subnamespacesowner=namespace_info['owner']subnamespaces_path=(f'/account/namespace/page'f'?address={owner}&parent={NAMESPACE_NAME}')print(f'\nFetching subnamespaces from {subnamespaces_path}')withurllib.request.urlopen(f'{NODE_URL}{subnamespaces_path}')asresponse:subnamespaces=json.loads(response.read().decode())['data']print(f'Subnamespaces of {NAMESPACE_NAME}: {len(subnamespaces)}')forsubnamespaceinsubnamespaces:print(f' {subnamespace["fqn"]}')# List the mosaics defined under the namespacemosaics_path=(f'/namespace/mosaic/definition/page?namespace={NAMESPACE_NAME}')print(f'\nFetching mosaic definitions from {mosaics_path}')withurllib.request.urlopen(f'{NODE_URL}{mosaics_path}')asresponse:mosaics=json.loads(response.read().decode())['data']print(f'Mosaics defined under {NAMESPACE_NAME}: {len(mosaics)}')forentryinmosaics:mosaic_id=entry['mosaic']['id']print(f' {mosaic_id["namespaceId"]}:{mosaic_id["name"]}')exceptExceptionase:print(e)
constNODE_URL=process.env.NODE_URL||'http://libertalia.nemtest.net:7890';console.log('Using node',NODE_URL);constNAMESPACE_NAME=process.env.NAMESPACE_NAME||'company';console.log('Namespace name:',NAMESPACE_NAME);try{// Fetch namespace informationconstnamespacePath=`/namespace?namespace=${NAMESPACE_NAME}`;console.log('Fetching namespace information from',namespacePath);constnamespaceResponse=awaitfetch(`${NODE_URL}${namespacePath}`);if(!namespaceResponse.ok)thrownewError(`HTTP error! status: ${namespaceResponse.status}`);constnamespaceInfo=awaitnamespaceResponse.json();console.log('Namespace information:');console.log(' Name:',namespaceInfo.fqn);console.log(' Owner:',namespaceInfo.owner);constleaseHeight=namespaceInfo.height;console.log(' Height:',leaseHeight);// Compute the lease expirationconstLEASE_DURATION=525600;// approximately one year of blocksconstchainResponse=awaitfetch(`${NODE_URL}/chain/height`);constcurrentHeight=(awaitchainResponse.json()).height;constexpirationHeight=leaseHeight+LEASE_DURATION;console.log('\nCurrent chain height:',currentHeight);console.log('Lease expiration height:',expirationHeight);console.log('Blocks until expiration:',expirationHeight-currentHeight);// List the subnamespacesconstowner=namespaceInfo.owner;constsubnamespacesPath='/account/namespace/page'+`?address=${owner}&parent=${NAMESPACE_NAME}`;console.log('\nFetching subnamespaces from',subnamespacesPath);constsubnamespacesResponse=awaitfetch(`${NODE_URL}${subnamespacesPath}`);constsubnamespaces=(awaitsubnamespacesResponse.json()).data;console.log(`Subnamespaces of ${NAMESPACE_NAME}:`,subnamespaces.length);for(constsubnamespaceofsubnamespaces)console.log(` ${subnamespace.fqn}`);// List the mosaics defined under the namespaceconstmosaicsPath=`/namespace/mosaic/definition/page?namespace=${NAMESPACE_NAME}`;console.log('\nFetching mosaic definitions from',mosaicsPath);constmosaicsResponse=awaitfetch(`${NODE_URL}${mosaicsPath}`);constmosaics=(awaitmosaicsResponse.json()).data;console.log(`Mosaics defined under ${NAMESPACE_NAME}:`,mosaics.length);for(constentryofmosaics){constmosaicId=entry.mosaic.id;console.log(` ${mosaicId.namespaceId}:${mosaicId.name}`);}}catch(e){console.error(e.message);}
# Compute the lease expirationLEASE_DURATION=525600# approximately one year of blockswithurllib.request.urlopen(f'{NODE_URL}/chain/height')asresponse:current_height=json.loads(response.read().decode())['height']expiration_height=lease_height+LEASE_DURATIONprint(f'\nCurrent chain height: {current_height}')print(f'Lease expiration height: {expiration_height}')print(f'Blocks until expiration: {expiration_height-current_height}')
// Compute the lease expirationconstLEASE_DURATION=525600;// approximately one year of blocksconstchainResponse=awaitfetch(`${NODE_URL}/chain/height`);constcurrentHeight=(awaitchainResponse.json()).height;constexpirationHeight=leaseHeight+LEASE_DURATION;console.log('\nCurrent chain height:',currentHeight);console.log('Lease expiration height:',expirationHeight);console.log('Blocks until expiration:',expirationHeight-currentHeight);
# List the subnamespacesowner=namespace_info['owner']subnamespaces_path=(f'/account/namespace/page'f'?address={owner}&parent={NAMESPACE_NAME}')print(f'\nFetching subnamespaces from {subnamespaces_path}')withurllib.request.urlopen(f'{NODE_URL}{subnamespaces_path}')asresponse:subnamespaces=json.loads(response.read().decode())['data']print(f'Subnamespaces of {NAMESPACE_NAME}: {len(subnamespaces)}')forsubnamespaceinsubnamespaces:print(f' {subnamespace["fqn"]}')
// List the subnamespacesconstowner=namespaceInfo.owner;constsubnamespacesPath='/account/namespace/page'+`?address=${owner}&parent=${NAMESPACE_NAME}`;console.log('\nFetching subnamespaces from',subnamespacesPath);constsubnamespacesResponse=awaitfetch(`${NODE_URL}${subnamespacesPath}`);constsubnamespaces=(awaitsubnamespacesResponse.json()).data;console.log(`Subnamespaces of ${NAMESPACE_NAME}:`,subnamespaces.length);for(constsubnamespaceofsubnamespaces)console.log(` ${subnamespace.fqn}`);
# List the mosaics defined under the namespacemosaics_path=(f'/namespace/mosaic/definition/page?namespace={NAMESPACE_NAME}')print(f'\nFetching mosaic definitions from {mosaics_path}')withurllib.request.urlopen(f'{NODE_URL}{mosaics_path}')asresponse:mosaics=json.loads(response.read().decode())['data']print(f'Mosaics defined under {NAMESPACE_NAME}: {len(mosaics)}')forentryinmosaics:mosaic_id=entry['mosaic']['id']print(f' {mosaic_id["namespaceId"]}:{mosaic_id["name"]}')
// List the mosaics defined under the namespaceconstmosaicsPath=`/namespace/mosaic/definition/page?namespace=${NAMESPACE_NAME}`;console.log('\nFetching mosaic definitions from',mosaicsPath);constmosaicsResponse=awaitfetch(`${NODE_URL}${mosaicsPath}`);constmosaics=(awaitmosaicsResponse.json()).data;console.log(`Mosaics defined under ${NAMESPACE_NAME}:`,mosaics.length);for(constentryofmosaics){constmosaicId=entry.mosaic.id;console.log(` ${mosaicId.namespaceId}:${mosaicId.name}`);}
Using node http://libertalia.nemtest.net:7890
Namespace name: company
Fetching namespace information from /namespace?namespace=company
Namespace information:
Name: company
Owner: TBONKWCOWBZYZB2I5JD3LSDBQVBYHB757VN3SKPP
Height: 625711
Current chain height: 655420
Lease expiration height: 1151311
Blocks until expiration: 495891
Fetching subnamespaces from /account/namespace/page?address=TBONKWCOWBZYZB2I5JD3LSDBQVBYHB757VN3SKPP&parent=company
Subnamespaces of company: 1
company.division
Fetching mosaic definitions from /namespace/mosaic/definition/page?namespace=company
Mosaics defined under company: 1
company:token