优化代码结构

This commit is contained in:
peng
2021-11-11 20:53:02 +08:00
parent 113cb63d62
commit db2341a23d
50 changed files with 1286 additions and 1110 deletions

View File

@@ -0,0 +1,102 @@
package com.dayrain.component;
import com.dayrain.utils.FileUtils;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
import java.util.UUID;
/**
* 请求处理
* @author peng
* @date 2021/11/8
*/
public class RequestHandler implements HttpHandler {
private static final String STRING_PATTERN = "$string$";
private static final String INT_PATTERN = "$int$";
private final ServerUrl serverUrl;
public RequestHandler(ServerUrl serverUrl) {
this.serverUrl = serverUrl;
}
@Override
public void handle(HttpExchange exchange) {
RequestType requestType = serverUrl.getRequestType();
String param = null;
if (RequestType.GET.equals(requestType)) {
param = handleGetRequest(exchange);
}
if (RequestType.POST.equals(requestType)) {
param = handlePostRequest(exchange);
}
String resp = replaceResp(serverUrl.getResponseBody());
ConsoleLog.log(serverUrl, param, resp);
response(exchange, resp);
}
private String handleGetRequest(HttpExchange exchange) {
return exchange.getRequestURI().getQuery();
}
private String handlePostRequest(HttpExchange exchange) {
return FileUtils.getFromInputStream(exchange.getRequestBody());
}
private void response(HttpExchange exchange, String jsonBody) {
try {
byte[] bytes = jsonBody.getBytes(StandardCharsets.UTF_8);
exchange.sendResponseHeaders(200, bytes.length);
exchange.setAttribute("Content-Type", "application/json; charset=utf-8");
OutputStream outputStream = exchange.getResponseBody();
outputStream.write(jsonBody.getBytes(StandardCharsets.UTF_8));
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private String replaceResp(String resp) {
if (resp == null || "".equals(resp)) {
return resp;
}
Configuration configuration = ConfigHolder.get();
int stringLen = configuration.getStringLen();
int intLen = configuration.getIntLen();
while (resp.contains(STRING_PATTERN)) {
resp = resp.replace(STRING_PATTERN, randomString(stringLen));
}
while (resp.contains(INT_PATTERN)) {
resp = resp.replace(INT_PATTERN, String.valueOf(randomInt(intLen)));
}
return resp;
}
private String randomString(int len) {
String res = UUID.randomUUID().toString();
if (len > res.length()) {
len = res.length();
}
return UUID.randomUUID().toString().substring(0, len);
}
private int randomInt(int len) {
int res = (int) Math.pow(10, len - 1);
return res + (int) (Math.pow(10, len - 1) * Math.random());
}
}