SearchApiKeyPipelinePolicy.java
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.azure.search.documents;
import com.azure.core.http.HttpPipelineCallContext;
import com.azure.core.http.HttpPipelineNextPolicy;
import com.azure.core.http.HttpResponse;
import com.azure.core.http.policy.HttpPipelinePolicy;
import reactor.core.publisher.Mono;
import java.util.Objects;
/**
* Policy that adds the Cognitive Search Service api-key into the request's Authorization header.
*/
public final class SearchApiKeyPipelinePolicy implements HttpPipelinePolicy {
private static final String API_KEY = "api-key";
private final SearchApiKeyCredential apiKey;
/**
* Constructor
*
* @param apiKey Azure Cognitive Search service api admin or query key
* @throws IllegalArgumentException when the api key is an empty string
*/
public SearchApiKeyPipelinePolicy(SearchApiKeyCredential apiKey) {
Objects.requireNonNull(apiKey, "'apiKey' cannot be null.");
this.apiKey = apiKey;
}
@Override
public Mono<HttpResponse> process(HttpPipelineCallContext context, HttpPipelineNextPolicy next) {
if ("http".equals(context.getHttpRequest().getUrl().getProtocol())) {
return Mono.error(new RuntimeException("Search api-key credentials require a URL using the HTTPS protocol "
+ "scheme."));
}
context.getHttpRequest().setHeader(API_KEY, this.apiKey.getApiKey());
return next.process();
}
}