[ongeki] Add ongeki basic support and api endpoint.

This commit is contained in:
samnyan
2020-03-21 01:05:42 +09:00
parent c27a45a4d4
commit d3223309e3
91 changed files with 7322 additions and 16 deletions

View File

@@ -1,53 +0,0 @@
package icu.samnyan.aqua.sega.chunithm.filter;
import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.io.ByteArrayInputStream;
import java.io.IOException;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
public class ChuniRequestWrapper extends HttpServletRequestWrapper {
private ByteArrayInputStream input;
private ServletInputStream filterInput;
public ChuniRequestWrapper(HttpServletRequest request, byte[] input) {
super(request);
this.input = new ByteArrayInputStream(input);
}
@Override
public ServletInputStream getInputStream() throws IOException {
if (filterInput == null) {
filterInput = new ServletInputStream() {
@Override
public boolean isFinished() {
return false;
}
@Override
public boolean isReady() {
return false;
}
@Override
public void setReadListener(ReadListener readListener) {
}
@Override
public int read() throws IOException {
return input.read();
}
};
}
return filterInput;
}
}

View File

@@ -1,50 +0,0 @@
package icu.samnyan.aqua.sega.chunithm.filter;
import javax.servlet.ServletOutputStream;
import javax.servlet.WriteListener;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
public class ChuniResponseWrapper extends HttpServletResponseWrapper {
private ByteArrayOutputStream output;
private ServletOutputStream filterOutput;
public ChuniResponseWrapper(HttpServletResponse response) {
super(response);
output = new ByteArrayOutputStream();
}
@Override
public ServletOutputStream getOutputStream() throws IOException {
if (filterOutput == null) {
filterOutput = new ServletOutputStream() {
@Override
public boolean isReady() {
return false;
}
@Override
public void setWriteListener(WriteListener writeListener) {
}
@Override
public void write(int b) throws IOException {
output.write(b);
}
};
}
return filterOutput;
}
public byte[] toByteArray() {
return output.toByteArray();
}
}

View File

@@ -1,58 +0,0 @@
package icu.samnyan.aqua.sega.chunithm.filter;
import icu.samnyan.aqua.sega.util.Compression;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author samnyan (privateamusement@protonmail.com)
*/
@Component
public class CompressionFilter extends OncePerRequestFilter {
private static final Logger logger = LoggerFactory.getLogger(CompressionFilter.class);
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
String encoding = request.getHeader("content-encoding");
byte[] reqSrc = request.getInputStream().readAllBytes();
byte[] reqResult;
if (encoding != null && encoding.equals("deflate")) {
reqResult = Compression.decompress(reqSrc);
} else {
reqResult = reqSrc;
}
ChuniRequestWrapper requestWrapper = new ChuniRequestWrapper(request, reqResult);
ChuniResponseWrapper responseWrapper = new ChuniResponseWrapper(response);
filterChain.doFilter(requestWrapper, responseWrapper);
byte[] respSrc = responseWrapper.toByteArray();
byte[] respResult = Compression.compress(respSrc);
response.setContentLength(respResult.length);
response.setContentType("application/json; charset=utf-8");
response.addHeader("Content-Encoding", "deflate");
response.getOutputStream().write(respResult);
}
@Override
protected boolean shouldNotFilter(HttpServletRequest request) throws ServletException {
String path = request.getServletPath();
return !path.startsWith("/ChuniServlet");
}
}

View File

@@ -40,7 +40,7 @@ public class GetGameEventHandler implements BaseHandler {
Map<String, Object> resultMap = new LinkedHashMap<>();
resultMap.put("type", type);
resultMap.put("length", 0);
resultMap.put("length", gameEventList.size());
resultMap.put("gameEventList", gameEventList);
String json = mapper.write(resultMap);