/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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 org.apache.shenyu.client.core.utils;

import org.apache.commons.lang3.StringUtils;
import org.apache.shenyu.client.core.register.ApiBean;
import org.apache.shenyu.common.enums.RpcTypeEnum;

import java.util.Objects;

/**
 * ApiBeanUtil.
 */
public final class ApiBeanUtil {
    
    private ApiBeanUtil() {
    
    }
    
    /**
     * get rpc type.
     *
     * @param api api
     * @return rpc type
     */
    public static String getRpcType(final ApiBean.ApiDefinition api) {
        final String rpcType = api.getPropertiesValue("rpcType");
        if (StringUtils.isBlank(rpcType)) {
            for (RpcTypeEnum value : RpcTypeEnum.values()) {
                if (Objects.equals(value.getName(), api.getApiBean().getClientName())) {
                    return value.getName();
                }
            }
            return "unknown";
        }
        return rpcType;
    }
    
    /**
     * get rpc type.
     *
     * @param api api
     * @return rpc type
     */
    public static String getRpcType(final ApiBean api) {
        final String rpcType = api.getPropertiesValue("rpcType");
        if (StringUtils.isBlank(rpcType)) {
            for (RpcTypeEnum value : RpcTypeEnum.values()) {
                if (Objects.equals(value.getName(), api.getClientName())) {
                    return value.getName();
                }
            }
            return "unknown";
        }
        return rpcType;
    }
    
}
