parity.js interfaces for vaults (#4497)

This commit is contained in:
Jaco Greeff
2017-02-09 17:07:08 +01:00
committed by Gav Wood
parent c69f515597
commit 7a627f88cb
5 changed files with 255 additions and 7 deletions

View File

@@ -17,6 +17,7 @@
import BigNumber from 'bignumber.js';
import { toChecksumAddress } from '../../abi/util/address';
import { isString } from '../util/types';
export function outAccountInfo (infos) {
return Object
@@ -344,3 +345,17 @@ export function outTraceReplay (trace) {
return trace;
}
export function outVaultMeta (meta) {
if (isString(meta)) {
try {
const obj = JSON.parse(meta);
return obj;
} catch (error) {
return {};
}
}
return meta || {};
}

View File

@@ -16,7 +16,7 @@
import BigNumber from 'bignumber.js';
import { outBlock, outAccountInfo, outAddress, outChainStatus, outDate, outHistogram, outNumber, outPeer, outPeers, outReceipt, outSyncing, outTransaction, outTrace } from './output';
import { outBlock, outAccountInfo, outAddress, outChainStatus, outDate, outHistogram, outNumber, outPeer, outPeers, outReceipt, outSyncing, outTransaction, outTrace, outVaultMeta } from './output';
import { isAddress, isBigNumber, isInstanceOf } from '../../../test/types';
describe('api/format/output', () => {
@@ -455,4 +455,22 @@ describe('api/format/output', () => {
expect(formatted.transactionPosition.toNumber()).to.equal(11);
});
});
describe('outVaultMeta', () => {
it('returns an exmpt object on null', () => {
expect(outVaultMeta(null)).to.deep.equal({});
});
it('returns the original value if not string', () => {
expect(outVaultMeta({ test: 123 })).to.deep.equal({ test: 123 });
});
it('returns an object from JSON string', () => {
expect(outVaultMeta('{"test":123}')).to.deep.equal({ test: 123 });
});
it('returns an empty object on invalid JSON', () => {
expect(outVaultMeta('{"test"}')).to.deep.equal({});
});
});
});

View File

@@ -15,7 +15,7 @@
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
import { inAddress, inAddresses, inData, inHex, inNumber16, inOptions, inBlockNumber } from '../../format/input';
import { outAccountInfo, outAddress, outAddresses, outChainStatus, outHistogram, outNumber, outPeers, outTransaction } from '../../format/output';
import { outAccountInfo, outAddress, outAddresses, outChainStatus, outHistogram, outNumber, outPeers, outTransaction, outVaultMeta } from '../../format/output';
export default class Parity {
constructor (transport) {
@@ -55,11 +55,26 @@ export default class Parity {
.execute('parity_changePassword', inAddress(account), password, newPassword);
}
changeVault (account, vaultName) {
return this._transport
.execute('parity_changeVault', inAddress(account), vaultName);
}
changeVaultPassword (vaultName, password) {
return this._transport
.execute('parity_changeVaultPassword', vaultName, password);
}
checkRequest (requestId) {
return this._transport
.execute('parity_checkRequest', inNumber16(requestId));
}
closeVault (vaultName) {
return this._transport
.execute('parity_closeVault', vaultName);
}
consensusCapability () {
return this._transport
.execute('parity_consensusCapability');
@@ -167,6 +182,12 @@ export default class Parity {
.then((addresses) => addresses ? addresses.map(outAddress) : null);
}
getVaultMeta (vaultName) {
return this._transport
.execute('parity_getVaultMeta', vaultName)
.then(outVaultMeta);
}
hashContent (url) {
return this._transport
.execute('parity_hashContent', url);
@@ -189,6 +210,16 @@ export default class Parity {
.then((accounts) => (accounts || []).map(outAddress));
}
listOpenedVaults () {
return this._transport
.execute('parity_listOpenedVaults');
}
listVaults () {
return this._transport
.execute('parity_listVaults');
}
listRecentDapps () {
return this._transport
.execute('parity_listRecentDapps');
@@ -275,6 +306,11 @@ export default class Parity {
.then(outAddress);
}
newVault (vaultName, password) {
return this._transport
.execute('parity_newVault', vaultName, password);
}
nextNonce (account) {
return this._transport
.execute('parity_nextNonce', inAddress(account))
@@ -286,6 +322,11 @@ export default class Parity {
.execute('parity_nodeName');
}
openVault (vaultName, password) {
return this._transport
.execute('parity_openVault', vaultName, password);
}
pendingTransactions () {
return this._transport
.execute('parity_pendingTransactions')
@@ -399,6 +440,11 @@ export default class Parity {
.execute('parity_setTransactionsLimit', inNumber16(quantity));
}
setVaultMeta (vaultName, meta) {
return this._transport
.execute('parity_setVaultMeta', vaultName, JSON.stringify(meta));
}
signerPort () {
return this._transport
.execute('parity_signerPort')

View File

@@ -104,11 +104,14 @@ export default class Personal {
}
switch (data.method) {
case 'parity_closeVault':
case 'parity_openVault':
case 'parity_killAccount':
case 'parity_importGethAccounts':
case 'personal_newAccount':
case 'parity_newAccountFromPhrase':
case 'parity_newAccountFromWallet':
case 'personal_newAccount':
this._defaultAccount(true);
this._listAccounts();
this._accountsInfo();
return;
@@ -116,6 +119,7 @@ export default class Personal {
case 'parity_removeAddress':
case 'parity_setAccountName':
case 'parity_setAccountMeta':
case 'parity_changeVault':
this._accountsInfo();
return;