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, ProjectScopedApiRoot { 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 @Override 027 public ByProjectKeyRequestBuilder with() { 028 return ApiRoot.fromClient(apiHttpClient).withProjectKey(projectKey); 029 } 030 031 public ByProjectKeyRequestBuilder withProjectKey(final String projectKey) { 032 return ApiRoot.fromClient(apiHttpClient).withProjectKey(projectKey); 033 } 034 035 @Override 036 public ByProjectKeyImageSearchRequestBuilder imageSearch() { 037 return with().imageSearch(); 038 } 039 040 @Override 041 public ByProjectKeyRecommendationsRequestBuilder recommendations() { 042 return with().recommendations(); 043 } 044 045 @Override 046 public ByProjectKeySimilaritiesRequestBuilder similarities() { 047 return with().similarities(); 048 } 049 050 @Override 051 public void close() { 052 if (apiHttpClient == null) { 053 return; 054 } 055 try { 056 apiHttpClient.close(); 057 } 058 catch (final Throwable ignored) { 059 } 060 } 061}