Package com.xeiam.xchange.coinbase.dto.marketdata

Source Code of com.xeiam.xchange.coinbase.dto.marketdata.CoinbasePrice

package com.xeiam.xchange.coinbase.dto.marketdata;

import java.io.IOException;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.ObjectCodec;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.xeiam.xchange.coinbase.dto.marketdata.CoinbasePrice.CoibasePriceDeserializer;
import com.xeiam.xchange.coinbase.dto.serialization.CoinbaseMoneyDeserializer;

/**
* @author jamespedwards42
*/
@JsonDeserialize(using = CoibasePriceDeserializer.class)
public class CoinbasePrice {

  private final CoinbaseMoney coinbaseFee;
  private final CoinbaseMoney bankFee;
  private final CoinbaseMoney total;
  private final CoinbaseMoney subTotal;

  private CoinbasePrice(final CoinbaseMoney coinbaseFee, final CoinbaseMoney bankFee, final CoinbaseMoney total, final CoinbaseMoney subTotal) {

    this.coinbaseFee = coinbaseFee;
    this.bankFee = bankFee;
    this.total = total;
    this.subTotal = subTotal;
  }

  public CoinbaseMoney getCoinbaseFee() {

    return coinbaseFee;
  }

  public CoinbaseMoney getBankFee() {

    return bankFee;
  }

  public CoinbaseMoney getTotal() {

    return total;
  }

  public CoinbaseMoney getSubTotal() {

    return subTotal;
  }

  @Override
  public String toString() {

    return "CoinbasePrice [coinbaseFee=" + coinbaseFee + ", bankFee=" + bankFee + ", total=" + total + ", subTotal=" + subTotal + "]";
  }

  static class CoibasePriceDeserializer extends JsonDeserializer<CoinbasePrice> {

    @Override
    public CoinbasePrice deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {

      final ObjectCodec oc = jp.getCodec();
      final JsonNode node = oc.readTree(jp);
      final CoinbaseMoney subTotal = CoinbaseMoneyDeserializer.getCoinbaseMoneyFromNode(node.path("subtotal"));
      final JsonNode feesNode = node.path("fees");
      final CoinbaseMoney coinbaseFee = CoinbaseMoneyDeserializer.getCoinbaseMoneyFromNode(feesNode.path(0).path("coinbase"));
      final CoinbaseMoney bankFee = CoinbaseMoneyDeserializer.getCoinbaseMoneyFromNode(feesNode.path(1).path("bank"));
      final CoinbaseMoney total = CoinbaseMoneyDeserializer.getCoinbaseMoneyFromNode(node.path("total"));
      return new CoinbasePrice(coinbaseFee, bankFee, total, subTotal);
    }
  }
}
TOP

Related Classes of com.xeiam.xchange.coinbase.dto.marketdata.CoinbasePrice

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.