Awesome
etherid-js
Javascript API for EtherID
Installation
In Node.js through npm
$ npm install etherid-js
In the Browser through browserify
Same as in Node.js, you just have to browserify the code before serving it.
In the Browser through <script>
tag
Make the etherid.min.js available through your server and load it using a normal <script>
tag, then you can require('etherid'). See the Demo HTML
##Usage
Initialization of the Web3
The Web3 object is needed. This is the proper way to init it, so it will work in the Mist browser.
if(typeof web3 === 'undefined')
{
Web3 = require('web3');
web3 = new Web3();
}
if( web3.currentProvider == null )
web3.setProvider( new web3.providers.HttpProvider( ) );
Initialization of the EtherID object
var etherid = require('etherid')
Getting total number of registered domains
EID.getNumberOfDomains( web3, function( error, result ) {
document.getElementById( "n_domains" ).innerHTML = result
})
Returns total number of registered domains
Reading the domain record
To read the domain record you call:
etherid.getDomain( web3, {DOMAIN_NAME} )
{DOMAIN_NAME} can be a BigNumber, string or hex ( "0xNNNN.." )
The call returns a struct:
{
domain // Domain name (as BigNumber)
owner // Address of the domain owner
expires // The Ethereum Blockchin block number of expiration
price // Selling Price if any
transfer // The address for the domain transer
next_domain // Next domain name in the linked list
root_id // First ID if any
domainStr // UTF domain name
domainHex // HEX domain name
}
Example:
domain = EID.getDomain( web3, "test", function( error, domain ) {
if( !error ) {
document.getElementById( "expires" ).innerHTML = domain.expires
document.getElementById( "owner" ).innerHTML = web3.toHex( domain.owner )
document.getElementById( "price" ).innerHTML = domain.price
document.getElementById( "transfer" ).innerHTML = web3.toHex( domain.transfer )
document.getElementById( "next" ).innerHTML = web3.toHex( domain.next_domain )
document.getElementById( "root_id" ).innerHTML = web3.toHex( domain.root_id )
}
});
Reading the domain ID
etherid.getId( web3, {DOMAIN_NAME}, {ID} )
Both {DOMAIN_NAME} and {ID} can be a BigNumber, string or hex ( "0xNNNN.." )
The call returns a struct:
{
name // ID Name
nameStr // ID UTF name
nameHex // ID HEX name
value // Value
valueInt // Value as Number
valueHex // Value as HEX
valueStr // Value as UTF
next_id // Next ID in the linked list
prev_id // Previous ID in the linked list
}
Example:
EID.getId( web3, "test", "test_number", function( error, id ) {
if( !error )
document.getElementById( "test_int" ).innerHTML = id.valueInt
});
EID.getId( web3, "test", "test_text", function( error, id ) {
if( !error ) document.getElementById( "test_text" ).innerHTML = id.valueStr
});
EID.getId( web3, "test", "test_ipfs", function( error, id ) {
if( !error ) document.getElementById( "test_ipfs" ).innerHTML = id.valueHash
});
Event handler
You can setup a handler that will be called everytime someone changes a domain.
etherid.watch( web3, function( error, result ) {
document.getElementById( "n_domains" ).innerHTML = EID.getNumberOfDomains( web3 )
})
Enumerating domains
You can list all the registered domains by using getDomainEnum and getNextDomain
DomainEnumerator = etherid.getDomainEnum( web3 )
d = EID.getNextDomain( web3, DomainEnumerator )
while ( d ) {
document.getElementById( "list_domains" ).innerHTML = "domain #:" + DomainEnumerator.n + " " + d.domainStr
d = EID.getNextDomain( web3, DomainEnumerator )
}
NOTE: The enumerator properly treats the domain with name 0x0 registered in the system. If you implement the loop yourself, do not forget that first 0x0 domain you get is the real domain, and the second is in fact the end of the list.
Enumerating ID's
You can list all the domain ID's by using getIdEnum and getNextId
IdEnumerator = etherid.getIdEnum( web3, "test" )
id = EID.getNextId( web3, IdEnumerator )
while ( id ) {
document.getElementById( "list_domains" ).innerHTML = "ID #:" + Id.n + " " + id.nameStr
id = EID.getNextId( web3, IdEnumerator )
}
NOTE: The enumerator properly treats the ID with name 0x0 registered in the system. If you implement the loop yourself, do not forget that first 0x0 ID you get might be the real ID, and the second is in fact the end of the list. You should check if the 0x0 ID has value.
Changing domain
To cahnge the domain record call:
EID.changeDomain( web3, {ADDRESS_TO USE}, {DOMAIN}, {EXPIRATION}, {PRICE}, TRANSFER}, callback )
Example:
function onProlong()
{
document.getElementById( "prolong_status" ).innerHTML = "Reading domain..."
domain = EID.getDomain( web3, "test", function( error, domain ) {
if( !error ) {
document.getElementById( "prolong_status" ).innerHTML = "Channging..."
EID.changeDomain( web3, domain.owner, "test", 2000000, 0, 0, function( error, domain ) {
if( !error ) {
document.getElementById( "prolong_status" ).innerHTML = "Transaction completed"
}
else
{
document.getElementById( "prolong_status" ).innerHTML = error
}
});
}
else { document.getElementById( "prolong_status" ).innerHTML = error }
});
}
Changing ID
To cahnge the domain ID call:
EID.changeId( web3, {ADDRESS_TO USE}, {DOMAIN}, {ID}, {VALUE} callback )
Example:
function onChangeId()
{
document.getElementById( "change_id_status" ).innerHTML = "Reading domain..."
domain = EID.getDomain( web3, "test", function( error, domain ) {
if( !error ) {
document.getElementById( "change_id_status" ).innerHTML = "Channging..."
EID.changeId( web3, domain.owner, "test", "time", new Date().getTime(), function( error, domain ) {
if( !error ) {
document.getElementById( "change_id_status" ).innerHTML = "Transaction completed"
}
else
{
document.getElementById( "change_id_status" ).innerHTML = error
}
});
}
else { document.getElementById( "change_id_status" ).innerHTML = error }
});
}
License
Apache 2.0
##Author
Alexandre Naverniouk @alexna