public void accept()

in functions/imagemagick/src/main/java/functions/ImageMagick.java [57:99]


  public void accept(GcsEvent event, Context context) {
    // Validate parameters
    if (event.getBucket() == null || event.getName() == null) {
      logger.severe("Error: Malformed GCS event.");
      return;
    }

    BlobInfo blobInfo = BlobInfo.newBuilder(event.getBucket(), event.getName()).build();

    // Construct URI to GCS bucket and file.
    String gcsPath = String.format("gs://%s/%s", event.getBucket(), event.getName());
    logger.info(String.format("Analyzing %s", event.getName()));

    // Construct request.
    ImageSource imgSource = ImageSource.newBuilder().setImageUri(gcsPath).build();
    Image img = Image.newBuilder().setSource(imgSource).build();
    Feature feature = Feature.newBuilder().setType(Type.SAFE_SEARCH_DETECTION).build();
    AnnotateImageRequest request =
        AnnotateImageRequest.newBuilder().addFeatures(feature).setImage(img).build();
    List<AnnotateImageRequest> requests = List.of(request);

    // Send request to the Vision API.
    try (ImageAnnotatorClient client = ImageAnnotatorClient.create()) {
      BatchAnnotateImagesResponse response = client.batchAnnotateImages(requests);
      List<AnnotateImageResponse> responses = response.getResponsesList();
      for (AnnotateImageResponse res : responses) {
        if (res.hasError()) {
          logger.info(String.format("Error: %s", res.getError().getMessage()));
          return;
        }
        // Get Safe Search Annotations
        SafeSearchAnnotation annotation = res.getSafeSearchAnnotation();
        if (annotation.getAdultValue() == 5 || annotation.getViolenceValue() == 5) {
          logger.info(String.format("Detected %s as inappropriate.", event.getName()));
          blur(blobInfo);
        } else {
          logger.info(String.format("Detected %s as OK.", event.getName()));
        }
      }
    } catch (IOException e) {
      logger.log(Level.SEVERE, "Error with Vision API: " + e.getMessage(), e);
    }
  }