package com.sjyt.icom.asst.common.util;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import org.springframework.util.StringUtils;

import java.util.HashMap;
import java.util.Map;

/**
 * <p>Url工具类</p>
 *
 * @author renyanru
 * @version V1.0.0
 * @date 2022/6/14 14:52
 */
public class UrlUtils {
    private static final StringBuffer URL_BUFFER = new StringBuffer(2048);

    /**
     * 将url参数转成map
     *
     * @param param url参数字符串
     * @return map
     */
//    public static Map<String, Object> getUrlParams(String param) {
//        if (StrUtil.isBlank(param)) {
//            return null;
//        }
//        Map<String, Object> map = new HashMap<>(8);
//        String[] params = param.split("&");
//        for (int i = 0; i < params.length; i++) {
//            String[] p = params[i].split("=");
//            if (p.length == 2) {
//                map.put(p[0], p[1]);
//            }
//        }
//        return map;
//    }

    /**
     * 将uri参数转map
     *
     * @param uri aa=11&bb=22
     * @return r
     */
    public static Map<String, String> getUrlParams(String uri) {
        Map<String, String> params = new HashMap<>(16);
        if (StringUtils.isEmpty(uri)) {
            return params;
        }
        int idx = uri.indexOf("?");
        if (idx == -1) {
            return params;
        }
        String[] paramsArr = uri.substring(idx + 1).split("&");
        for (String s : paramsArr) {
            String[] p = s.split("=");
            if (p.length == 2) {
                params.put(p[0], p[1]);
            }
        }
        return params;
    }

    /**
     * 验证param 验证成功返回字符串去除第一个？ 否则返回null
     *
     * @param param url字符串
     * @return r
     */
    private static String paramPrefixVerify(String param, String suffix) {
        if (StrUtil.isBlankIfStr(param) || StrUtil.isBlankIfStr(suffix)) {
            return null;
        }
        int length = param.length();
        // 携带url验证格式为?token=....携带参数应为大于7个字符且问号在第一位
        if (param.indexOf("?") != 0) {
            return null;
        }
        String str = param.substring(param.indexOf("?") + 1, suffix.length() + 1);
        // 截取？后面suffix.length个字符判断是否为suffix
        if (ObjectUtil.equals(str, suffix)) {
            return param.substring(param.indexOf("?") + 1, param.length());
        }
        return null;
    }
}
