package biz.karms.sinkit.ejb.gsb.impl;
import biz.karms.sinkit.ejb.gsb.GSBClient;
import biz.karms.sinkit.ejb.gsb.dto.FullHashLookupResponse;
import biz.karms.sinkit.ejb.gsb.util.FullHashLookupResponseReader;
import org.apache.commons.lang3.ArrayUtils;
import javax.ejb.Stateless;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.MediaType;
/**
* Created by tom on 12/5/15.
*
* @author Tomas Kozel
*/
@Stateless
public class GSBClientEJB implements GSBClient {
public static final String FULL_HASH_URL_ENV = "SINKIT_GSB_FULLHASH_URL";
public static final String API_KEY_ENV = "SINKIT_GSB_API_KEY";
public static final String CLIENT = "api";
public static final String APPVER = "1.0";
public static final String PVER = "3.0";
private static final String fullHashUrl = (System.getenv().containsKey(FULL_HASH_URL_ENV)) ? System.getenv(FULL_HASH_URL_ENV) : "https://safebrowsing.google.com/safebrowsing/gethash";
@Override
public FullHashLookupResponse getFullHashes(byte[] hashPrefix) {
final byte[] request = ArrayUtils.addAll("4:4\n".getBytes(), hashPrefix);
final Client client = ClientBuilder.newClient().register(FullHashLookupResponseReader.class);
return client.target(fullHashUrl)
.queryParam("client", CLIENT)
.queryParam("key", System.getenv(API_KEY_ENV))
.queryParam("appver", APPVER)
.queryParam("pver", PVER)
.request()
.accept(MediaType.APPLICATION_OCTET_STREAM_TYPE)
.post(Entity.entity(request, MediaType.APPLICATION_OCTET_STREAM_TYPE), FullHashLookupResponse.class);
}
}