增加Http响应包中Date头的可配置功能

This commit is contained in:
Redkale
2018-04-19 14:43:47 +08:00
parent a4ae6dd9c4
commit 5c9279cca4
3 changed files with 14 additions and 4 deletions

View File

@@ -132,6 +132,8 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
private final boolean autoOptions;
private final boolean autoDate;
private final HttpCookie defcookie;
private final List<HttpRender> renders;
@@ -147,7 +149,7 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
public HttpResponse(HttpContext context, HttpRequest request,
String plainContentType, String jsonContentType,
String[][] defaultAddHeaders, String[][] defaultSetHeaders,
HttpCookie defcookie, boolean autoOptions, List< HttpRender> renders) {
HttpCookie defcookie, boolean autoOptions, boolean autoDate, List< HttpRender> renders) {
super(context, request);
this.plainContentType = plainContentType == null || plainContentType.isEmpty() ? "text/plain; charset=utf-8" : plainContentType;
this.jsonContentType = jsonContentType == null || jsonContentType.isEmpty() ? "application/json; charset=utf-8" : jsonContentType;
@@ -157,6 +159,7 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
this.defaultSetHeaders = defaultSetHeaders;
this.defcookie = defcookie;
this.autoOptions = autoOptions;
this.autoDate = autoDate;
this.renders = renders;
this.hasRender = renders != null && !renders.isEmpty();
this.onlyoneHttpRender = renders != null && renders.size() == 1 ? renders.get(0) : null;
@@ -870,7 +873,7 @@ public class HttpResponse extends Response<HttpContext, HttpRequest> {
buffer.put(("Content-Type: " + (this.contentType == null ? this.plainContentType : this.contentType) + "\r\n").getBytes());
}
buffer.put(serverNameBytes);
buffer.put(("Date: " + RFC_1123_DATE_TIME.format(java.time.ZonedDateTime.now(ZONE_GMT)) + "\r\n").getBytes());
if (autoDate) buffer.put(("Date: " + RFC_1123_DATE_TIME.format(java.time.ZonedDateTime.now(ZONE_GMT)) + "\r\n").getBytes());
if (!this.request.isKeepAlive()) buffer.put(connectCloseBytes);
if (this.defaultAddHeaders != null) {

View File

@@ -295,6 +295,7 @@ public class HttpServer extends Server<String, HttpContext, HttpRequest, HttpRes
final List<String[]> defaultAddHeaders = new ArrayList<>();
final List<String[]> defaultSetHeaders = new ArrayList<>();
boolean autoOptions = false;
boolean autoDate = true;
String plainContentType = null;
String jsonContentType = null;
HttpCookie defaultCookie = null;
@@ -366,6 +367,9 @@ public class HttpServer extends Server<String, HttpContext, HttpRequest, HttpRes
}
AnyValue options = resps == null ? null : resps.getAnyValue("options");
autoOptions = options != null && options.getBoolValue("auto", false);
AnyValue dates = resps == null ? null : resps.getAnyValue("date");
autoDate = dates != null && dates.getBoolValue("auto", true);
}
}
@@ -374,6 +378,7 @@ public class HttpServer extends Server<String, HttpContext, HttpRequest, HttpRes
final String[][] addHeaders = defaultAddHeaders.isEmpty() ? null : defaultAddHeaders.toArray(new String[defaultAddHeaders.size()][]);
final String[][] setHeaders = defaultSetHeaders.isEmpty() ? null : defaultSetHeaders.toArray(new String[defaultSetHeaders.size()][]);
final boolean options = autoOptions;
final boolean adate = autoDate;
final HttpCookie defCookie = defaultCookie;
final String addrHeader = remoteAddrHeader;
@@ -384,7 +389,7 @@ public class HttpServer extends Server<String, HttpContext, HttpRequest, HttpRes
rcapacity, bufferPool, responsePool, this.maxbody, this.charset, this.address, this.resourceFactory,
this.prepare, this.aliveTimeoutSeconds, this.readTimeoutSeconds, this.writeTimeoutSeconds);
responsePool.setCreator((Object... params) -> new HttpResponse(httpcontext, new HttpRequest(httpcontext, addrHeader),
plainType, jsonType, addHeaders, setHeaders, defCookie, options, ((HttpPrepareServlet) prepare).renders));
plainType, jsonType, addHeaders, setHeaders, defCookie, options, adate, ((HttpPrepareServlet) prepare).renders));
return httpcontext;
}