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

clarifai2.solutions.moderation.dto.ModerationStatus Maven / Gradle / Ivy

The newest version!
package clarifai2.solutions.moderation.dto;

import clarifai2.internal.InternalUtil;
import clarifai2.internal.JSONAdapterFactory;
import com.google.auto.value.AutoValue;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.reflect.TypeToken;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
import java.util.List;

import static clarifai2.internal.InternalUtil.fromJson;
import static clarifai2.internal.InternalUtil.isJsonNull;

@AutoValue
@JsonAdapter(ModerationStatus.Adapter.class)
public abstract class ModerationStatus {

  public abstract int statusCode();

  @NotNull public abstract String description();

  @Nullable public abstract String inputID();

  @NotNull public abstract List details();


  static class Adapter extends JSONAdapterFactory {
    @Nullable @Override protected Deserializer deserializer() {
      return new Deserializer() {
        @Nullable @Override
        public ModerationStatus deserialize(
            @NotNull JsonElement json,
            @NotNull TypeToken type,
            @NotNull Gson gson) {
          final JsonObject root = InternalUtil.assertJsonIs(json, JsonObject.class);

          List moderationDetails = new ArrayList<>();

          JsonArray details = root.getAsJsonArray("details");
          if (details != null) {
            for (JsonElement detailElement: details) {
              moderationDetails.add(fromJson(gson, detailElement, ModerationDetail.class));
            }
          }

          return new AutoValue_ModerationStatus(
              root.get("code").getAsInt(),
              root.get("description").getAsString(),
              isJsonNull(root.get("input_id")) ? null : root.get("input_id").getAsString(),
              moderationDetails
          );
        }
      };
    }

    @NotNull @Override protected TypeToken typeToken() {
      return new TypeToken() {};
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy