// Copyright 2015, 2016 Ethcore (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 . import { bytesToHex, hex2Ascii } from '../api/util/format'; import ABI from './abi/certifier.json'; const ZERO = '0x0000000000000000000000000000000000000000000000000000000000000000'; export default class BadgeReg { constructor (api, registry) { this._api = api; this._registry = registry; registry.getContract('badgereg'); this.certifiers = {}; // by name this.contracts = {}; // by name } fetchCertifier (name) { if (this.certifiers[name]) { return Promise.resolve(this.certifiers[name]); } return this._registry.getContract('badgereg') .then((badgeReg) => { return badgeReg.instance.fromName.call({}, [name]) .then(([ id, address ]) => { return Promise.all([ badgeReg.instance.meta.call({}, [id, 'TITLE']), badgeReg.instance.meta.call({}, [id, 'IMG']) ]) .then(([ title, img ]) => { title = bytesToHex(title); title = title === ZERO ? null : hex2Ascii(title); if (bytesToHex(img) === ZERO) img = null; const data = { address, name, title, icon: img }; this.certifiers[name] = data; return data; }); }); }); } checkIfCertified (certifier, address) { if (!this.contracts[certifier]) { this.contracts[certifier] = this._api.newContract(ABI, certifier); } const contract = this.contracts[certifier]; return contract.instance.certified.call({}, [address]); } }