From 889410d605fd83aa00518332ad3e26e230cf769d Mon Sep 17 00:00:00 2001 From: Leonid Logvinov Date: Thu, 29 Jun 2017 12:14:49 -0700 Subject: Add Proxy wrapper --- src/contract_wrappers/proxy_wrapper.ts | 36 ++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/contract_wrappers/proxy_wrapper.ts (limited to 'src') diff --git a/src/contract_wrappers/proxy_wrapper.ts b/src/contract_wrappers/proxy_wrapper.ts new file mode 100644 index 000000000..18c6fdd23 --- /dev/null +++ b/src/contract_wrappers/proxy_wrapper.ts @@ -0,0 +1,36 @@ +import * as _ from 'lodash'; +import {Web3Wrapper} from '../web3_wrapper'; +import {ContractWrapper} from './contract_wrapper'; +import * as ProxyArtifacts from '../artifacts/Proxy.json'; +import {ProxyContract} from '../types'; + +/** + * This class includes the functionality related to interacting with Proxy contract. + */ +export class ProxyWrapper extends ContractWrapper { + private _proxyContractIfExists?: ProxyContract; + constructor(web3Wrapper: Web3Wrapper) { + super(web3Wrapper); + } + public invalidateContractInstance(): void { + delete this._proxyContractIfExists; + } + /** + * Check if the Exchange contract address is authorized within the Proxy contract. + * @param exchangeContractAddress The hex encoded address of the Exchange contract to use. + * @return If the exchangeContractAddress is authorized. + */ + public async isAuthorizedAsync(exchangeContractAddress: string): Promise { + const proxyContractInstance = await this._getTokenRegistryContractAsync(); + const isAuthorized = await proxyContractInstance.authrized.call(exchangeContractAddress); + return isAuthorized; + } + private async _getTokenRegistryContractAsync(): Promise { + if (!_.isUndefined(this._proxyContractIfExists)) { + return this._proxyContractIfExists; + } + const contractInstance = await this._instantiateContractIfExistsAsync((ProxyArtifacts as any)); + this._proxyContractIfExists = contractInstance as ProxyContract; + return this._proxyContractIfExists; + } +} -- cgit v1.2.3