private static MetaData.Request toRequestMetadata(ServiceRequestContext ctx, AggregatedHttpMessage aReq) { // Construct the HttpURI final StringBuilder uriBuf = new StringBuilder(); final HttpHeaders aHeaders = aReq.headers(); uriBuf.append(ctx.sessionProtocol().isTls() ? "https" : "http"); uriBuf.append("://"); uriBuf.append(aHeaders.authority()); uriBuf.append(aHeaders.path()); final HttpURI uri = new HttpURI(uriBuf.toString()); uri.setPath(ctx.mappedPath()); // Convert HttpHeaders to HttpFields final HttpFields jHeaders = new HttpFields(aHeaders.size()); aHeaders.forEach(e -> { final AsciiString key = e.getKey(); if (!key.isEmpty() && key.byteAt(0) != ':') { jHeaders.add(key.toString(), e.getValue()); } }); return new MetaData.Request( aHeaders.method().name(), uri, HttpVersion.HTTP_1_1, jHeaders, aReq.content().length()); }
private static HttpHeaders createHeaders(HttpServletRequest request) { HttpFields fields = ((Request) request).getMetaData().getFields(); return new HttpHeaders(new JettyHeadersAdapter(fields)); } }
public InternalJettyServletRequest( String method, HttpURI uri, String body, Cookie[] cookies, String contentType, String encoding, InternalJettyServletResponse res, RequestData requestData ) throws UnsupportedEncodingException { super( null, null ); this.input = new Input( body ); this.inputReader = new BufferedReader( new StringReader( body ) ); this.contentType = contentType; this.cookies = cookies; this.method = method; this.response = res; this.requestData = requestData; this.headers = new HashMap<>(); setCharacterEncoding( encoding ); setDispatcherType( DispatcherType.REQUEST ); MetaData.Request request = new MetaData.Request( new HttpFields() ); request.setMethod( method ); request.setURI( uri ); setMetaData( request ); }
boolean assumed_content_request = request!=null && Boolean.TRUE.equals(__assumedContentMethods.get(request.getMethod())); boolean assumed_content = assumed_content_request || content_type || chunked_hint; boolean nocontent_request = request!=null && content_length<=0 && !assumed_content; _persistent = http11 || (request!=null && HttpMethod.CONNECT.is(request.getMethod()));
boolean assumed_content_request = request!=null && Boolean.TRUE.equals(__assumedContentMethods.get(request.getMethod())); boolean assumed_content = assumed_content_request || content_type || chunked_hint; boolean nocontent_request = request!=null && content_length<=0 && !assumed_content; _persistent = http11 || (request!=null && HttpMethod.CONNECT.is(request.getMethod()));
switch (_metadata.getHttpVersion()) persistent = HttpMethod.CONNECT.is(_metadata.getMethod()); if (persistent) getResponse().getHttpFields().add(HttpHeader.CONNECTION, HttpHeaderValue.KEEP_ALIVE); persistent = HttpMethod.CONNECT.is(_metadata.getMethod()); if (!persistent) getResponse().getHttpFields().add(HttpHeader.CONNECTION, HttpHeaderValue.CLOSE); if (HttpMethod.PRI.is(_metadata.getMethod()) && "*".equals(_metadata.getURI().toString()) && _fields.size() == 0 && upgrade()) throw new IllegalStateException("unsupported version " + _metadata.getHttpVersion());
_persistent=info.getVersion().ordinal() > HttpVersion.HTTP_1_0.ordinal(); if (!_persistent && HttpMethod.CONNECT.is(info.getMethod())) _persistent=true; if (info.getVersion()==HttpVersion.HTTP_0_9) throw new BadMessageException(500,"HTTP/0.9 not supported"); boolean expect100 = info.getFields().contains(HttpHeader.EXPECT, HttpHeaderValue.CONTINUE.asString());
switch (_metadata.getVersion()) persistent = HttpMethod.CONNECT.is(_metadata.getMethod()); if (persistent) getResponse().getHttpFields().add(HttpHeader.CONNECTION, HttpHeaderValue.KEEP_ALIVE); persistent = HttpMethod.CONNECT.is(_metadata.getMethod()); if (!persistent) getResponse().getHttpFields().add(HttpHeader.CONNECTION, HttpHeaderValue.CLOSE); if (HttpMethod.PRI.is(_metadata.getMethod()) && "*".equals(_metadata.getURI().toString()) && _fields.size()==0 && upgrade()) throw new IllegalStateException("unsupported version "+_metadata.getVersion());
String scheme=request.getURI().getScheme(); encode(buffer,new HttpField(HttpHeader.C_SCHEME,scheme==null?HttpScheme.HTTP.asString():scheme)); encode(buffer,new HttpField(HttpHeader.C_METHOD,request.getMethod())); encode(buffer,new HttpField(HttpHeader.C_AUTHORITY,request.getURI().getAuthority())); encode(buffer,new HttpField(HttpHeader.C_PATH,request.getURI().getPathQuery()));
HttpFields fields = request.getFields(); String authority = request.getURI().getAuthority(); if (authority != null) stream.getId(), Integer.toHexString(stream.getSession().hashCode()), _delayedUntilContent, System.lineSeparator(), request.getMethod(), request.getURI(), request.getHttpVersion(), System.lineSeparator(), fields);
MetaData.Request push = new MetaData.Request(_method,uri,_request.getHttpVersion(),_fields);
if (_path==null) throw new HpackException.StreamException("No Path"); return new MetaData.Request(_method,_scheme,_authority,_path,HttpVersion.HTTP_2,fields,_contentLength);
MetaData.Request push = new MetaData.Request(_method,uri,_request.getHttpVersion(),_fields);
requestFields.put("User-Agent", client.getClass().getName() + "/" + Jetty.VERSION); MetaData.Request request = new MetaData.Request("GET", new HttpURI("https://" + host + ":" + port + "/"), HttpVersion.HTTP_2, requestFields);
String path = relativize(request.getPath()); HttpURI uri = HttpURI.createHttpURI(request.getScheme(), request.getHost(), request.getPort(), path, null, request.getQuery(), null); MetaData.Request metaData = new MetaData.Request(request.getMethod(), uri, HttpVersion.HTTP_2, request.getHeaders()); Supplier<HttpFields> trailers = request.getTrailers(); metaData.setTrailerSupplier(trailers); HeadersFrame headersFrame = new HeadersFrame(metaData, null, trailers == null && !content.hasContent()); HttpChannelOverHTTP2 channel = getHttpChannel();
setMethod(request.getMethod()); HttpURI uri = request.getURI(); _originalURI = uri.isAbsolute()&&request.getHttpVersion()!=HttpVersion.HTTP_2?uri.toString():uri.getPathQuery();
public Runnable onPushRequest(MetaData.Request request) { try { onRequest(request); getRequest().setAttribute("org.eclipse.jetty.pushed", Boolean.TRUE); onContentComplete(); onRequestComplete(); if (LOG.isDebugEnabled()) { Stream stream = getStream(); LOG.debug("HTTP2 PUSH Request #{}/{}:{}{} {} {}{}{}", stream.getId(), Integer.toHexString(stream.getSession().hashCode()), System.lineSeparator(), request.getMethod(), request.getURI(), request.getHttpVersion(), System.lineSeparator(), request.getFields()); } return this; } catch (BadMessageException x) { onBadMessage(x); return null; } catch (Throwable x) { onBadMessage(new BadMessageException(HttpStatus.INTERNAL_SERVER_ERROR_500, null, x)); return null; } }
private void extractQueryParameters() { MetaData.Request metadata = _metaData; if (metadata==null || metadata.getURI() == null || !metadata.getURI().hasQuery()) _queryParameters=NO_PARAMS; else { _queryParameters = new MultiMap<>(); if (_queryEncoding == null) metadata.getURI().decodeQueryTo(_queryParameters); else { try { metadata.getURI().decodeQueryTo(_queryParameters, _queryEncoding); } catch (UnsupportedEncodingException e) { if (LOG.isDebugEnabled()) LOG.warn(e); else LOG.warn(e.toString()); } } } }