commit
2892f45ab7
@ -1,9 +1,10 @@
|
|||||||
# CHANGELOG
|
# CHANGELOG
|
||||||
|
|
||||||
v0.7.2 - _Jun. 26, 2017_
|
v0.8.0 - TBD
|
||||||
------------------------
|
------------------------
|
||||||
* Add the ability to call methods on different authorized versions of the Exchange smart contract (#82)
|
* Add the ability to call methods on different authorized versions of the Exchange smart contract (#82)
|
||||||
* Update contract artifacts to reflect latest changes to the smart contracts (0xproject/contracts#59)
|
* Update contract artifacts to reflect latest changes to the smart contracts (0xproject/contracts#59)
|
||||||
|
* Add `zeroEx.proxy.isAuthorizedAsync` and `zeroEx.proxy.getAuthorizedAddressesAsync` (#89)
|
||||||
|
|
||||||
v0.7.1 - _Jun. 26, 2017_
|
v0.7.1 - _Jun. 26, 2017_
|
||||||
------------------------
|
------------------------
|
||||||
|
12
src/0x.ts
12
src/0x.ts
@ -52,7 +52,11 @@ export class ZeroEx {
|
|||||||
* wrapped ETH ERC20 token smart contract.
|
* wrapped ETH ERC20 token smart contract.
|
||||||
*/
|
*/
|
||||||
public etherToken: EtherTokenWrapper;
|
public etherToken: EtherTokenWrapper;
|
||||||
private _proxyWrapper: ProxyWrapper;
|
/**
|
||||||
|
* An instance of the ProxyWrapper class containing methods for interacting with the
|
||||||
|
* proxy smart contract.
|
||||||
|
*/
|
||||||
|
public proxy: ProxyWrapper;
|
||||||
private _web3Wrapper: Web3Wrapper;
|
private _web3Wrapper: Web3Wrapper;
|
||||||
/**
|
/**
|
||||||
* Verifies that the elliptic curve signature `signature` was generated
|
* Verifies that the elliptic curve signature `signature` was generated
|
||||||
@ -150,8 +154,8 @@ export class ZeroEx {
|
|||||||
constructor(provider: Web3Provider) {
|
constructor(provider: Web3Provider) {
|
||||||
this._web3Wrapper = new Web3Wrapper(provider);
|
this._web3Wrapper = new Web3Wrapper(provider);
|
||||||
this.token = new TokenWrapper(this._web3Wrapper);
|
this.token = new TokenWrapper(this._web3Wrapper);
|
||||||
this._proxyWrapper = new ProxyWrapper(this._web3Wrapper);
|
this.proxy = new ProxyWrapper(this._web3Wrapper);
|
||||||
this.exchange = new ExchangeWrapper(this._web3Wrapper, this.token, this._proxyWrapper);
|
this.exchange = new ExchangeWrapper(this._web3Wrapper, this.token, this.proxy);
|
||||||
this.tokenRegistry = new TokenRegistryWrapper(this._web3Wrapper);
|
this.tokenRegistry = new TokenRegistryWrapper(this._web3Wrapper);
|
||||||
this.etherToken = new EtherTokenWrapper(this._web3Wrapper, this.token);
|
this.etherToken = new EtherTokenWrapper(this._web3Wrapper, this.token);
|
||||||
}
|
}
|
||||||
@ -165,7 +169,7 @@ export class ZeroEx {
|
|||||||
await this.exchange.invalidateContractInstancesAsync();
|
await this.exchange.invalidateContractInstancesAsync();
|
||||||
this.tokenRegistry.invalidateContractInstance();
|
this.tokenRegistry.invalidateContractInstance();
|
||||||
this.token.invalidateContractInstances();
|
this.token.invalidateContractInstances();
|
||||||
this._proxyWrapper.invalidateContractInstance();
|
this.proxy.invalidateContractInstance();
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Get user Ethereum addresses available through the supplied web3 instance available for sending transactions.
|
* Get user Ethereum addresses available through the supplied web3 instance available for sending transactions.
|
||||||
|
@ -99,7 +99,7 @@ export class ExchangeWrapper extends ContractWrapper {
|
|||||||
* subtracting the unavailable amount from the total order takerAmount.
|
* subtracting the unavailable amount from the total order takerAmount.
|
||||||
* @param orderHash The hex encoded orderHash for which you would like to retrieve the
|
* @param orderHash The hex encoded orderHash for which you would like to retrieve the
|
||||||
* unavailable takerAmount.
|
* unavailable takerAmount.
|
||||||
* @param exchangeContractAddress The hex encoded address of the Exchange contract to use.
|
* @param exchangeContractAddress The hex encoded address of the Exchange contract to call.
|
||||||
* @return The amount of the order (in taker tokens) that has either been filled or canceled.
|
* @return The amount of the order (in taker tokens) that has either been filled or canceled.
|
||||||
*/
|
*/
|
||||||
public async getUnavailableTakerAmountAsync(orderHash: string,
|
public async getUnavailableTakerAmountAsync(orderHash: string,
|
||||||
@ -115,7 +115,7 @@ export class ExchangeWrapper extends ContractWrapper {
|
|||||||
/**
|
/**
|
||||||
* Retrieve the takerAmount of an order that has already been filled.
|
* Retrieve the takerAmount of an order that has already been filled.
|
||||||
* @param orderHash The hex encoded orderHash for which you would like to retrieve the filled takerAmount.
|
* @param orderHash The hex encoded orderHash for which you would like to retrieve the filled takerAmount.
|
||||||
* @param exchangeContractAddress The hex encoded address of the Exchange contract to use.
|
* @param exchangeContractAddress The hex encoded address of the Exchange contract to call.
|
||||||
* @return The amount of the order (in taker tokens) that has already been filled.
|
* @return The amount of the order (in taker tokens) that has already been filled.
|
||||||
*/
|
*/
|
||||||
public async getFilledTakerAmountAsync(orderHash: string,
|
public async getFilledTakerAmountAsync(orderHash: string,
|
||||||
@ -132,7 +132,7 @@ export class ExchangeWrapper extends ContractWrapper {
|
|||||||
* Retrieve the takerAmount of an order that has been cancelled.
|
* Retrieve the takerAmount of an order that has been cancelled.
|
||||||
* @param orderHash The hex encoded orderHash for which you would like to retrieve the
|
* @param orderHash The hex encoded orderHash for which you would like to retrieve the
|
||||||
* cancelled takerAmount.
|
* cancelled takerAmount.
|
||||||
* @param exchangeContractAddress The hex encoded address of the Exchange contract to use.
|
* @param exchangeContractAddress The hex encoded address of the Exchange contract to call.
|
||||||
* @return The amount of the order (in taker tokens) that has been cancelled.
|
* @return The amount of the order (in taker tokens) that has been cancelled.
|
||||||
*/
|
*/
|
||||||
public async getCanceledTakerAmountAsync(orderHash: string,
|
public async getCanceledTakerAmountAsync(orderHash: string,
|
||||||
@ -578,7 +578,7 @@ export class ExchangeWrapper extends ContractWrapper {
|
|||||||
* @param subscriptionOpts Subscriptions options that let you configure the subscription.
|
* @param subscriptionOpts Subscriptions options that let you configure the subscription.
|
||||||
* @param indexFilterValues An object where the keys are indexed args returned by the event and
|
* @param indexFilterValues An object where the keys are indexed args returned by the event and
|
||||||
* the value is the value you are interested in. E.g `{maker: aUserAddressHex}`
|
* the value is the value you are interested in. E.g `{maker: aUserAddressHex}`
|
||||||
* @param exchangeContractAddress The hex encoded address of the Exchange contract to use.
|
* @param exchangeContractAddress The hex encoded address of the Exchange contract to call.
|
||||||
* @return ContractEventEmitter object
|
* @return ContractEventEmitter object
|
||||||
*/
|
*/
|
||||||
public async subscribeAsync(eventName: ExchangeEvents, subscriptionOpts: SubscriptionOpts,
|
public async subscribeAsync(eventName: ExchangeEvents, subscriptionOpts: SubscriptionOpts,
|
||||||
|
@ -14,7 +14,7 @@ export class ProxyWrapper extends ContractWrapper {
|
|||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Check if the Exchange contract address is authorized by the Proxy contract.
|
* Check if the Exchange contract address is authorized by the Proxy contract.
|
||||||
* @param exchangeContractAddress The hex encoded address of the Exchange contract to use.
|
* @param exchangeContractAddress The hex encoded address of the Exchange contract to call.
|
||||||
* @return Whether the exchangeContractAddress is authorized.
|
* @return Whether the exchangeContractAddress is authorized.
|
||||||
*/
|
*/
|
||||||
public async isAuthorizedAsync(exchangeContractAddress: string): Promise<boolean> {
|
public async isAuthorizedAsync(exchangeContractAddress: string): Promise<boolean> {
|
||||||
@ -22,6 +22,16 @@ export class ProxyWrapper extends ContractWrapper {
|
|||||||
const isAuthorized = await proxyContractInstance.authorized.call(exchangeContractAddress);
|
const isAuthorized = await proxyContractInstance.authorized.call(exchangeContractAddress);
|
||||||
return isAuthorized;
|
return isAuthorized;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Get the list of all Exchange contract addresses authorized by the Proxy contract.
|
||||||
|
* @param exchangeContractAddress The hex encoded address of the Exchange contract to call.
|
||||||
|
* @return The list of authorized addresses.
|
||||||
|
*/
|
||||||
|
public async getAuthorizedAddressesAsync(exchangeContractAddress: string): Promise<string[]> {
|
||||||
|
const proxyContractInstance = await this._getProxyContractAsync();
|
||||||
|
const authorizedAddresses = await proxyContractInstance.getAuthorizedAddresses.call();
|
||||||
|
return authorizedAddresses;
|
||||||
|
}
|
||||||
private async _getProxyContractAsync(): Promise<ProxyContract> {
|
private async _getProxyContractAsync(): Promise<ProxyContract> {
|
||||||
if (!_.isUndefined(this._proxyContractIfExists)) {
|
if (!_.isUndefined(this._proxyContractIfExists)) {
|
||||||
return this._proxyContractIfExists;
|
return this._proxyContractIfExists;
|
||||||
|
@ -149,6 +149,9 @@ export interface EtherTokenContract extends ContractInstance {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface ProxyContract extends ContractInstance {
|
export interface ProxyContract extends ContractInstance {
|
||||||
|
getAuthorizedAddresses: {
|
||||||
|
call: () => Promise<string[]>;
|
||||||
|
};
|
||||||
authorized: {
|
authorized: {
|
||||||
call: (address: string) => Promise<boolean>;
|
call: (address: string) => Promise<boolean>;
|
||||||
};
|
};
|
||||||
|
@ -832,8 +832,7 @@ describe('ExchangeWrapper', () => {
|
|||||||
const exchangeAddresses = await zeroEx.exchange.getProxyAuthorizedContractAddressesAsync();
|
const exchangeAddresses = await zeroEx.exchange.getProxyAuthorizedContractAddressesAsync();
|
||||||
for (const exchangeAddress of exchangeAddresses) {
|
for (const exchangeAddress of exchangeAddresses) {
|
||||||
assert.isETHAddressHex('exchangeAddress', exchangeAddress);
|
assert.isETHAddressHex('exchangeAddress', exchangeAddress);
|
||||||
const proxyWrapper = (zeroEx as any)._proxyWrapper as ProxyWrapper;
|
const isAuthorized = await zeroEx.proxy.isAuthorizedAsync(exchangeAddress);
|
||||||
const isAuthorized = await proxyWrapper.isAuthorizedAsync(exchangeAddress);
|
|
||||||
expect(isAuthorized).to.be.true();
|
expect(isAuthorized).to.be.true();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -9,15 +9,25 @@ const expect = chai.expect;
|
|||||||
|
|
||||||
describe('ProxyWrapper', () => {
|
describe('ProxyWrapper', () => {
|
||||||
let zeroEx: ZeroEx;
|
let zeroEx: ZeroEx;
|
||||||
|
let exchangeContractAddress: string;
|
||||||
before(async () => {
|
before(async () => {
|
||||||
const web3 = web3Factory.create();
|
const web3 = web3Factory.create();
|
||||||
zeroEx = new ZeroEx(web3.currentProvider);
|
zeroEx = new ZeroEx(web3.currentProvider);
|
||||||
|
[exchangeContractAddress] = await zeroEx.exchange.getAvailableContractAddressesAsync();
|
||||||
});
|
});
|
||||||
describe('#isAuthorizedAsync', () => {
|
describe('#isAuthorizedAsync', () => {
|
||||||
it('should return false if the address is not authorized', async () => {
|
it('should return false if the address is not authorized', async () => {
|
||||||
const proxyWrapper = (zeroEx as any)._proxyWrapper as ProxyWrapper;
|
const isAuthorized = await zeroEx.proxy.isAuthorizedAsync(ZeroEx.NULL_ADDRESS);
|
||||||
const isAuthorized = await proxyWrapper.isAuthorizedAsync(ZeroEx.NULL_ADDRESS);
|
|
||||||
expect(isAuthorized).to.be.false();
|
expect(isAuthorized).to.be.false();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
describe('#getAuthorizedAddressesAsync', () => {
|
||||||
|
it('should return the list of authorized addresses', async () => {
|
||||||
|
const authorizedAddresses = await zeroEx.proxy.getAuthorizedAddressesAsync(exchangeContractAddress);
|
||||||
|
for (const authorizedAddress of authorizedAddresses) {
|
||||||
|
const isAuthorized = await zeroEx.proxy.isAuthorizedAsync(authorizedAddress);
|
||||||
|
expect(isAuthorized).to.be.true();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user