package com.qmth.boot.api.annotation;

import com.qmth.boot.core.enums.Platform;
import com.qmth.boot.core.rateLimit.annotation.RateLimit;
import com.qmth.boot.tools.signature.SignatureType;

import java.lang.annotation.*;

/**
 * API接口自定义参数配置
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.METHOD })
@Documented
public @interface Aac {

    /**
     * 是否严格模式
     *
     * @return
     */
    boolean[] strict() default {};

    /**
     * 允许的访问来源
     *
     * @return
     */
    Platform[] platform() default {};

    /**
     * IP白名单
     *
     * @return
     */
    String[] ipAllow() default {};

    /**
     * IP黑名单
     *
     * @return
     */
    String[] ipDeny() default {};

    /**
     * 限流规则
     *
     * @return
     */
    RateLimit[] rateLimit() default {};

    /**
     * 是否需要鉴权
     *
     * @return
     */
    boolean[] auth() default {};

    /**
     * 允许的签名类型
     *
     * @return
     */
    SignatureType[] signType() default {};

}
