Skip to content
This repository has been archived by the owner on Jul 9, 2021. It is now read-only.

Commit

Permalink
feat(website): add asset-buyer documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
BMillman19 committed Oct 16, 2018
1 parent 55be070 commit aa1085c
Show file tree
Hide file tree
Showing 9 changed files with 145 additions and 1 deletion.
17 changes: 17 additions & 0 deletions packages/website/md/docs/asset_buyer/installation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
**Install**

```bash
yarn add @0xproject/asset-buyer
```

**Import**

```javascript
import { AssetBuyer } from '@0xproject/asset-buyer';
```

or

```javascript
var AssetBuyer = require('@0xproject/asset-buyer').AssetBuyer;
```
1 change: 1 addition & 0 deletions packages/website/md/docs/asset_buyer/introduction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Welcome to the [@0xproject/asset-buyer](https://github.com/0xProject/0x-monorepo/tree/development/packages/asset-buyer) documentation! AssetBuyer is a library that provides an easy way to buy any asset with ETH in one click, leveraging 0x liquidity and the [Forwarder contract](https://0xproject.com/docs/contracts#Forwarder).
39 changes: 39 additions & 0 deletions packages/website/md/docs/asset_buyer/usage.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
**Construction**

Connecting to a standard relayer API compliant url:

```typescript
const provider = web3.currentProvider;
const apiUrl = 'https://api.relayer.com/v2';
const assetBuyer = AssetBuyer.getAssetBuyerForStandardRelayerAPIUrl(provider, apiUrl);
```

Providing your own orders:

```typescript
const provider = web3.currentProvider;
const orders = []; // get these from your own API, a relayer, a friend, from anywhere
const assetBuyer = AssetBuyer.getAssetBuyerForProvidedOrders(provider, orders);
```

**Get a quote**

A [BuyQuote](#types-BuyQuote) object contains enough information to display buy information to an end user

```typescript
const erc20TokenAddress = '0x5fa3c....';
const amountToBuy = new BigNumber(50000000000000000000);
const buyQuote = await assetBuyer.getBuyQuoteForERC20TokenAddressAsync(erc20TokenAddress, amountToBuy);
const quoteInfo = buyQuote.worstCaseQuoteInfo;
console.log(quoteInfo.ethAmount); // the total amount the user needs to pay to buy the desired amount (including fees)
console.log(quoteInfo.feeAmount); // a portion of the total ethAmount above that was used to buy fees
console.log(quoteInfo.ethPerAssetPrice); // the rate that this quote provides (e.g. 0.0035ETH / REP)
```

**Perform a buy**

Pass the [BuyQuote](#types-BuyQuote) object from above back to the assetBuyer in order to initiate the buy transaction

```typescript
const txHash = await assetBuyer.executeBuyQuoteAsync(buyQuote); // the hash of the transaction submitted to the Ethereum network
```
1 change: 1 addition & 0 deletions packages/website/translations/english.json
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@
"WIKI": "wiki",
"WEB3_WRAPPER": "Web3Wrapper",
"ORDER_UTILS": "Order Utils",
"ASSET_BUYER": "AssetBuyer",
"FAQ": "FAQ",
"SMART_CONTRACTS": "0x smart contracts",
"STANDARD_RELAYER_API": "standard relayer API",
Expand Down
7 changes: 7 additions & 0 deletions packages/website/ts/components/top_bar/top_bar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ const DOC_WEBSITE_PATHS_TO_KEY = {
[WebsitePaths.ZeroExJs]: Key.ZeroExJs,
[WebsitePaths.OrderUtils]: Key.OrderUtils,
[WebsitePaths.OrderWatcher]: Key.OrderWatcher,
[WebsitePaths.AssetBuyer]: Key.AssetBuyer,
};

const DEFAULT_HEIGHT = 68;
Expand Down Expand Up @@ -214,6 +215,12 @@ export class TopBar extends React.Component<TopBarProps, TopBarState> {
primaryText={this.props.translate.get(Key.EthereumTypes, Deco.CapWords)}
/>
</Link>,
<Link key="subMenuItem-asset-buyer" to={WebsitePaths.AssetBuyer} className="text-decoration-none">
<MenuItem
style={{ fontSize: styles.menuItem.fontSize }}
primaryText={this.props.translate.get(Key.AssetBuyer, Deco.CapWords)}
/>
</Link>,
<a
key="subMenuItem-whitePaper"
target="_blank"
Expand Down
69 changes: 69 additions & 0 deletions packages/website/ts/containers/asset_buyer_documentation.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import { DocsInfo, DocsInfoConfig, SupportedDocJson } from '@0xproject/react-docs';
import * as React from 'react';
import { connect } from 'react-redux';
import { Dispatch } from 'redux';
import { DocPage as DocPageComponent, DocPageProps } from 'ts/pages/documentation/doc_page';
import { Dispatcher } from 'ts/redux/dispatcher';
import { State } from 'ts/redux/reducer';
import { DocPackages } from 'ts/types';
import { Translate } from 'ts/utils/translate';

/* tslint:disable:no-var-requires */
const IntroMarkdown = require('md/docs/asset_buyer/introduction');
const InstallationMarkdown = require('md/docs/asset_buyer/installation');
const UsageMarkdown = require('md/docs/asset_buyer/usage');
/* tslint:enable:no-var-requires */

const markdownSections = {
introduction: 'introduction',
installation: 'installation',
usage: 'usage',
};

const docsInfoConfig: DocsInfoConfig = {
id: DocPackages.AssetBuyer,
packageName: '@0xproject/asset-buyer',
type: SupportedDocJson.TypeDoc,
displayName: 'AssetBuyer',
packageUrl: 'https://github.com/0xProject/0x-monorepo',
markdownMenu: {
introduction: [markdownSections.introduction],
install: [markdownSections.installation],
usage: [markdownSections.usage],
},
sectionNameToMarkdownByVersion: {
'0.0.1': {
[markdownSections.introduction]: IntroMarkdown,
[markdownSections.installation]: InstallationMarkdown,
[markdownSections.usage]: UsageMarkdown,
},
},
markdownSections,
};
const docsInfo = new DocsInfo(docsInfoConfig);

interface ConnectedState {
docsVersion: string;
availableDocVersions: string[];
docsInfo: DocsInfo;
translate: Translate;
}

interface ConnectedDispatch {
dispatcher: Dispatcher;
}

const mapStateToProps = (state: State, _ownProps: DocPageProps): ConnectedState => ({
docsVersion: state.docsVersion,
availableDocVersions: state.availableDocVersions,
translate: state.translate,
docsInfo,
});

const mapDispatchToProps = (dispatch: Dispatch<State>): ConnectedDispatch => ({
dispatcher: new Dispatcher(dispatch),
});

export const Documentation: React.ComponentClass<DocPageProps> = connect(mapStateToProps, mapDispatchToProps)(
DocPageComponent,
);
8 changes: 7 additions & 1 deletion packages/website/ts/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,9 @@ const LazyOrderUtilsDocumentation = createLazyComponent('Documentation', async (
const LazyEthereumTypesDocumentation = createLazyComponent('Documentation', async () =>
import(/* webpackChunkName: "ethereumTypesDocs" */ 'ts/containers/ethereum_types_documentation'),
);
const LazyAssetBuyerDocumentation = createLazyComponent('Documentation', async () =>
import(/* webpackChunkName: "assetBuyerDocs" */ 'ts/containers/asset_buyer_documentation'),
);

const DOCUMENT_TITLE = '0x: The Protocol for Trading Tokens';
const DOCUMENT_DESCRIPTION = 'An Open Protocol For Decentralized Exchange On The Ethereum Blockchain';
Expand Down Expand Up @@ -133,7 +136,10 @@ render(
path={`${WebsitePaths.EthereumTypes}/:version?`}
component={LazyEthereumTypesDocumentation}
/>

<Route
path={`${WebsitePaths.AssetBuyer}/:version?`}
component={LazyAssetBuyerDocumentation}
/>
{/* Legacy endpoints */}
<Route
path={`${WebsiteLegacyPaths.ZeroExJs}/:version?`}
Expand Down
1 change: 1 addition & 0 deletions packages/website/ts/pages/documentation/doc_page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ const docIdToSubpackageName: { [id: string]: string } = {
[DocPackages.OrderUtils]: 'order-utils',
[DocPackages.OrderWatcher]: 'order-watcher',
[DocPackages.EthereumTypes]: 'ethereum-types',
[DocPackages.AssetBuyer]: 'asset-buyer',
};

export interface DocPageProps {
Expand Down
3 changes: 3 additions & 0 deletions packages/website/ts/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,7 @@ export enum WebsitePaths {
Subproviders = '/docs/subproviders',
OrderUtils = '/docs/order-utils',
EthereumTypes = '/docs/ethereum-types',
AssetBuyer = '/docs/asset-buyer',
Careers = '/careers',
}

Expand All @@ -379,6 +380,7 @@ export enum DocPackages {
EthereumTypes = 'ETHEREUM_TYPES',
ContractWrappers = 'CONTRACT_WRAPPERS',
OrderWatcher = 'ORDER_WATCHER',
AssetBuyer = 'ASSET_BUYER',
}

export enum Key {
Expand Down Expand Up @@ -440,6 +442,7 @@ export enum Key {
ZeroExJs = '0X_JS',
ContractWrappers = 'CONTRACT_WRAPPERS',
OrderWatcher = 'ORDER_WATCHER',
AssetBuyer = 'ASSET_BUYER',
Blog = 'BLOG',
Forum = 'FORUM',
Connect = 'CONNECT',
Expand Down

0 comments on commit aa1085c

Please sign in to comment.