package com.ruoyi.web.kb.support;

import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;

/**
 * 将业务表中的 {@code content_file_url} 解析为知识库「按 URL 拉取」接口所需的完整地址。
 */
public final class KbFileUrlResolver
{
    private KbFileUrlResolver()
    {
    }

    /**
     * @param contentFileUrl 表字段 content_file_url
     * @param fileUrlBase    配置项 ruoyi.kb.file-url-base，当 url 非绝对 http(s) 时必填
     */
    public static String resolveForKbUpload(String contentFileUrl, String fileUrlBase)
    {
        if (StringUtils.isEmpty(contentFileUrl))
        {
            throw new ServiceException("正文访问地址为空，无法同步知识库");
        }
        String p = contentFileUrl.trim();
        if (StringUtils.startsWithIgnoreCase(p, "http://") || StringUtils.startsWithIgnoreCase(p, "https://"))
        {
            return p;
        }
        if (StringUtils.isEmpty(fileUrlBase))
        {
            throw new ServiceException("正文访问地址不是完整 http(s) 地址时，请在配置中设置 ruoyi.kb.file-url-base（对外可访问的文件根地址）");
        }
        String base = fileUrlBase.trim();
        while (base.endsWith("/"))
        {
            base = base.substring(0, base.length() - 1);
        }
        String path = p.startsWith("/") ? p : "/" + p;
        return base + path;
    }
}
