001
002package com.commercetools.ml.client;
003
004import java.io.Closeable;
005
006import io.vrap.rmf.base.client.ApiHttpClient;
007import io.vrap.rmf.base.client.SerializerOnlyApiHttpClient;
008
009public class ProjectApiRoot implements Closeable {
010    private final String projectKey;
011    private final ApiHttpClient apiHttpClient;
012
013    private ProjectApiRoot(final String projectKey, final ApiHttpClient apiHttpClient) {
014        this.projectKey = projectKey;
015        this.apiHttpClient = apiHttpClient;
016    }
017
018    public static ProjectApiRoot of(final String projectKey) {
019        return new ProjectApiRoot(projectKey, SerializerOnlyApiHttpClient.of());
020    }
021
022    public static ProjectApiRoot fromClient(final String projectKey, final ApiHttpClient apiHttpClient) {
023        return new ProjectApiRoot(projectKey, apiHttpClient);
024    }
025
026    public ByProjectKeyRequestBuilder with() {
027        return ApiRoot.fromClient(apiHttpClient).withProjectKey(projectKey);
028    }
029
030    public ByProjectKeyRequestBuilder withProjectKey(final String projectKey) {
031        return ApiRoot.fromClient(apiHttpClient).withProjectKey(projectKey);
032    }
033
034    public ByProjectKeyImageSearchRequestBuilder imageSearch() {
035        return with().imageSearch();
036    }
037
038    public ByProjectKeyRecommendationsRequestBuilder recommendations() {
039        return with().recommendations();
040    }
041
042    public ByProjectKeySimilaritiesRequestBuilder similarities() {
043        return with().similarities();
044    }
045
046    @Override
047    public void close() {
048        if (apiHttpClient == null) {
049            return;
050        }
051        try {
052            apiHttpClient.close();
053        }
054        catch (final Throwable ignored) {
055        }
056    }
057}