package org.jk.rag.utils;


import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import org.jk.common.core.config.DeepseekConfig;
import org.springframework.stereotype.Component;


import java.nio.charset.StandardCharsets;
import java.util.Base64;

@Component
@RequiredArgsConstructor
public class Base64DecodeUtil {
    // 注入配置类，获取解码开关
    private final DeepseekConfig deepseekConfig;

    // Java 8+ 内置Base64解码器（线程安全，可静态初始化）
    private static final Base64.Decoder BASE64_DECODER = Base64.getDecoder();

    /**
     * 根据配置动态解码字符串
     * @param encodedContent 可能经过Base64编码的字符串
     * @return 解码后的字符串（无需解码则返回原字符串）
     */
    public String decodeIfNeeded(String encodedContent) {
        // 1. 开关关闭、字符串为null/空，直接返回原内容
        if ( encodedContent == null || encodedContent.isEmpty()) {
            return encodedContent;
        }

        try {
            // 2. 开关开启，执行Base64解码（默认UTF-8，需调整编码可修改此处）
            byte[] decodedBytes = BASE64_DECODER.decode(encodedContent);
            return new String(decodedBytes, StandardCharsets.UTF_8);
        } catch (IllegalArgumentException e) {
            // 3. 非法Base64字符串，返回原内容（或抛出业务异常，按需调整）
            System.err.printf("Base64解码失败，内容[%s]不是合法Base64字符串：%s%n", encodedContent, e.getMessage());
            return encodedContent;
        }
    }
}
