# 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