publish 2.0.0.rc15

This commit is contained in:
曾文豪
2024-08-05 19:11:17 +08:00
parent a22467d4f1
commit bb38428708
17 changed files with 133 additions and 86 deletions

View File

@@ -1,40 +1,88 @@
//package com.tiesheng.web.service;
//
//import cn.hutool.json.JSONUtil;
//import cn.hutool.log.LogFactory;
//import com.tiesheng.util.service.http.OkHttpUtil;
//import okhttp3.Interceptor;
//import okhttp3.Request;
//import okhttp3.Response;
//import org.springframework.stereotype.Component;
//
//import javax.validation.constraints.NotNull;
//
//@Component
//public class LogApiOkHttpInterceptor implements Interceptor {
//
// @NotNull
// @Override
// public Response intercept(@NotNull Chain chain) {
//
// Request request = chain.request();
//
// Response response;
// try {
// response = chain.proceed(request);
// } catch (Exception e) {
// response = new Response.Builder()
// .request(request)
// .body(OkHttpUtil.ofJsonResponse(JSONUtil.createObj()
// .putOpt("code", -1)
// .putOpt("message", e.getMessage())
// .putOpt("exception", e)
// .toString()))
// .code(200).build();
// }
//
// LogFactory.get().info("url: {}body: {}", request.url(), response.body().contentType().toString());
//
// return response;
// }
//}
package com.tiesheng.web.service;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.tiesheng.util.service.http.OkHttpUtil;
import com.tiesheng.web.mapper.CoreLogApiMapper;
import com.tiesheng.web.pojos.dao.CoreLogApi;
import okhttp3.*;
import okio.Buffer;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
@Component
public class LogApiOkHttpInterceptor implements Interceptor {
@Resource
CoreLogApiMapper coreLogApiMapper;
@NotNull
@Override
public Response intercept(@NotNull Chain chain) {
CoreLogApi logApi = new CoreLogApi();
Request request = chain.request();
logApi.setUrl(request.url().toString());
logApi.setContent(requestBody2String(request));
Response response;
try {
response = chain.proceed(request);
ResponseBody peekBody = response.peekBody(Long.MAX_VALUE);
logApi.setRespBody(peekBody.string());
logApi.setResult(response.code());
peekBody.close();
} catch (Exception e) {
logApi.setRespBody(JSONUtil.createObj()
.putOpt("code", -1)
.putOpt("message", e.getMessage())
.putOpt("exception", e)
.toString());
response = new Response.Builder()
.request(request)
.body(OkHttpUtil.ofJsonResponse(logApi.getRespBody()))
.build();
}
ThreadUtil.execute(() -> coreLogApiMapper.insert(logApi));
return response;
}
private String requestBody2String(@NotNull Request request) {
final Request copy = request.newBuilder().build();
RequestBody requestBody = copy.body();
if (requestBody == null) {
return null;
}
if (requestBody instanceof MultipartBody) {
return null;
}
if (requestBody instanceof FormBody) {
JSONObject jsonObject = JSONUtil.createObj();
FormBody formBody = (FormBody) requestBody;
for (int i = 0; i < formBody.size(); i++) {
jsonObject.putOpt(formBody.encodedName(i), formBody.encodedValue(i));
}
return jsonObject.toString();
}
final Buffer buffer = new Buffer();
try {
if (copy.body() != null) {
copy.body().writeTo(buffer);
}
} catch (Exception e) {
return "occurs error when show requestBody";
}
return buffer.readUtf8();
}
}