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

io.split.client.impressions.HttpImpressionsSender Maven / Gradle / Ivy

There is a newer version: 4.14.0
Show newest version
package io.split.client.impressions;

import io.split.client.dtos.KeyImpression;
import io.split.client.dtos.TestImpressions;
import io.split.client.utils.Utils;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;

/**
 * Created by patricioe on 6/20/16.
 */
public class HttpImpressionsSender implements ImpressionsSender {

    private static final Logger _logger = LoggerFactory.getLogger(HttpImpressionsSender.class);

    private CloseableHttpClient _client;
    private URI _eventsEndpoint;

    public HttpImpressionsSender(CloseableHttpClient client, String eventsEndpoint) throws URISyntaxException {
        _client = client;
        _eventsEndpoint = new URIBuilder(eventsEndpoint).setPath("/api/testImpressions/bulk").build();
    }

    @Override
    public void post(List impressions) {

        CloseableHttpResponse response = null;

        try {
            StringEntity entity = Utils.toJsonEntity(impressions);

            HttpPost request = new HttpPost(_eventsEndpoint);
            request.setEntity(entity);

            response = _client.execute(request);

            int status = response.getStatusLine().getStatusCode();

            if (status < 200 || status >= 300) {
                _logger.warn("Response status was: " + status);
            }

        } catch (Throwable t) {
            _logger.warn("Exception when posting impressions" + impressions, t);
        } finally {
            Utils.forceClose(response);
        }

    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy