io.apiman.gateway.engine.vertx.polling.fetchers.auth.BasicAuth.java Source code

Java tutorial

Introduction

Here is the source code for io.apiman.gateway.engine.vertx.polling.fetchers.auth.BasicAuth.java

Source

/*
 * Copyright 2017 JBoss Inc
 *
 * 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.
 */

package io.apiman.gateway.engine.vertx.polling.fetchers.auth;

import io.apiman.common.util.Basic;
import io.vertx.core.AsyncResult;
import io.vertx.core.Future;
import io.vertx.core.Handler;
import io.vertx.core.MultiMap;
import io.vertx.core.Vertx;

import java.util.Map;
import java.util.Objects;

/**
 * Set BASIC auth credentials.
 *
 * <ul>
 *   <li>username: username</li>
 *   <li>password: password</li>
 * </ul>
 *
 * @author Marc Savy {@literal <marc@rhymewithgravy.com>}
 */
@SuppressWarnings("nls")
public final class BasicAuth implements Authenticator {

    @Override
    public Authenticator validateConfig(Map<String, String> config) {
        Objects.requireNonNull(config.get("username"), "must provide username.");
        Objects.requireNonNull(config.get("password"), "must provide password.");
        return this;
    }

    @Override
    public Authenticator authenticate(Vertx vertx, Map<String, String> config, MultiMap headerMap,
            Handler<AsyncResult<Void>> resultHandler) {
        headerMap.set("Authorization", Basic.encode(config.get("username"), config.get("password")));
        resultHandler.handle(Future.succeededFuture());
        return this;
    }
}