package com.fs.common.utils;

import java.net.URL;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Map;

public class URLUtils {

    /**
     * 从给定的 URL 中获取指定的查询参数的值
     *
     * @param urlString URL 字符串
     * @param param 参数名
     * @return 参数值，如果不存在则返回 null
     */
    public static String getQueryParam(String urlString, String param) {
        try {
            URL url = new URL(urlString); // 创建 URL 对象
            String fragment = url.getRef(); // 获取 URL 中的锚点部分

            if (fragment != null && fragment.startsWith("/?")) {
                String query = fragment.substring(2); // 获取查询字符串部分

                // 解析查询字符串并返回指定的参数值
                Map<String, String> queryParams = parseQueryParams(query);
                return queryParams.get(param);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null; // 如果出错或找不到参数则返回 null
    }

    /**
     * 解析查询字符串，返回一个键值对的映射
     *
     * @param query 查询字符串
     * @return 键值对映射
     */
    private static Map<String, String> parseQueryParams(String query) {
        Map<String, String> queryParams = new HashMap<>();
        String[] params = query.split("&");

        for (String param : params) {
            String[] keyValue = param.split("=");
            if (keyValue.length == 2) {
                try {
                    String key = URLDecoder.decode(keyValue[0], "UTF-8");
                    String value = URLDecoder.decode(keyValue[1], "UTF-8");
                    queryParams.put(key, value);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }

        return queryParams;
    }

}
