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

estonlabs.cxtl.exchanges.b2c2.v1.lib.B2C2StreamFactory Maven / Gradle / Ivy

There is a newer version: 1.4.14
Show newest version
package estonlabs.cxtl.exchanges.b2c2.v1.lib;

import estonlabs.cxtl.common.AbstractStreamFactory;
import estonlabs.cxtl.common.auth.Credentials;
import estonlabs.cxtl.common.codec.Codec;
import estonlabs.cxtl.common.codec.JacksonCodec;
import estonlabs.cxtl.common.stream.core.WebsocketConnection;
import estonlabs.cxtl.exchanges.a.specification.domain.Exchange;
import estonlabs.cxtl.exchanges.b2c2.v1.domain.B2C2InboundContainer;
import estonlabs.cxtl.exchanges.b2c2.v1.domain.B2C2OutboundMessage;
import lombok.NonNull;

import java.net.URI;
import java.util.List;
import java.util.concurrent.TimeUnit;

public class B2C2StreamFactory extends AbstractStreamFactory {

    public static final URI UAT = URI.create("wss://socket.uat.b2c2.net/quotes");

    public static final URI PROD = URI.create("wss://socket.b2c2.net/quotes");
    private static final Codec CODEC = new JacksonCodec();

    private final URI baseUri;

    public B2C2StreamFactory(URI baseUri) {
        super(Exchange.B2C2, CODEC, B2C2InboundContainer.class);
        this.baseUri = baseUri;
        staleWindow(TimeUnit.SECONDS.toMillis(30));
    }

    @Override
    protected B2C2StreamFactory me() {
        return this;
    }

    public WebsocketConnection createPrivateStream(@NonNull Credentials credentials) {
        return newPrivateWebsocket(baseUri, headers -> headers.put("Authorization", List.of("Token " + credentials.getApiKey())));
    }
}