# Conflicts: # sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/ServerWebExchangeUtil.java
commit
1414a2e800
@ -0,0 +1,46 @@ |
|||||||
|
package com.gitee.sop.gatewaycommon.gateway.common; |
||||||
|
|
||||||
|
import javax.servlet.ReadListener; |
||||||
|
import javax.servlet.ServletInputStream; |
||||||
|
import java.io.IOException; |
||||||
|
|
||||||
|
public class ByteArrayStreamWrapper extends ServletInputStream { |
||||||
|
|
||||||
|
private byte[] data; |
||||||
|
private int idx = 0; |
||||||
|
|
||||||
|
/** |
||||||
|
* Creates a new <code>ServletInputStreamWrapper</code> instance. |
||||||
|
* |
||||||
|
* @param data a <code>byte[]</code> value |
||||||
|
*/ |
||||||
|
public ByteArrayStreamWrapper(byte[] data) { |
||||||
|
if (data == null) |
||||||
|
data = new byte[0]; |
||||||
|
this.data = data; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int read() throws IOException { |
||||||
|
if (idx == data.length) |
||||||
|
return -1; |
||||||
|
// I have to AND the byte with 0xff in order to ensure that it is returned as an unsigned integer
|
||||||
|
// the lack of this was causing a weird bug when manually unzipping gzipped request bodies
|
||||||
|
return data[idx++] & 0xff; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isFinished() { |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isReady() { |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setReadListener(ReadListener readListener) { |
||||||
|
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,387 @@ |
|||||||
|
package com.gitee.sop.gatewaycommon.gateway.common; |
||||||
|
|
||||||
|
import org.springframework.http.HttpMethod; |
||||||
|
import org.springframework.http.server.reactive.ServerHttpRequest; |
||||||
|
|
||||||
|
import javax.servlet.AsyncContext; |
||||||
|
import javax.servlet.DispatcherType; |
||||||
|
import javax.servlet.RequestDispatcher; |
||||||
|
import javax.servlet.ServletContext; |
||||||
|
import javax.servlet.ServletException; |
||||||
|
import javax.servlet.ServletInputStream; |
||||||
|
import javax.servlet.ServletRequest; |
||||||
|
import javax.servlet.ServletResponse; |
||||||
|
import javax.servlet.http.Cookie; |
||||||
|
import javax.servlet.http.HttpServletRequest; |
||||||
|
import javax.servlet.http.HttpServletResponse; |
||||||
|
import javax.servlet.http.HttpSession; |
||||||
|
import javax.servlet.http.HttpUpgradeHandler; |
||||||
|
import javax.servlet.http.Part; |
||||||
|
import java.io.BufferedReader; |
||||||
|
import java.io.IOException; |
||||||
|
import java.io.UnsupportedEncodingException; |
||||||
|
import java.security.Principal; |
||||||
|
import java.util.Collection; |
||||||
|
import java.util.Enumeration; |
||||||
|
import java.util.Locale; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
/** |
||||||
|
* 上传文件的request |
||||||
|
* |
||||||
|
* @author tanghc |
||||||
|
*/ |
||||||
|
public class FileUploadHttpServletRequest implements HttpServletRequest { |
||||||
|
private ServerHttpRequest serverHttpRequest; |
||||||
|
private byte[] data; |
||||||
|
|
||||||
|
public FileUploadHttpServletRequest(ServerHttpRequest serverHttpRequest, byte[] data) { |
||||||
|
this.serverHttpRequest = serverHttpRequest; |
||||||
|
this.data = data; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public ServletInputStream getInputStream() throws IOException { |
||||||
|
return new ByteArrayStreamWrapper(data); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getContentLength() { |
||||||
|
return data.length; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getContentLengthLong() { |
||||||
|
return data.length; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getAuthType() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Cookie[] getCookies() { |
||||||
|
return new Cookie[0]; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public long getDateHeader(String s) { |
||||||
|
return 0; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getHeader(String s) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Enumeration<String> getHeaders(String s) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Enumeration<String> getHeaderNames() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getIntHeader(String s) { |
||||||
|
return 0; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getMethod() { |
||||||
|
return HttpMethod.POST.name(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getPathInfo() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getPathTranslated() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getContextPath() { |
||||||
|
return "/"; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getQueryString() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getRemoteUser() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isUserInRole(String s) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Principal getUserPrincipal() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getRequestedSessionId() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getRequestURI() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public StringBuffer getRequestURL() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getServletPath() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public HttpSession getSession(boolean b) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public HttpSession getSession() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String changeSessionId() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isRequestedSessionIdValid() { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isRequestedSessionIdFromCookie() { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isRequestedSessionIdFromURL() { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isRequestedSessionIdFromUrl() { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean authenticate(HttpServletResponse httpServletResponse) throws IOException, ServletException { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void login(String s, String s1) throws ServletException { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void logout() throws ServletException { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Collection<Part> getParts() throws IOException, ServletException { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Part getPart(String s) throws IOException, ServletException { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public <T extends HttpUpgradeHandler> T upgrade(Class<T> aClass) throws IOException, ServletException { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Object getAttribute(String s) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Enumeration<String> getAttributeNames() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getCharacterEncoding() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setCharacterEncoding(String s) throws UnsupportedEncodingException { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getContentType() { |
||||||
|
return serverHttpRequest.getHeaders().getContentType().toString(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getParameter(String s) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Enumeration<String> getParameterNames() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String[] getParameterValues(String s) { |
||||||
|
return new String[0]; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Map<String, String[]> getParameterMap() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getProtocol() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getScheme() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getServerName() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getServerPort() { |
||||||
|
return 0; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public BufferedReader getReader() throws IOException { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getRemoteAddr() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getRemoteHost() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void setAttribute(String s, Object o) { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void removeAttribute(String s) { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Locale getLocale() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public Enumeration<Locale> getLocales() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isSecure() { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public RequestDispatcher getRequestDispatcher(String s) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getRealPath(String s) { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getRemotePort() { |
||||||
|
return 0; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getLocalName() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public String getLocalAddr() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int getLocalPort() { |
||||||
|
return 0; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public ServletContext getServletContext() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public AsyncContext startAsync() throws IllegalStateException { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws IllegalStateException { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isAsyncStarted() { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean isAsyncSupported() { |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public AsyncContext getAsyncContext() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public DispatcherType getDispatcherType() { |
||||||
|
return null; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,20 @@ |
|||||||
|
package com.gitee.sop.gatewaycommon.gateway.common; |
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.web.server.ServerWebExchange; |
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest; |
||||||
|
import java.nio.charset.StandardCharsets; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author tanghc |
||||||
|
*/ |
||||||
|
@Slf4j |
||||||
|
public class ServletFileUploadUtil { |
||||||
|
|
||||||
|
public static HttpServletRequest getFileUploadRequest(ServerWebExchange exchange, String requestBody) { |
||||||
|
byte[] data = requestBody.getBytes(StandardCharsets.UTF_8); |
||||||
|
return new FileUploadHttpServletRequest(exchange.getRequest(), data); |
||||||
|
} |
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue