all files / src/ trades_call_builder.js

94.52% Statements 69/73
94.12% Branches 32/34
100% Functions 10/10
76.47% Lines 13/17
17 statements, 15 branches Ignored     
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51                                                                             
import {CallBuilder} from "./call_builder";
 
/**
 * Creates a new {@link TradesCallBuilder} pointed to server defined by serverUrl.
 *
 * Do not create this object directly, use {@link Server#trades}.
 * @see [Trades](https://www.stellar.org/developers/horizon/reference/endpoints/trades.html)
 * @param {string} serverUrl serverUrl Horizon server URL.
 */
export class TradesCallBuilder extends CallBuilder {
    constructor(serverUrl) {
        super(serverUrl);
        this.url.segment('trades');
    }
 
    /**
    * Filter trades for a specific asset pair (orderbook)
    * @param {Asset} base asset
    * @param {Asset} counter asset
    * @returns {TradesCallBuilder}
    */
    forAssetPair(base, counter) {
        Iif (!base.isNative()) {
            this.url.addQuery("base_asset_type", base.getAssetType());
            this.url.addQuery("base_asset_code", base.getCode());
            this.url.addQuery("base_asset_issuer", base.getIssuer());
        } else {
            this.url.addQuery("base_asset_type", 'native');
        }
        Eif (!counter.isNative()) {
            this.url.addQuery("counter_asset_type", counter.getAssetType());
            this.url.addQuery("counter_asset_code", counter.getCode());
            this.url.addQuery("counter_asset_issuer", counter.getIssuer());
        } else {
            this.url.addQuery("counter_asset_type", 'native');
        }
        return this;
    }
 
    /**
    * Filter trades for a specific offer
    * @param offerId
    * @returns {TradesCallBuilder}
    */
    forOffer(offerId) {
        this.url.addQuery("offer_id", offerId);
        return this;
    }
}