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}