@Override public StreamSinkConduit wrap(ConduitFactory<StreamSinkConduit> factory, HttpServerExchange exchange) { if(exchange.getStatusCode() != StatusCodes.OK ) { return factory.create(); } String length = exchange.getResponseHeaders().getFirst(Headers.CONTENT_LENGTH); if (length == null) { return factory.create(); } long responseLength = Long.parseLong(length); String lastModified = exchange.getResponseHeaders().getFirst(Headers.LAST_MODIFIED); ByteRange.RangeResponseResult rangeResponse = range.getResponseResult(responseLength, exchange.getRequestHeaders().getFirst(Headers.IF_RANGE), lastModified == null ? null : DateUtils.parseDate(lastModified), exchange.getResponseHeaders().getFirst(Headers.ETAG)); if(rangeResponse != null){ long start = rangeResponse.getStart(); long end = rangeResponse.getEnd(); exchange.setStatusCode(rangeResponse.getStatusCode()); exchange.getResponseHeaders().put(Headers.CONTENT_RANGE, rangeResponse.getContentRange()); exchange.setResponseContentLength(rangeResponse.getContentLength()); if(rangeResponse.getStatusCode() == StatusCodes.REQUEST_RANGE_NOT_SATISFIABLE) { return new HeadStreamSinkConduit(factory.create(), null, true); } return new RangeStreamSinkConduit(factory.create(), start, end, responseLength); } else { return factory.create(); } } });
end = rangeResponse.getEnd(); exchange.setStatusCode(rangeResponse.getStatusCode()); exchange.getResponseHeaders().put(Headers.CONTENT_RANGE, rangeResponse.getContentRange()); long length = rangeResponse.getContentLength(); exchange.setResponseContentLength(length);
end = rangeResponse.getEnd(); resp.setStatus(rangeResponse.getStatusCode()); resp.setHeader(Headers.CONTENT_RANGE_STRING, rangeResponse.getContentRange()); long length = rangeResponse.getContentLength(); if(length > Integer.MAX_VALUE) {
end = rangeResponse.getEnd(); exchange.setStatusCode(rangeResponse.getStatusCode()); exchange.getResponseHeaders().put(Headers.CONTENT_RANGE, rangeResponse.getContentRange()); long length = rangeResponse.getContentLength(); exchange.setResponseContentLength(length);
end = rangeResponse.getEnd(); exchange.setStatusCode(rangeResponse.getStatusCode()); exchange.getResponseHeaders().put(Headers.CONTENT_RANGE, rangeResponse.getContentRange()); long length = rangeResponse.getContentLength(); exchange.setResponseContentLength(length);
end = rangeResponse.getEnd(); resp.setStatus(rangeResponse.getStatusCode()); resp.setHeader(Headers.CONTENT_RANGE_STRING, rangeResponse.getContentRange()); long length = rangeResponse.getContentLength(); if (length > Integer.MAX_VALUE) {
@Override public StreamSinkConduit wrap(ConduitFactory<StreamSinkConduit> factory, HttpServerExchange exchange) { if(exchange.getStatusCode() != StatusCodes.OK ) { return factory.create(); } String length = exchange.getResponseHeaders().getFirst(Headers.CONTENT_LENGTH); if (length == null) { return factory.create(); } long responseLength = Long.parseLong(length); String lastModified = exchange.getResponseHeaders().getFirst(Headers.LAST_MODIFIED); ByteRange.RangeResponseResult rangeResponse = range.getResponseResult(responseLength, exchange.getRequestHeaders().getFirst(Headers.IF_RANGE), lastModified == null ? null : DateUtils.parseDate(lastModified), exchange.getResponseHeaders().getFirst(Headers.ETAG)); if(rangeResponse != null){ long start = rangeResponse.getStart(); long end = rangeResponse.getEnd(); exchange.setStatusCode(rangeResponse.getStatusCode()); exchange.getResponseHeaders().put(Headers.CONTENT_RANGE, rangeResponse.getContentRange()); exchange.setResponseContentLength(rangeResponse.getContentLength()); if(rangeResponse.getStatusCode() == StatusCodes.REQUEST_RANGE_NOT_SATISFIABLE) { return new HeadStreamSinkConduit(factory.create(), null, true); } return new RangeStreamSinkConduit(factory.create(), start, end, responseLength); } else { return factory.create(); } } });
@Override public StreamSinkConduit wrap(ConduitFactory<StreamSinkConduit> factory, HttpServerExchange exchange) { if(exchange.getStatusCode() != StatusCodes.OK ) { return factory.create(); } String length = exchange.getResponseHeaders().getFirst(Headers.CONTENT_LENGTH); if (length == null) { return factory.create(); } long responseLength = Long.parseLong(length); String lastModified = exchange.getResponseHeaders().getFirst(Headers.LAST_MODIFIED); ByteRange.RangeResponseResult rangeResponse = range.getResponseResult(responseLength, exchange.getRequestHeaders().getFirst(Headers.IF_RANGE), lastModified == null ? null : DateUtils.parseDate(lastModified), exchange.getResponseHeaders().getFirst(Headers.ETAG)); if(rangeResponse != null){ long start = rangeResponse.getStart(); long end = rangeResponse.getEnd(); exchange.setStatusCode(rangeResponse.getStatusCode()); exchange.getResponseHeaders().put(Headers.CONTENT_RANGE, rangeResponse.getContentRange()); exchange.setResponseContentLength(rangeResponse.getContentLength()); if(rangeResponse.getStatusCode() == StatusCodes.REQUEST_RANGE_NOT_SATISFIABLE) { return new HeadStreamSinkConduit(factory.create(), null, true); } return new RangeStreamSinkConduit(factory.create(), start, end, responseLength); } else { return factory.create(); } } });