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

com.gitee.easyopen.ApiConfig Maven / Gradle / Ivy

package com.gitee.easyopen;

import com.gitee.easyopen.doc.DocFileCreator;
import com.gitee.easyopen.exception.DefaultEasyopenExceptionHandler;
import com.gitee.easyopen.exception.EasyopenExceptionHandler;
import com.gitee.easyopen.interceptor.ApiInterceptor;
import com.gitee.easyopen.jwt.JwtService;
import com.gitee.easyopen.jwt.impl.JwtServiceImpl;
import com.gitee.easyopen.serializer.JsonResultSerializer;
import com.gitee.easyopen.session.ApiSessionManager;
import com.gitee.easyopen.session.SessionManager;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;

/**
 * 配置类,所有配置相关都在这里.
 *
 * @author tanghc
 */
@Data
public class ApiConfig {
    /**
     * 加密工具
     */
    private Encrypter encrypter = new ApiEncrypter();
    /**
     * app秘钥管理
     */
    private AppSecretManager appSecretManager = new CacheAppSecretManager();
    /**
     * 返回结果
     */
    private ResultCreator resultCreator = new ApiResultCreator();
    /**
     * json序列化
     */
    private ResultSerializer jsonResultSerializer = new JsonResultSerializer();

    /**
     * 签名工具
     */
    private Signer signer = new ApiSigner();

    private RespWriter respWriter = new ApiRespWriter();
    /**
     * 参数解析
     */
    private ParamParser paramParser = new ApiParamParser();

    /**
     * session管理
     */
    private SessionManager sessionManager = new ApiSessionManager();

    /**
     * 拦截器
     */
    private ApiInterceptor[] interceptors = {};


    /**
     * 错误模块
     */
    private List isvModules = new ArrayList();

    /**
     * data部分解码
     */
    private DataDecoder dataDecoder = new ApiDataDecoder();

    /**
     * api注册事件
     */
    private ApiRegistEvent apiRegistEvent = apiDefinition -> {
    };

    /* ************在构造方法中初始化************ */

    /**
     * 校验接口
     */
    private Validator validator = new ApiValidator();

    /**
     * JWT处理
     */
    private JwtService jwtService = new JwtServiceImpl();
    /**
     * 请求转发
     */
    private Invoker invoker = new ApiInvoker();

    private DocFileCreator docFileCreator;

    private EasyopenExceptionHandler exceptionHandler = new DefaultEasyopenExceptionHandler();

    /* ***************************** */


    /**
     * 默认版本号
     */
    private String defaultVersion = "";

    /**
     * 超时时间
     */
    private int timeoutSeconds = 3;

    /**
     * 是否生成doc文档
     */
    private boolean showDoc;

    /**
     * 文档页面密码,默认为null,如果不为null,文档页面一定开启。
     */
    private String docPassword;

    /**
     * 文档模板路径
     */
    private String docClassPath = "/easyopen_template/doc.html";

    /**
     * 登录页模板路径
     */
    private String loginClassPath = "/easyopen_template/login.html";

    /**
     * 忽略验证
     */
    private boolean ignoreValidate;

    /**
     * 登录视图页面用于,mvc视图,如:loginView
     */
    private String oauth2LoginUri = "/oauth2login";

    /**
     * oauth2的accessToken过期时间,单位秒,默认2小时
     */
    private long oauth2ExpireIn = 7200;

    /**
     * jwt过期时间,秒,默认2小时
     */
    private int jwtExpireIn = 7200;

    /**
     * 最外包装类class
     */
    private Class wrapperClass;

    /**
     * jwt对应的secret
     */
    private String jwtSecret = "#56gu25@41tCVr]>0$";

    /**
     * markdown文档保存目录
     */
    private String markdownDocDir;

    public ApiConfig() {
        isvModules.add("i18n/isv/error");
    }

    /**
     * 开启app对接模式,开启后不进行timeout校验。
* 如果平台直接跟Android或IOS对接,可开启这个功能。因为手机上的时间有可能跟服务端的时间不一致(用户的手机情况不可控)。
* 失去了时间校验,一个请求有可能被反复调用,服务端需要防止重复提交,有必要的话上HTTPS。 */ public void openAppMode() { this.timeoutSeconds = 0; } /** * 添加秘钥配置,map中存放秘钥信息,key对应appKey,value对应secret * * @param appSecretStore */ public void addAppSecret(Map appSecretStore) { this.appSecretManager.addAppSecret(appSecretStore); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy