/*- * ============LICENSE_START======================================================= * ONAP - SO * ================================================================================ * Copyright (C) 2017 - 2019 Bell Canada. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============LICENSE_END========================================================= */ package org.onap.so.client.cds; import io.grpc.CallOptions; import io.grpc.Channel; import io.grpc.ClientCall; import io.grpc.ClientCall.Listener; import io.grpc.ClientInterceptor; import io.grpc.ForwardingClientCall; import io.grpc.Metadata; import io.grpc.Metadata.Key; import io.grpc.MethodDescriptor; public class BasicAuthClientInterceptor implements ClientInterceptor { private CDSProperties props; public BasicAuthClientInterceptor(CDSProperties props) { this.props = props; } @Override public ClientCall interceptCall( MethodDescriptor method, CallOptions callOptions, Channel channel) { Key authHeader = Key.of("Authorization", Metadata.ASCII_STRING_MARSHALLER); return new ForwardingClientCall.SimpleForwardingClientCall( channel.newCall(method, callOptions)) { @Override public void start(Listener responseListener, Metadata headers) { headers.put(authHeader, props.getBasicAuth()); super.start(responseListener, headers); } }; } }