All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.kut3.http.InternalAPI Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2019 Kut3Net.
 *
 * 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 net.kut3.http;

import java.io.IOException;
import net.kut3.util.BytesUtil;
import net.kut3.util.StringUtil;

/**
 *
 */
public class InternalAPI extends RestAPI {

    public static final String SIGNATURE = "signature";

    @Override
    protected boolean logReq(APIContext apiCtx) throws IOException {
        if (!super.logReq(apiCtx)) {
            return false;
        }

        String callerCode = apiCtx.header(HttpHeader.X_CALLER);
        if (StringUtil.isNullOrEmpty(callerCode)) {
            apiCtx.badRequest(HttpHeader.X_CALLER + " nullOrEmpty");
            return false;
        }

        apiCtx.log(HttpHeader.X_CALLER, callerCode);

        Caller caller = CallerFactory.INSTANCE.get(callerCode);
        if (null == caller) {
            apiCtx.badRequest("Invalid " + HttpHeader.X_CALLER);
            return false;
        }

        String signature = apiCtx.header(HttpHeader.X_SIGNATURE);
        if (StringUtil.isNullOrEmpty(signature)) {
            apiCtx.badRequest(HttpHeader.X_SIGNATURE + " nullOrEmpty");
            return false;
        }

        try {
            apiCtx.attr(SIGNATURE, BytesUtil.fromBase64String(signature));
        } catch (IllegalArgumentException ex) {
            apiCtx.badRequest("Invalid " + HttpHeader.X_SIGNATURE);
            return false;
        }

        return true;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy