Search in sources :

Example 6 with HttpRequest

use of com.azure.core.http.HttpRequest in project ApplicationInsights-Java by microsoft.

the class TelemetryChannel method internalSend.

/**
 * Object can be a list of {@link ByteBuffer} or a raw byte array. Regular telemetries will be
 * sent as {@code List<ByteBuffer>}. Persisted telemetries will be sent as byte[]
 */
private CompletableResultCode internalSend(List<ByteBuffer> byteBuffers, String instrumentationKey, Runnable onSuccess, Consumer<Boolean> onFailure, OperationLogger operationLogger) {
    HttpRequest request = new HttpRequest(HttpMethod.POST, endpointUrl);
    request.setBody(Flux.fromIterable(byteBuffers));
    int contentLength = byteBuffers.stream().mapToInt(ByteBuffer::limit).sum();
    request.setHeader("Content-Length", Integer.toString(contentLength));
    // need to suppress the default User-Agent "ReactorNetty/dev", otherwise Breeze ingestion
    // service will put that
    // User-Agent header into the client_Browser field for all telemetry that doesn't explicitly set
    // it's own
    // UserAgent (ideally Breeze would only have this behavior for ingestion directly from browsers)
    // TODO(trask)
    // not setting User-Agent header at all would be a better option, but haven't figured out how
    // to do that yet
    request.setHeader("User-Agent", "");
    request.setHeader("Content-Encoding", "gzip");
    // TODO(trask) subscribe with listener
    // * retry on first failure (may not need to worry about this if retry policy in pipeline
    // already, see above)
    // * write to disk on second failure
    CompletableResultCode result = new CompletableResultCode();
    final long startTime = System.currentTimeMillis();
    // Add instrumentation key to context to use in redirectPolicy
    Map<Object, Object> contextKeyValues = new HashMap<>();
    contextKeyValues.put(RedirectPolicy.INSTRUMENTATION_KEY, instrumentationKey);
    contextKeyValues.put(Tracer.DISABLE_TRACING_KEY, true);
    pipeline.send(request, Context.of(contextKeyValues)).subscribe(responseHandler(instrumentationKey, startTime, () -> {
        onSuccess.run();
        result.succeed();
    }, retryable -> {
        onFailure.accept(retryable);
        result.fail();
    }, operationLogger), errorHandler(instrumentationKey, retryable -> {
        onFailure.accept(retryable);
        result.fail();
    }, operationLogger));
    return result;
}
Also used : HttpRequest(com.azure.core.http.HttpRequest) HttpResponse(com.azure.core.http.HttpResponse) RedirectPolicy(com.microsoft.applicationinsights.agent.internal.httpclient.RedirectPolicy) Context(com.azure.core.util.Context) JsonGenerator(com.fasterxml.jackson.core.JsonGenerator) URL(java.net.URL) HttpPipeline(com.azure.core.http.HttpPipeline) LoggerFactory(org.slf4j.LoggerFactory) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) HashMap(java.util.HashMap) ByteBuffer(java.nio.ByteBuffer) Collections.singletonList(java.util.Collections.singletonList) LocalFileWriter(com.microsoft.applicationinsights.agent.internal.localstorage.LocalFileWriter) ArrayList(java.util.ArrayList) SerializedString(com.fasterxml.jackson.core.io.SerializedString) Tracer(com.azure.core.util.tracing.Tracer) Map(java.util.Map) JsonNode(com.fasterxml.jackson.databind.JsonNode) Nullable(javax.annotation.Nullable) NetworkFriendlyExceptions(com.microsoft.applicationinsights.agent.internal.common.NetworkFriendlyExceptions) Logger(org.slf4j.Logger) Configuration(com.microsoft.applicationinsights.agent.internal.configuration.Configuration) StringWriter(java.io.StringWriter) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) IOException(java.io.IOException) Mono(reactor.core.publisher.Mono) UnknownHostException(java.net.UnknownHostException) OperationLogger(com.microsoft.applicationinsights.agent.internal.common.OperationLogger) StatsbeatModule(com.microsoft.applicationinsights.agent.internal.statsbeat.StatsbeatModule) TelemetryItem(com.microsoft.applicationinsights.agent.internal.exporter.models.TelemetryItem) Consumer(java.util.function.Consumer) Flux(reactor.core.publisher.Flux) List(java.util.List) HttpRequest(com.azure.core.http.HttpRequest) LazyHttpClient(com.microsoft.applicationinsights.agent.internal.httpclient.LazyHttpClient) Cache(io.opentelemetry.instrumentation.api.cache.Cache) HttpMethod(com.azure.core.http.HttpMethod) JsonInclude(com.fasterxml.jackson.annotation.JsonInclude) SerializationFeature(com.fasterxml.jackson.databind.SerializationFeature) GZIPOutputStream(java.util.zip.GZIPOutputStream) CompletableResultCode(io.opentelemetry.sdk.common.CompletableResultCode) HashMap(java.util.HashMap) CompletableResultCode(io.opentelemetry.sdk.common.CompletableResultCode)

Example 7 with HttpRequest

use of com.azure.core.http.HttpRequest in project lowkey-vault by nagyesta.

the class ApacheHttpResponseTest method testConstructorShouldMapFieldsWhenCalled.

@Test
void testConstructorShouldMapFieldsWhenCalled() throws IOException {
    // given
    final HttpRequest request = mock(HttpRequest.class);
    final HttpResponse response = responseMock();
    // when
    final ApacheHttpResponse actual = new ApacheHttpResponse(request, response);
    // then
    verifyResponse(actual);
}
Also used : HttpRequest(com.azure.core.http.HttpRequest) HttpResponse(org.apache.http.HttpResponse) Test(org.junit.jupiter.api.Test)

Example 8 with HttpRequest

use of com.azure.core.http.HttpRequest in project lowkey-vault by nagyesta.

the class LowkeyVaultManagementClientImpl method delete.

@Override
public boolean delete(@NonNull final URI baseUri) {
    final URI uri = UriUtil.uriBuilderForPath(vaultUrl, MANAGEMENT_VAULT_PATH, Map.of(BASE_URI_QUERY_PARAM, baseUri.toString()));
    final HttpRequest request = new HttpRequest(HttpMethod.DELETE, uri.toString()).setHeader(HttpHeaders.CONTENT_TYPE, APPLICATION_JSON);
    return sendAndProcess(request, r -> r.getResponseObject(Boolean.class));
}
Also used : HttpRequest(com.azure.core.http.HttpRequest) URI(java.net.URI)

Example 9 with HttpRequest

use of com.azure.core.http.HttpRequest in project lowkey-vault by nagyesta.

the class LowkeyVaultManagementClientImpl method purge.

@Override
public boolean purge(@NonNull final URI baseUri) {
    final Map<String, String> parameters = Map.of(BASE_URI_QUERY_PARAM, baseUri.toString());
    final URI uri = UriUtil.uriBuilderForPath(vaultUrl, MANAGEMENT_VAULT_PURGE_PATH, parameters);
    final HttpRequest request = new HttpRequest(HttpMethod.DELETE, uri.toString()).setHeader(HttpHeaders.CONTENT_TYPE, APPLICATION_JSON);
    return sendAndProcess(request, r -> r.getResponseObject(Boolean.class));
}
Also used : HttpRequest(com.azure.core.http.HttpRequest) URI(java.net.URI)

Example 10 with HttpRequest

use of com.azure.core.http.HttpRequest in project lowkey-vault by nagyesta.

the class LowkeyVaultManagementClientImpl method createVault.

@Override
public VaultModel createVault(@NonNull final URI baseUri, @NonNull final RecoveryLevel recoveryLevel, @Nullable final Integer recoverableDays) {
    final String body = vaultModelAsString(baseUri, recoveryLevel, recoverableDays);
    final URI uri = UriUtil.uriBuilderForPath(vaultUrl, MANAGEMENT_VAULT_PATH);
    final HttpRequest request = new HttpRequest(HttpMethod.POST, uri.toString()).setBody(body).setHeader(HttpHeaders.CONTENT_TYPE, APPLICATION_JSON);
    return sendAndProcess(request, r -> r.getResponseObject(VaultModel.class));
}
Also used : HttpRequest(com.azure.core.http.HttpRequest) URI(java.net.URI)

Aggregations

HttpRequest (com.azure.core.http.HttpRequest)31 Test (org.junit.jupiter.api.Test)13 HttpMethod (com.azure.core.http.HttpMethod)9 HttpResponse (com.azure.core.http.HttpResponse)9 HttpClient (com.azure.core.http.HttpClient)8 URI (java.net.URI)8 URL (java.net.URL)8 HttpHeaders (com.azure.core.http.HttpHeaders)7 IOException (java.io.IOException)7 Mono (reactor.core.publisher.Mono)7 Date (java.util.Date)6 QuarkusUnitTest (io.quarkus.test.QuarkusUnitTest)5 StandardCharsets (java.nio.charset.StandardCharsets)4 CountDownLatch (java.util.concurrent.CountDownLatch)4 HttpPipeline (com.azure.core.http.HttpPipeline)3 WireMockServer (com.github.tomakehurst.wiremock.WireMockServer)3 WireMock (com.github.tomakehurst.wiremock.client.WireMock)3 WireMockConfiguration (com.github.tomakehurst.wiremock.core.WireMockConfiguration)3 Duration (java.time.Duration)3 HashMap (java.util.HashMap)3