All Downloads are FREE. Search and download functionalities are using the official Maven repository.

clarifai2.api.request.input.PatchInputRequest Maven / Gradle / Ivy

The newest version!
package clarifai2.api.request.input;

import clarifai2.internal.grpc.api.ConceptOuterClass;
import clarifai2.internal.grpc.api.DataOuterClass;
import clarifai2.internal.grpc.api.InputOuterClass;
import clarifai2.api.BaseClarifaiClient;
import clarifai2.api.request.ClarifaiRequest;
import clarifai2.dto.input.ClarifaiInput;
import clarifai2.dto.prediction.Concept;
import com.google.common.util.concurrent.ListenableFuture;
import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

public final class PatchInputRequest extends ClarifaiRequest.Builder {
  @NotNull private final String action;
  @NotNull private final String inputID;

  @NotNull private final List concepts = new ArrayList<>();

  public PatchInputRequest(@NotNull BaseClarifaiClient client, @NotNull String inputID, @NotNull String action) {
    super(client);
    this.inputID = inputID;
    this.action = action;
  }

  @NotNull public PatchInputRequest plus(@NotNull Concept... concepts) {
    return plus(Arrays.asList(concepts));
  }

  @NotNull public PatchInputRequest plus(@NotNull Collection concepts) {
    this.concepts.addAll(concepts);
    return this;
  }

  @NotNull @Override protected String method() {
    return "PATCH";
  }

  @NotNull @Override protected String subUrl() {
    return "v2/inputs";
  }

  @NotNull @Override protected DeserializedRequest request() {
    return new DeserializedRequest() {
      @NotNull @Override public ListenableFuture httpRequestGrpc() {
        DataOuterClass.Data.Builder dataBuilder = DataOuterClass.Data.newBuilder();
        if (!concepts.isEmpty()) {
          List conceptsGrpc = new ArrayList<>();
          for (Concept concept : concepts) {
            conceptsGrpc.add(concept.serialize());
          }
          dataBuilder.addAllConcepts(conceptsGrpc);
        }
        return stub().patchInputs(
            InputOuterClass.PatchInputsRequest.newBuilder()
                .setAction(action)
                .addInputs(InputOuterClass.Input.newBuilder().setId(inputID).setData(dataBuilder))
                .build()
        );
      }

      @NotNull @Override public ClarifaiInput unmarshalerGrpc(Object returnedObject) {
        InputOuterClass.MultiInputResponse inputsResponse = (InputOuterClass.MultiInputResponse) returnedObject;
        return ClarifaiInput.deserialize(inputsResponse.getInputs(0));
      }
    };
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy