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"]}')exceptExceptionaserror:print(error)
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);}
//JAVA 21+//DEPS org.symbol:symbol-sdk:3.3.3importjava.io.IOException;importjava.net.URI;importjava.net.http.HttpClient;importjava.net.http.HttpRequest;importjava.net.http.HttpResponse;importjava.net.http.HttpResponse.BodyHandlers;importcom.fasterxml.jackson.databind.JsonNode;importcom.fasterxml.jackson.databind.ObjectMapper;publicfinalclassGetNamespaceInfo{privatestaticfinalObjectMapperJSON_MAPPER=newObjectMapper();privatestaticfinalHttpClientHTTP_CLIENT=HttpClient.newHttpClient();privatestaticfinalStringNODE_URL=System.getenv().getOrDefault("NODE_URL","http://libertalia.nemtest.net:7890");publicstaticvoidmain(finalString[]args){try{newGetNamespaceInfo().run();}catch(finalExceptionex){System.out.println(null==ex.getMessage()?ex.toString():ex.getMessage());}}privatevoidrun()throwsIOException,InterruptedException{System.out.printf("Using node %s%n",NODE_URL);finalStringnamespaceName=System.getenv().getOrDefault("NAMESPACE_NAME","company");System.out.printf("Namespace name: %s%n",namespaceName);// Fetch namespace informationfinalStringnamespacePath=String.format("/namespace?namespace=%s",namespaceName);System.out.printf("Fetching namespace information from %s%n",namespacePath);finalHttpRequestnamespaceRequest=HttpRequest.newBuilder(URI.create(NODE_URL+namespacePath)).GET().build();finalHttpResponse<String>namespaceResponse=HTTP_CLIENT.send(namespaceRequest,BodyHandlers.ofString());if(2!=namespaceResponse.statusCode()/100)thrownewIOException("HTTP error! status: "+namespaceResponse.statusCode());finalJsonNodenamespaceInfo=JSON_MAPPER.readTree(namespaceResponse.body());System.out.println("Namespace information:");System.out.printf(" Name: %s%n",namespaceInfo.get("fqn").asText());System.out.printf(" Owner: %s%n",namespaceInfo.get("owner").asText());finallongleaseHeight=namespaceInfo.get("height").asLong();System.out.printf(" Height: %d%n",leaseHeight);// Compute the lease expirationfinallongleaseDuration=525_600;finalHttpRequestheightRequest=HttpRequest.newBuilder(URI.create(NODE_URL+"/chain/height")).GET().build();finalHttpResponse<String>heightResponse=HTTP_CLIENT.send(heightRequest,BodyHandlers.ofString());finallongcurrentHeight=JSON_MAPPER.readTree(heightResponse.body()).get("height").asLong();finallongexpirationHeight=leaseHeight+leaseDuration;System.out.printf("%nCurrent chain height: %d%n",currentHeight);System.out.printf("Lease expiration height: %d%n",expirationHeight);System.out.printf("Blocks until expiration: %d%n",expirationHeight-currentHeight);// List the subnamespacesfinalStringowner=namespaceInfo.get("owner").asText();finalStringsubnamespacesPath=String.format("/account/namespace/page?address=%s&parent=%s",owner,namespaceName);System.out.printf("%nFetching subnamespaces from %s%n",subnamespacesPath);finalHttpRequestsubnamespacesRequest=HttpRequest.newBuilder(URI.create(NODE_URL+subnamespacesPath)).GET().build();finalHttpResponse<String>subnamespacesResponse=HTTP_CLIENT.send(subnamespacesRequest,BodyHandlers.ofString());finalJsonNodesubnamespaces=JSON_MAPPER.readTree(subnamespacesResponse.body()).get("data");System.out.printf("Subnamespaces of %s: %d%n",namespaceName,subnamespaces.size());for(finalJsonNodesubnamespace:subnamespaces)System.out.printf(" %s%n",subnamespace.get("fqn").asText());// List the mosaics defined under the namespacefinalStringmosaicsPath=String.format("/namespace/mosaic/definition/page?namespace=%s",namespaceName);System.out.printf("%nFetching mosaic definitions from %s%n",mosaicsPath);finalHttpRequestmosaicsRequest=HttpRequest.newBuilder(URI.create(NODE_URL+mosaicsPath)).GET().build();finalHttpResponse<String>mosaicsResponse=HTTP_CLIENT.send(mosaicsRequest,BodyHandlers.ofString());finalJsonNodemosaics=JSON_MAPPER.readTree(mosaicsResponse.body()).get("data");System.out.printf("Mosaics defined under %s: %d%n",namespaceName,mosaics.size());for(finalJsonNodeentry:mosaics){finalJsonNodeid=entry.get("mosaic").get("id");System.out.printf(" %s:%s%n",id.get("namespaceId").asText(),id.get("name").asText());}}}
# 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 subnamespacesfinalStringowner=namespaceInfo.get("owner").asText();finalStringsubnamespacesPath=String.format("/account/namespace/page?address=%s&parent=%s",owner,namespaceName);System.out.printf("%nFetching subnamespaces from %s%n",subnamespacesPath);finalHttpRequestsubnamespacesRequest=HttpRequest.newBuilder(URI.create(NODE_URL+subnamespacesPath)).GET().build();finalHttpResponse<String>subnamespacesResponse=HTTP_CLIENT.send(subnamespacesRequest,BodyHandlers.ofString());finalJsonNodesubnamespaces=JSON_MAPPER.readTree(subnamespacesResponse.body()).get("data");System.out.printf("Subnamespaces of %s: %d%n",namespaceName,subnamespaces.size());for(finalJsonNodesubnamespace:subnamespaces)System.out.printf(" %s%n",subnamespace.get("fqn").asText());
# 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}`);}
// List the mosaics defined under the namespacefinalStringmosaicsPath=String.format("/namespace/mosaic/definition/page?namespace=%s",namespaceName);System.out.printf("%nFetching mosaic definitions from %s%n",mosaicsPath);finalHttpRequestmosaicsRequest=HttpRequest.newBuilder(URI.create(NODE_URL+mosaicsPath)).GET().build();finalHttpResponse<String>mosaicsResponse=HTTP_CLIENT.send(mosaicsRequest,BodyHandlers.ofString());finalJsonNodemosaics=JSON_MAPPER.readTree(mosaicsResponse.body()).get("data");System.out.printf("Mosaics defined under %s: %d%n",namespaceName,mosaics.size());for(finalJsonNodeentry:mosaics){finalJsonNodeid=entry.get("mosaic").get("id");System.out.printf(" %s:%s%n",id.get("namespaceId").asText(),id.get("name").asText());}
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