001
002package com.commercetools.ml.client;
003
004import java.net.URI;
005import java.time.Duration;
006import java.util.ArrayList;
007import java.util.List;
008import java.util.concurrent.CompletableFuture;
009
010import io.vrap.rmf.base.client.*;
011import io.vrap.rmf.base.client.utils.Generated;
012
013import org.apache.commons.lang3.builder.EqualsBuilder;
014import org.apache.commons.lang3.builder.HashCodeBuilder;
015
016/**
017 *
018 *
019 * <hr>
020 * <div class=code-example>
021 * <pre><code class='java'>{@code
022 *   CompletableFuture<ApiHttpResponse<com.commercetools.ml.models.common.TaskToken>> result = apiRoot
023 *            .withProjectKey("{projectKey}")
024 *            .similarities()
025 *            .products()
026 *            .post(null)
027 *            .execute()
028 * }</code></pre>
029 * </div>
030 */
031@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
032public class ByProjectKeySimilaritiesProductsPost extends
033        BodyApiMethod<ByProjectKeySimilaritiesProductsPost, com.commercetools.ml.models.common.TaskToken, com.commercetools.ml.models.similar_products.SimilarProductSearchRequest> {
034
035    private String projectKey;
036
037    private com.commercetools.ml.models.similar_products.SimilarProductSearchRequest similarProductSearchRequest;
038
039    public ByProjectKeySimilaritiesProductsPost(final ApiHttpClient apiHttpClient, String projectKey,
040            com.commercetools.ml.models.similar_products.SimilarProductSearchRequest similarProductSearchRequest) {
041        super(apiHttpClient);
042        this.projectKey = projectKey;
043        this.similarProductSearchRequest = similarProductSearchRequest;
044    }
045
046    public ByProjectKeySimilaritiesProductsPost(ByProjectKeySimilaritiesProductsPost t) {
047        super(t);
048        this.projectKey = t.projectKey;
049        this.similarProductSearchRequest = t.similarProductSearchRequest;
050    }
051
052    @Override
053    protected ApiHttpRequest buildHttpRequest() {
054        List<String> params = new ArrayList<>(getQueryParamUriStrings());
055        String httpRequestPath = String.format("%s/similarities/products", this.projectKey);
056        if (!params.isEmpty()) {
057            httpRequestPath += "?" + String.join("&", params);
058        }
059        return new ApiHttpRequest(ApiHttpMethod.POST, URI.create(httpRequestPath), getHeaders(),
060            io.vrap.rmf.base.client.utils.json.JsonUtils.executing(
061                () -> apiHttpClient().getSerializerService().toJsonByteArray(similarProductSearchRequest)));
062
063    }
064
065    @Override
066    public ApiHttpResponse<com.commercetools.ml.models.common.TaskToken> executeBlocking(final ApiHttpClient client,
067            final Duration timeout) {
068        return executeBlocking(client, timeout, com.commercetools.ml.models.common.TaskToken.class);
069    }
070
071    @Override
072    public CompletableFuture<ApiHttpResponse<com.commercetools.ml.models.common.TaskToken>> execute(
073            final ApiHttpClient client) {
074        return execute(client, com.commercetools.ml.models.common.TaskToken.class);
075    }
076
077    public String getProjectKey() {
078        return this.projectKey;
079    }
080
081    public void setProjectKey(final String projectKey) {
082        this.projectKey = projectKey;
083    }
084
085    public com.commercetools.ml.models.similar_products.SimilarProductSearchRequest getBody() {
086        return similarProductSearchRequest;
087    }
088
089    public ByProjectKeySimilaritiesProductsPost withBody(
090            com.commercetools.ml.models.similar_products.SimilarProductSearchRequest similarProductSearchRequest) {
091        ByProjectKeySimilaritiesProductsPost t = copy();
092        t.similarProductSearchRequest = similarProductSearchRequest;
093        return t;
094    }
095
096    @Override
097    public boolean equals(Object o) {
098        if (this == o)
099            return true;
100
101        if (o == null || getClass() != o.getClass())
102            return false;
103
104        ByProjectKeySimilaritiesProductsPost that = (ByProjectKeySimilaritiesProductsPost) o;
105
106        return new EqualsBuilder().append(projectKey, that.projectKey)
107                .append(similarProductSearchRequest, that.similarProductSearchRequest)
108                .isEquals();
109    }
110
111    @Override
112    public int hashCode() {
113        return new HashCodeBuilder(17, 37).append(projectKey).append(similarProductSearchRequest).toHashCode();
114    }
115
116    @Override
117    protected ByProjectKeySimilaritiesProductsPost copy() {
118        return new ByProjectKeySimilaritiesProductsPost(this);
119    }
120}