private Headers createRequestHeaders(Headers.Header scheme, Headers.Header host, Headers.Header uri, String pushResourcePath) { final Headers requestHeaders = new Headers(); requestHeaders.put(HTTPSPDYHeader.METHOD.name(version), "GET"); requestHeaders.put(HTTPSPDYHeader.VERSION.name(version), "HTTP/1.1"); requestHeaders.put(scheme); requestHeaders.put(host); requestHeaders.put(HTTPSPDYHeader.URI.name(version), pushResourcePath); String referrer = scheme.value() + "://" + host.value() + uri.value(); requestHeaders.put("referer", referrer); // Remember support for gzip encoding requestHeaders.put(headers.get("accept-encoding")); requestHeaders.put("x-spdy-push", "true"); return requestHeaders; }
private Headers createPushHeaders(Headers.Header scheme, Headers.Header host, String pushResourcePath) { final Headers pushHeaders = new Headers(); if (version == SPDY.V2) pushHeaders.put(HTTPSPDYHeader.URI.name(version), scheme.value() + "://" + host.value() + pushResourcePath); else { pushHeaders.put(HTTPSPDYHeader.URI.name(version), pushResourcePath); pushHeaders.put(scheme); pushHeaders.put(host); } pushHeaders.put(HTTPSPDYHeader.STATUS.name(version), "200"); pushHeaders.put(HTTPSPDYHeader.VERSION.name(version), "HTTP/1.1"); return pushHeaders; }
@Override protected void parsedHeader(Buffer name, Buffer value) throws IOException { String headerName = name.toString("UTF-8").toLowerCase(Locale.ENGLISH); String headerValue = value.toString("UTF-8"); switch (headerName) { case "host": headers.put(HTTPSPDYHeader.HOST.name(version), headerValue); break; default: headers.put(headerName, headerValue); break; } }
@Override protected void startRequest(Buffer method, Buffer uri, Buffer httpVersion) throws IOException { SPDYServerConnector connector = (SPDYServerConnector)getConnector(); String scheme = connector.getSslContextFactory() != null ? "https" : "http"; headers.put(HTTPSPDYHeader.SCHEME.name(version), scheme); headers.put(HTTPSPDYHeader.METHOD.name(version), method.toString("UTF-8")); headers.put(HTTPSPDYHeader.URI.name(version), uri.toString("UTF-8")); headers.put(HTTPSPDYHeader.VERSION.name(version), httpVersion.toString("UTF-8")); }
@Override public void onData(final Stream stream, final DataInfo dataInfo) { logger.debug("S -> P {} on {}", dataInfo, stream); if (replyInfo != null) { if (dataInfo.isClose()) replyInfo.getHeaders().put("content-length", String.valueOf(dataInfo.available())); reply(stream); } data(stream, dataInfo); }
private void respond(Stream stream, int status) { if (stream.isUnidirectional()) { stream.getSession().rst(new RstInfo(stream.getId(), StreamStatus.INTERNAL_ERROR)); } else { Headers headers = new Headers(); headers.put(HTTPSPDYHeader.STATUS.name(version), String.valueOf(status)); headers.put(HTTPSPDYHeader.VERSION.name(version), "HTTP/1.1"); stream.reply(new ReplyInfo(headers, true)); } }
headers.put(HTTPSPDYHeader.VERSION.name(ServerHTTPSPDYAsyncConnection.this.version), version); StringBuilder status = new StringBuilder().append(_status); if (_reason != null) status.append(" ").append(_reason.toString("UTF-8")); headers.put(HTTPSPDYHeader.STATUS.name(ServerHTTPSPDYAsyncConnection.this.version), status.toString()); logger.debug("HTTP < {} {}", version, status); String name = field.getName().toLowerCase(Locale.ENGLISH); String value = field.getValue(); headers.put(name, value); logger.debug("HTTP < {}: {}", name, value);
headers.put("host", host.value());