feat: 项目整体命名修改cache-schema-checker
All checks were successful
缓存序列化结构检查 / cache-schema-check (push) Has been skipped
All checks were successful
缓存序列化结构检查 / cache-schema-check (push) Has been skipped
This commit is contained in:
58
src/main/java/com/codechecker/cache/notify/WeComNotifier.java
vendored
Normal file
58
src/main/java/com/codechecker/cache/notify/WeComNotifier.java
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
package com.codechecker.cache.notify;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import java.net.URI;
|
||||
import java.net.http.HttpClient;
|
||||
import java.net.http.HttpRequest;
|
||||
import java.net.http.HttpResponse;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.time.Duration;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 企业微信群机器人通知(markdown 消息)。
|
||||
*/
|
||||
public class WeComNotifier {
|
||||
|
||||
private final ObjectMapper mapper = new ObjectMapper();
|
||||
private final HttpClient client = HttpClient.newBuilder()
|
||||
.connectTimeout(Duration.ofSeconds(10))
|
||||
.build();
|
||||
|
||||
/**
|
||||
* @return 是否发送成功
|
||||
*/
|
||||
public boolean sendMarkdown(String webhookUrl, String markdown) {
|
||||
if (webhookUrl == null || webhookUrl.trim().isEmpty()) {
|
||||
System.err.println("[WeComNotifier] 未配置 webhook,跳过通知");
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
Map<String, Object> md = new LinkedHashMap<>();
|
||||
md.put("content", markdown);
|
||||
Map<String, Object> payload = new LinkedHashMap<>();
|
||||
payload.put("msgtype", "markdown");
|
||||
payload.put("markdown", md);
|
||||
|
||||
String body = mapper.writeValueAsString(payload);
|
||||
HttpRequest request = HttpRequest.newBuilder()
|
||||
.uri(URI.create(webhookUrl))
|
||||
.timeout(Duration.ofSeconds(15))
|
||||
.header("Content-Type", "application/json; charset=utf-8")
|
||||
.POST(HttpRequest.BodyPublishers.ofString(body, StandardCharsets.UTF_8))
|
||||
.build();
|
||||
|
||||
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
|
||||
if (response.statusCode() == 200) {
|
||||
return true;
|
||||
}
|
||||
System.err.println("[WeComNotifier] 通知失败, HTTP " + response.statusCode() + ": " + response.body());
|
||||
return false;
|
||||
} catch (Exception e) {
|
||||
System.err.println("[WeComNotifier] 通知异常: " + e.getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user