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

io.opentelemetry.maven.handler.SnykMonitorHandler Maven / Gradle / Ivy

There is a newer version: 1.41.0-alpha
Show newest version
/*
 * Copyright The OpenTelemetry Authors
 * SPDX-License-Identifier: Apache-2.0
 */

package io.opentelemetry.maven.handler;

import io.opentelemetry.api.trace.SpanBuilder;
import io.opentelemetry.api.trace.SpanKind;
import io.opentelemetry.maven.MavenGoal;
import io.opentelemetry.maven.semconv.MavenOtelSemanticAttributes;
import io.opentelemetry.semconv.HttpAttributes;
import io.opentelemetry.semconv.UrlAttributes;
import java.util.Collections;
import java.util.List;
import org.apache.maven.execution.ExecutionEvent;

/** See https://github.com/snyk/snyk-maven-plugin */
final class SnykMonitorHandler implements MojoGoalExecutionHandler {

  /**
   * Snyk command "reversed engineered" invoking the Snyk CLI on a Maven project with the `-d` debug
   * flag `snyk -d monitor`. See Snyk CLI Cheat
   * Sheet
   */
  @Override
  public void enrichSpan(SpanBuilder spanBuilder, ExecutionEvent executionEvent) {
    spanBuilder.setSpanKind(SpanKind.CLIENT);
    spanBuilder.setAttribute(MavenOtelSemanticAttributes.PEER_SERVICE, "snyk.io");
    spanBuilder.setAttribute(UrlAttributes.URL_FULL, "https://snyk.io/api/v1/monitor/maven");
    spanBuilder.setAttribute(MavenOtelSemanticAttributes.RPC_METHOD, "monitor");
    spanBuilder.setAttribute(HttpAttributes.HTTP_REQUEST_METHOD, "POST");
  }

  @Override
  public List getSupportedGoals() {
    return Collections.singletonList(MavenGoal.create("io.snyk", "snyk-maven-plugin", "monitor"));
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy