Allow entry of url or hash for DappReg meta (#5360)
* Allow DappReg to handle contentHash & url inputs * Add tests
This commit is contained in:
parent
73dc52980e
commit
cbaa7fdee6
@ -19,6 +19,10 @@ import { api } from './parity';
|
|||||||
export const INVALID_URL_HASH = '0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470';
|
export const INVALID_URL_HASH = '0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470';
|
||||||
export const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
|
export const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
|
||||||
|
|
||||||
|
export function isContentHash (url) {
|
||||||
|
return /^0x[0-9a-f]{64}/.test(url);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert the given URL to a content hash,
|
* Convert the given URL to a content hash,
|
||||||
* and checks if it is already registered in GHH
|
* and checks if it is already registered in GHH
|
||||||
@ -28,8 +32,11 @@ export const urlToHash = (api, instance, url) => {
|
|||||||
return Promise.resolve(null);
|
return Promise.resolve(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
return api.parity
|
const hashPromise = isContentHash(url)
|
||||||
.hashContent(url)
|
? Promise.resolve(url)
|
||||||
|
: api.parity.hashContent(url);
|
||||||
|
|
||||||
|
return hashPromise
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
const message = error.text || error.message || error.toString();
|
const message = error.text || error.message || error.toString();
|
||||||
|
|
||||||
@ -181,4 +188,3 @@ export const updateDapp = (dappId, dappOwner, updates, dappRegInstance, ghhRegIn
|
|||||||
|
|
||||||
return promises;
|
return promises;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
33
js/src/dapps/dappreg/utils.spec.js
Normal file
33
js/src/dapps/dappreg/utils.spec.js
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
// Copyright 2015-2017 Parity Technologies (UK) Ltd.
|
||||||
|
// This file is part of Parity.
|
||||||
|
|
||||||
|
// Parity is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
|
||||||
|
// Parity is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import { INVALID_URL_HASH, ZERO_ADDRESS, isContentHash } from './utils';
|
||||||
|
|
||||||
|
describe('dapps/dappreg/utils', () => {
|
||||||
|
describe('isContentHash', () => {
|
||||||
|
it('returns true on valid hashes', () => {
|
||||||
|
expect(isContentHash(INVALID_URL_HASH)).to.be.true;
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns false on valid hex, invalid hash', () => {
|
||||||
|
expect(isContentHash(ZERO_ADDRESS)).to.be.false;
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns false on invalid hex', () => {
|
||||||
|
expect(isContentHash('something')).to.be.false;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user