package top.continew.admin.config.satoken;

import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.servlet.HandlerMapping;

/**
 * @Author: jia
 * @Date: 2025/06/10/10:21
 * @Description:
 */
public class PathTemplateExtractor {

    /**
     * 从请求中获取原始路径模板（带 {variable} 格式）
     */
    public static String getPathTemplate(HttpServletRequest request) {
        // 关键：从请求属性获取路径模板
        String pathTemplate = (String)request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);
        return pathTemplate != null ? pathTemplate : request.getRequestURI();
    }

    /**
     * 获取静态路径（移除所有变量部分）
     */
    public static String getStaticPath(HttpServletRequest request) {
        String template = getPathTemplate(request);
        // 移除所有 {variable} 格式的参数
        String res = template.replaceAll("/\\{[^/]+\\}", "");
        String[] parts = res.split("/");
        return parts[parts.length - 1];
    }
}