package pl.touk.sputnik.connector.saas;
import com.google.gson.Gson;
import org.apache.http.HttpHost;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.impl.auth.BasicScheme;
import org.apache.http.impl.client.CloseableHttpClient;
import org.jetbrains.annotations.NotNull;
import pl.touk.sputnik.configuration.CliOption;
import pl.touk.sputnik.configuration.Configuration;
import pl.touk.sputnik.connector.ConnectorDetails;
import pl.touk.sputnik.connector.PatchsetBuilder;
import pl.touk.sputnik.connector.http.HttpConnector;
import pl.touk.sputnik.connector.http.HttpHelper;
public class SaasFacadeBuilder {
private HttpHelper httpHelper = new HttpHelper();
@NotNull
public SaasFacade build(Configuration configuration) {
ConnectorDetails connectorDetails = new ConnectorDetails(configuration);
String apiKey = configuration.getProperty(CliOption.API_KEY);
String buildId = configuration.getProperty(CliOption.BUILD_ID);
HttpHost httpHost = httpHelper.buildHttpHost(connectorDetails);
HttpClientContext httpClientContext = httpHelper.buildClientContext(httpHost, new BasicScheme());
CloseableHttpClient closeableHttpClient = httpHelper.buildClient(httpHost, connectorDetails);
return new SaasFacade(new SaasConnector(
new HttpConnector(closeableHttpClient, httpClientContext, connectorDetails.getPath()),
PatchsetBuilder.build(configuration), apiKey, buildId), new Gson());
}
}