//请求类 @Data @AllArgsConstructor @NoArgsConstructor public class LarkRequest{ String url; String method; Map headers; T requestBody; }
方法
static class LarkToken{
String token;
Long expire;
public LarkToken(String token, Long expire){
this.token = token;
this.expire = expire;
}
}
private static final Map companyTokenMap = new HashMap<>();
public static HttpResponse execute(LarkRequest> request, Company company){
if(request == null) return null;
if(request.getHeaders() == null) request.setHeaders(new HashMap<>());
request.getHeaders().put("Content-Type", "application/json; charset=utf-8");
HttpResponse response = null;
LarkToken larkToken = companyTokenMap.get(company.getCompanyId());
try {
String token;
if(larkToken == null || System.currentTimeMillis() / 1000 >= larkToken.expire) {
token = getToken(company.getAppId(), company.getAppSecret());
} else {
token = larkToken.token;
}
request.getHeaders().put("Authorization", "Bearer " + token);
ObjectMapper mapper = new ObjectMapper();
String bodyStr = mapper.writevalueAsString(request.getRequestBody());
switch (request.getMethod()) {
case "GET":
response = HttpsClient.doGet(request.getUrl(), request.getHeaders());
break;
case "POST":
response = HttpsClient.doPost(request.getUrl(), bodyStr, request.getHeaders());
break;
case "PATCH":
response = HttpsClient.doPatch(request.getUrl(), bodyStr, request.getHeaders());
break;
case "DELETE":
response = HttpsClient.doDelete(request.getUrl(),bodyStr, request.getHeaders());
break;
case "PUT":
response = HttpsClient.doPut(request.getUrl(), bodyStr, request.getHeaders());
break;
}
} catch (Exception e) {
LoggerUtil.getLogger(LarkRequestBuilder.class).warn(e.getMessage());
e.printStackTrace();
}
return response;
}



