All Downloads are FREE. Search and download functionalities are using the official Maven repository.

info.bitrich.xchangestream.coinmate.CoinmateStreamingExchange Maven / Gradle / Ivy

The newest version!
package info.bitrich.xchangestream.coinmate;

import com.pusher.client.PusherOptions;
import com.pusher.client.util.HttpAuthorizer;
import info.bitrich.xchangestream.coinmate.dto.auth.CoinmateUrlEncodedConnectionFactory;
import info.bitrich.xchangestream.coinmate.dto.auth.PusherAuthParamsObject;
import info.bitrich.xchangestream.core.*;
import info.bitrich.xchangestream.service.pusher.PusherStreamingService;
import io.reactivex.Completable;
import org.knowm.xchange.coinmate.CoinmateExchange;

public class CoinmateStreamingExchange extends CoinmateExchange implements StreamingExchange {
  private static final String API_KEY = "af76597b6b928970fbb0";
  private PusherStreamingService streamingService;

  private CoinmateStreamingMarketDataService streamingMarketDataService;
  private CoinmateStreamingAccountService streamingAccountService;
  private CoinmateStreamingTradeService streamingTradeService;

  public CoinmateStreamingExchange() {}

  private void createExchange() {
    if (exchangeSpecification.getApiKey() != null) {
      PusherAuthParamsObject params =
          new PusherAuthParamsObject(
              exchangeSpecification.getSecretKey(),
              exchangeSpecification.getApiKey(),
              exchangeSpecification.getUserName(),
              getNonceFactory());

      CoinmateUrlEncodedConnectionFactory urlEncodedConnectionFactory =
          new CoinmateUrlEncodedConnectionFactory(params);
      HttpAuthorizer authorizer =
          new HttpAuthorizer("https://www.coinmate.io/api/pusherAuth", urlEncodedConnectionFactory);
      PusherOptions options = new PusherOptions();
      options.setAuthorizer(authorizer);
      options.setCluster("mt1");
      streamingService = new PusherStreamingService(API_KEY, options);
    } else {
      streamingService = new PusherStreamingService(API_KEY);
    }
  }

  @Override
  protected void initServices() {
    super.initServices();
    createExchange();
    streamingMarketDataService = new CoinmateStreamingMarketDataService(streamingService);
    streamingAccountService =
        new CoinmateStreamingAccountService(streamingService, exchangeSpecification.getUserName());
    streamingTradeService =
        new CoinmateStreamingTradeService(streamingService, exchangeSpecification.getUserName());
  }

  @Override
  public Completable connect(ProductSubscription... args) {
    return streamingService.connect();
  }

  @Override
  public Completable disconnect() {
    return streamingService.disconnect();
  }

  @Override
  public StreamingMarketDataService getStreamingMarketDataService() {
    return streamingMarketDataService;
  }

  @Override
  public StreamingTradeService getStreamingTradeService() {
    return streamingTradeService;
  }

  @Override
  public StreamingAccountService getStreamingAccountService() {
    return streamingAccountService;
  }

  @Override
  public boolean isAlive() {
    return streamingService.isSocketOpen();
  }

  @Override
  public void useCompressedMessages(boolean compressedMessages) {
    streamingService.useCompressedMessages(compressedMessages);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy