
io.kestra.plugin.gcp.function.HttpFunction Maven / Gradle / Ivy
package io.kestra.plugin.gcp.function;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.auth.oauth2.IdTokenCredentials;
import com.google.auth.oauth2.ServiceAccountCredentials;
import io.kestra.core.exceptions.IllegalVariableEvaluationException;
import io.kestra.core.models.annotations.Example;
import io.kestra.core.models.annotations.Plugin;
import io.kestra.core.models.annotations.PluginProperty;
import io.kestra.core.models.property.Property;
import io.kestra.core.models.tasks.RunnableTask;
import io.kestra.core.runners.DefaultRunContext;
import io.kestra.core.runners.RunContext;
import io.kestra.plugin.gcp.AbstractTask;
import io.micronaut.core.type.Argument;
import io.micronaut.http.HttpHeaders;
import io.micronaut.http.HttpMethod;
import io.micronaut.http.HttpRequest;
import io.micronaut.http.HttpResponse;
import io.micronaut.http.client.DefaultHttpClientConfiguration;
import io.micronaut.http.client.HttpClient;
import io.micronaut.http.client.exceptions.HttpClientResponseException;
import io.micronaut.http.client.netty.DefaultHttpClient;
import io.micronaut.http.client.netty.NettyHttpClientFactory;
import io.micronaut.http.codec.MediaTypeCodecRegistry;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.*;
import lombok.experimental.SuperBuilder;
import reactor.core.publisher.Mono;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.time.Duration;
import java.util.Collections;
import java.util.Map;
@SuperBuilder
@ToString
@EqualsAndHashCode
@Getter
@NoArgsConstructor
@Schema(
title = "Trigger Google Cloud Run Function.",
description = "Use this task to trigger an Cloud Run Function and collect the result if any"
)
@Plugin(examples = {
@Example(
full = true,
code = """
id: test_gcp_function
namespace: com.company.test.gcp
tasks:
- id: get_hello_json
type: io.kestra.plugin.gcp.function.HttpFunction
httpMethod: GET
url: https://my-function.europe-west9.run.app
"""
)
})
public class HttpFunction extends AbstractTask implements RunnableTask {
private static final Duration HTTP_READ_TIMEOUT = Duration.ofSeconds(60);
private static final NettyHttpClientFactory FACTORY = new NettyHttpClientFactory();
@Schema(title = "HTTP method")
@NotNull
protected Property httpMethod;
@Schema(title = "GCP Function URL")
@NotNull
protected Property url;
@Schema(
title = "HTTP body",
description = "JSON body of the Azure function"
)
@Builder.Default
protected Property
© 2015 - 2025 Weber Informatics LLC | Privacy Policy