package com.xiaopeng.operation.utils;
|
|
import com.xiaopeng.evi.oss.service.AliOssService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.jsoup.Jsoup;
|
import org.jsoup.nodes.Document;
|
import org.jsoup.nodes.Element;
|
import org.jsoup.select.Elements;
|
import org.springframework.stereotype.Component;
|
import org.springframework.util.StringUtils;
|
|
import java.io.UnsupportedEncodingException;
|
|
@Slf4j
|
@Component
|
public class ImageTagProcessor {
|
|
private final AliOssService aliOssService;
|
|
public ImageTagProcessor(AliOssService aliOssService) {
|
this.aliOssService = aliOssService;
|
}
|
|
public String replaceImgSrcWithDownloadUrl(String html) {
|
if (!StringUtils.hasText(html)) {
|
return html;
|
}
|
|
Document document = Jsoup.parse(html);
|
Elements imgTags = document.select("img");
|
for (Element imgTag : imgTags) {
|
String dataId = imgTag.attr("data-id");
|
String dataName = imgTag.attr("data-name");
|
if (!StringUtils.hasText(dataId) || !StringUtils.hasText(dataName)) {
|
continue;
|
}
|
|
try {
|
String downloadUrl = aliOssService.getDownloadUrl(dataId, dataName, true);
|
if (StringUtils.hasText(downloadUrl)) {
|
imgTag.attr("src", downloadUrl);
|
}
|
} catch (UnsupportedEncodingException e) {
|
log.warn("replace image src failed, dataId={}, dataName={}", dataId, dataName, e);
|
}
|
}
|
return document.body().html();
|
}
|
}
|