IEXTradingClient.java

1
package pl.zankowski.iextrading4j.client;
2
3
import com.google.common.collect.ImmutableMap;
4
import org.glassfish.jersey.client.JerseyClient;
5
import org.glassfish.jersey.client.JerseyClientBuilder;
6
import org.glassfish.jersey.jackson.JacksonFeature;
7
import pl.zankowski.iextrading4j.client.mapper.IEXTradingMapperContextResolver;
8
import pl.zankowski.iextrading4j.client.properties.PropertiesReader;
9
import pl.zankowski.iextrading4j.client.properties.PropertyType;
10
import pl.zankowski.iextrading4j.client.rest.endpoint.GenericRestEndpoint;
11
import pl.zankowski.iextrading4j.client.rest.manager.RestClient;
12
import pl.zankowski.iextrading4j.client.rest.manager.RestClientMetadata;
13
import pl.zankowski.iextrading4j.client.rest.manager.RestManager;
14
import pl.zankowski.iextrading4j.client.rest.manager.RestRequest;
15
import pl.zankowski.iextrading4j.client.socket.endpoint.GenericSocketEndpoint;
16
import pl.zankowski.iextrading4j.client.socket.manager.SocketManager;
17
import pl.zankowski.iextrading4j.client.socket.manager.SocketRequest;
18
import pl.zankowski.iextrading4j.client.socket.manager.SocketWrapper;
19
import pl.zankowski.iextrading4j.client.sse.endpoint.GenericSseEndpoint;
20
import pl.zankowski.iextrading4j.client.sse.manager.SseClient;
21
import pl.zankowski.iextrading4j.client.sse.manager.SseClientMetadata;
22
import pl.zankowski.iextrading4j.client.sse.manager.SseManager;
23
import pl.zankowski.iextrading4j.client.sse.manager.SseRequest;
24
25
import java.util.Map;
26
import java.util.function.Consumer;
27
28
public class IEXTradingClient implements IEXApiClient, IEXCloudClient {
29
30
    private static final Map<IEXTradingApiVersion, PropertyType> REST_PATHS =
31
            ImmutableMap.<IEXTradingApiVersion, PropertyType>builder()
32
                    .put(IEXTradingApiVersion.IEX_API_V1, PropertyType.API_REST_V1)
33
                    .put(IEXTradingApiVersion.IEX_CLOUD_BETA, PropertyType.API_REST_V2_BETA)
34
                    .put(IEXTradingApiVersion.IEX_CLOUD_BETA_SANDBOX, PropertyType.API_REST_V2_BETA_SANDBOX)
35
                    .put(IEXTradingApiVersion.IEX_CLOUD_V1, PropertyType.API_REST_V2)
36
                    .put(IEXTradingApiVersion.IEX_CLOUD_STABLE, PropertyType.API_REST_STABLE)
37
                    .put(IEXTradingApiVersion.IEX_CLOUD_STABLE_SANDBOX, PropertyType.API_REST_STABLE_SANDBOX)
38
                    .put(IEXTradingApiVersion.IEX_CLOUD_V1_SANDBOX, PropertyType.API_REST_V2_SANDBOX)
39
                    .build();
40
41
    private static final Map<IEXTradingApiVersion, PropertyType> SSE_PATHS =
42
            ImmutableMap.<IEXTradingApiVersion, PropertyType>builder()
43
                    .put(IEXTradingApiVersion.IEX_CLOUD_BETA, PropertyType.API_SSE_V2)
44
                    .put(IEXTradingApiVersion.IEX_CLOUD_BETA_SANDBOX, PropertyType.API_SSE_V2_SANDBOX)
45
                    .put(IEXTradingApiVersion.IEX_CLOUD_V1, PropertyType.API_SSE_V2)
46
                    .put(IEXTradingApiVersion.IEX_CLOUD_V1_SANDBOX, PropertyType.API_SSE_V2_SANDBOX)
47
                    .build();
48
49
    private final GenericRestEndpoint genericRestEndpoint;
50
    private final GenericSocketEndpoint genericSocketEndpoint;
51
    private final GenericSseEndpoint genericSseEndpoint;
52
53
    private IEXTradingClient() {
54
        this(IEXTradingApiVersion.IEX_API_V1, null);
55
    }
56
57
    private IEXTradingClient(final IEXTradingApiVersion version, final IEXCloudToken token) {
58
        // JacksonFeature must be registered by JerseyClientBuilder instead of ClientBuilder
59
        final JerseyClient client =
60
                new JerseyClientBuilder().register(IEXTradingMapperContextResolver.class).build().register(JacksonFeature.class);
61
        final RestClient restClient = new RestClient(client, new RestClientMetadata(
62
                PropertiesReader.getInstance().getString(REST_PATHS.get(version)), token));
63
        final SseClient sseClient = new SseClient(client, new SseClientMetadata(
64
                PropertiesReader.getInstance().getString(SSE_PATHS.get(version)), token));
65
        restClient.getClient().register(IEXTradingMapperContextResolver.class);
66
67
        genericRestEndpoint = new GenericRestEndpoint(new RestManager(restClient));
68
        genericSocketEndpoint = new GenericSocketEndpoint(new SocketManager(new SocketWrapper(),
69
                PropertiesReader.getInstance().getString(PropertyType.API_SOCKET_V1)));
70
        genericSseEndpoint = new GenericSseEndpoint(new SseManager(sseClient));
71
    }
72
73
    public static IEXApiClient create() {
74 1 1. create : replaced return value with null for pl/zankowski/iextrading4j/client/IEXTradingClient::create → NO_COVERAGE
        return new IEXTradingClient();
75
    }
76
77
    public static IEXCloudClient create(final IEXCloudToken token) {
78 1 1. create : replaced return value with null for pl/zankowski/iextrading4j/client/IEXTradingClient::create → NO_COVERAGE
        return new IEXTradingClient(IEXTradingApiVersion.IEX_CLOUD_BETA, token);
79
    }
80
81
    public static IEXCloudClient create(final IEXTradingApiVersion version, final IEXCloudToken token) {
82 1 1. create : replaced return value with null for pl/zankowski/iextrading4j/client/IEXTradingClient::create → NO_COVERAGE
        return new IEXTradingClient(version, token);
83
    }
84
85
    public <R> R executeRequest(final RestRequest<R> restRequest) {
86 1 1. executeRequest : replaced return value with null for pl/zankowski/iextrading4j/client/IEXTradingClient::executeRequest → NO_COVERAGE
        return genericRestEndpoint.executeRequest(restRequest);
87
    }
88
89
    @Override
90
    public <R> void subscribe(final SseRequest<R> sseRequest, final Consumer<R> consumer) {
91 1 1. subscribe : removed call to pl/zankowski/iextrading4j/client/sse/endpoint/GenericSseEndpoint::subscribe → NO_COVERAGE
        genericSseEndpoint.subscribe(sseRequest, consumer);
92
    }
93
94
    @Override
95
    public <R> void unsubscribe(final SseRequest<R> sseRequest) {
96 1 1. unsubscribe : removed call to pl/zankowski/iextrading4j/client/sse/endpoint/GenericSseEndpoint::unsubscribe → NO_COVERAGE
        genericSseEndpoint.unsubscribe(sseRequest);
97
    }
98
99
    public <R> void subscribe(final SocketRequest<R> socketRequest, final Consumer<R> consumer) {
100 1 1. subscribe : removed call to pl/zankowski/iextrading4j/client/socket/endpoint/GenericSocketEndpoint::subscribe → NO_COVERAGE
        genericSocketEndpoint.subscribe(socketRequest, consumer);
101
    }
102
103
    public <R> void unsubscribe(final SocketRequest<R> socketRequest) {
104 1 1. unsubscribe : removed call to pl/zankowski/iextrading4j/client/socket/endpoint/GenericSocketEndpoint::unsubscribe → NO_COVERAGE
        genericSocketEndpoint.unsubscribe(socketRequest);
105
    }
106
107
}

Mutations

74

1.1
Location : create
Killed by : none
replaced return value with null for pl/zankowski/iextrading4j/client/IEXTradingClient::create → NO_COVERAGE

78

1.1
Location : create
Killed by : none
replaced return value with null for pl/zankowski/iextrading4j/client/IEXTradingClient::create → NO_COVERAGE

82

1.1
Location : create
Killed by : none
replaced return value with null for pl/zankowski/iextrading4j/client/IEXTradingClient::create → NO_COVERAGE

86

1.1
Location : executeRequest
Killed by : none
replaced return value with null for pl/zankowski/iextrading4j/client/IEXTradingClient::executeRequest → NO_COVERAGE

91

1.1
Location : subscribe
Killed by : none
removed call to pl/zankowski/iextrading4j/client/sse/endpoint/GenericSseEndpoint::subscribe → NO_COVERAGE

96

1.1
Location : unsubscribe
Killed by : none
removed call to pl/zankowski/iextrading4j/client/sse/endpoint/GenericSseEndpoint::unsubscribe → NO_COVERAGE

100

1.1
Location : subscribe
Killed by : none
removed call to pl/zankowski/iextrading4j/client/socket/endpoint/GenericSocketEndpoint::subscribe → NO_COVERAGE

104

1.1
Location : unsubscribe
Killed by : none
removed call to pl/zankowski/iextrading4j/client/socket/endpoint/GenericSocketEndpoint::unsubscribe → NO_COVERAGE

Active mutators

Tests examined


Report generated by PIT 1.7.1