package com.heyu.api.baidu.handle.convert;


import com.heyu.api.data.utils.StringUtils;
import com.heyu.api.baidu.BaiduBaseHandle;
import com.heyu.api.baidu.request.convert.BParserTextRequest;
import com.heyu.api.baidu.response.convert.BParserTextResp;
import org.springframework.stereotype.Component;

import java.util.Arrays;
import java.util.List;

/***
 * https://console.bce.baidu.com/support/?_=1740703582749&timestamp=1740704125877#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E6%99%BA%E8%83%BD%E6%96%87%E6%A1%A3%E5%88%86%E6%9E%90&api=rest%2F2.0%2Fbrain%2Fonline%2Fv2%2Fparser%2Ftask&method=post
 *
 * 文档解析-提交请求
 */
@Component
public class BParserTextHandle extends BaiduBaseHandle<BParserTextRequest, BParserTextResp> {


    private List<String> suport = Arrays.asList("True", "False");


    @Override
    public String getUri() {
        return "/rest/2.0/brain/online/v2/parser/task";
    }

    @Override
    public String check(BParserTextRequest bParserTextRequest) {
        if (StringUtils.isBlank(bParserTextRequest.getFileData())
                && StringUtils.isBlank(bParserTextRequest.getFileUrl())) {
            return "fileData和fileUrl不能同时为空";
        }
        if (StringUtils.isBlank(bParserTextRequest.getFileName())
                || !bParserTextRequest.getFileName().endsWith(".pdf")) {
            return "fileName 不能为空 或 fileName 的后缀必须是 .pdf";
        }

        if (!suport.contains(bParserTextRequest.getSwitchBoolean())) {
            return "switchBoolean 必须为 " + suport + ", 是否进行文档内容切分，「default=False」";
        }

        return null;
    }

    @Override
    public String getContent(BParserTextRequest bParserTextRequest) {
        StringBuffer sb = new StringBuffer();
        if (StringUtils.isNotBlank(bParserTextRequest.getFileName())) {
            sb.append("file_name=").append(bParserTextRequest.getFileName());
        }
        if (StringUtils.isNotBlank(bParserTextRequest.getSwitchBoolean())) {
            sb.append("&switch=").append(bParserTextRequest.getSwitchBoolean());
        }
        if (StringUtils.isNotBlank(bParserTextRequest.getFileUrl())) {
            sb.append("&file_url=").append(bParserTextRequest.getFileUrl());
        }
        if (StringUtils.isNotBlank(bParserTextRequest.getFileData())) {
            sb.append("&file_data=").append(bParserTextRequest.getFileData());
        }
        if (StringUtils.isNotBlank(bParserTextRequest.getReturnDocChunks())) {
            sb.append("&return_doc_chunks=").append(bParserTextRequest.getReturnDocChunks());
        }
        if (bParserTextRequest.getChunkSize() != null) {
            sb.append("&chunk_size=").append(bParserTextRequest.getChunkSize());
        }

        /**
         * separators	否	list	。/ ；/ ！/ ？/ ; / ! / ?	切分标点，仅包含表示一句话结束的标点。
         * 「default=["。", "；", "！", "？", ";", "!", "?"]」
         * 这个参数需要调试的时候看怎样用
         */
        return sb.toString();
    }
}
