mirror of
git://holbrook.no/eth-accounts-index
synced 2024-11-22 09:06:46 +01:00
Add javascript interface
This commit is contained in:
parent
22544ceb23
commit
6ad2866173
39
js/src/registry.ts
Normal file
39
js/src/registry.ts
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
class AccountRegistry {
|
||||||
|
|
||||||
|
contract: any
|
||||||
|
|
||||||
|
constructor(w3:any, abi:object, address:string) {
|
||||||
|
this.contract = new w3.eth.Contract(abi, address);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public async count(): Promise<number> {
|
||||||
|
return this.contract.methods.count().call();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public async have(address:string): Promise<boolean> {
|
||||||
|
return await this.contract.methods.accountsIndex(address).call() != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public async last(n:number): Promise<Array<string>> {
|
||||||
|
const c = await this.count();
|
||||||
|
let lo = c - n - 1;
|
||||||
|
if (lo < 0) {
|
||||||
|
lo = 0;
|
||||||
|
}
|
||||||
|
let accounts = [];
|
||||||
|
for (let i = c - 1; i > lo; i--) {
|
||||||
|
console.log('i', i);
|
||||||
|
console.log('foo', i, await this.contract.methods.accounts(i).call());
|
||||||
|
const a = await this.contract.methods.accounts(i).call();
|
||||||
|
accounts.push(a);
|
||||||
|
}
|
||||||
|
return accounts;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export {
|
||||||
|
AccountRegistry,
|
||||||
|
}
|
@ -4,7 +4,7 @@ import os
|
|||||||
|
|
||||||
logg = logging.getLogger()
|
logg = logging.getLogger()
|
||||||
|
|
||||||
class Registry:
|
class AccountRegistry:
|
||||||
|
|
||||||
abi = None
|
abi = None
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
[metadata]
|
[metadata]
|
||||||
name = accounts-index
|
name = eth-accounts-index
|
||||||
version = 0.0.1
|
version = 0.0.1
|
||||||
description = Accounts index evm contract tooling with permissioned writes
|
description = Accounts index evm contract tooling with permissioned writes
|
||||||
author = Louis Holbrook
|
author = Louis Holbrook
|
||||||
|
@ -5,7 +5,7 @@ import json
|
|||||||
import web3
|
import web3
|
||||||
import eth_tester
|
import eth_tester
|
||||||
|
|
||||||
from eth_accounts_index import Registry
|
from eth_accounts_index import AccountRegistry
|
||||||
|
|
||||||
testdir = os.path.dirname(__file__)
|
testdir = os.path.dirname(__file__)
|
||||||
|
|
||||||
@ -45,18 +45,18 @@ class Test(unittest.TestCase):
|
|||||||
|
|
||||||
|
|
||||||
def test_basic(self):
|
def test_basic(self):
|
||||||
registry = Registry(self.w3, self.address)
|
registry = AccountRegistry(self.w3, self.address)
|
||||||
self.assertEqual(registry.count(), 1); # count starts at 1, first addess is always 0x0
|
self.assertEqual(registry.count(), 1); # count starts at 1, first addess is always 0x0
|
||||||
|
|
||||||
|
|
||||||
def test_access(self):
|
def test_access(self):
|
||||||
registry = Registry(self.w3, self.address, self.w3.eth.accounts[1])
|
registry = AccountRegistry(self.w3, self.address, self.w3.eth.accounts[1])
|
||||||
registry.add(self.w3.eth.accounts[2])
|
registry.add(self.w3.eth.accounts[2])
|
||||||
self.eth_tester.mine_block()
|
self.eth_tester.mine_block()
|
||||||
self.assertEqual(registry.count(), 2)
|
self.assertEqual(registry.count(), 2)
|
||||||
|
|
||||||
# account 0 does not have access
|
# account 0 does not have access
|
||||||
registry = Registry(self.w3, self.address, self.w3.eth.accounts[2])
|
registry = AccountRegistry(self.w3, self.address, self.w3.eth.accounts[2])
|
||||||
registry.add(self.w3.eth.accounts[2])
|
registry.add(self.w3.eth.accounts[2])
|
||||||
self.eth_tester.mine_block()
|
self.eth_tester.mine_block()
|
||||||
self.assertEqual(registry.count(), 2)
|
self.assertEqual(registry.count(), 2)
|
||||||
@ -75,7 +75,7 @@ class Test(unittest.TestCase):
|
|||||||
|
|
||||||
|
|
||||||
def test_indices(self):
|
def test_indices(self):
|
||||||
registry = Registry(self.w3, self.address, self.w3.eth.accounts[1])
|
registry = AccountRegistry(self.w3, self.address, self.w3.eth.accounts[1])
|
||||||
registry.add(self.w3.eth.accounts[2])
|
registry.add(self.w3.eth.accounts[2])
|
||||||
|
|
||||||
self.assertTrue(registry.have(self.w3.eth.accounts[2]))
|
self.assertTrue(registry.have(self.w3.eth.accounts[2]))
|
||||||
@ -83,7 +83,7 @@ class Test(unittest.TestCase):
|
|||||||
|
|
||||||
|
|
||||||
def test_list(self):
|
def test_list(self):
|
||||||
registry = Registry(self.w3, self.address, self.w3.eth.accounts[1])
|
registry = AccountRegistry(self.w3, self.address, self.w3.eth.accounts[1])
|
||||||
|
|
||||||
for i in range(2, 10):
|
for i in range(2, 10):
|
||||||
registry.add(self.w3.eth.accounts[i])
|
registry.add(self.w3.eth.accounts[i])
|
||||||
|
Loading…
Reference in New Issue
Block a user