Class HttpServerRequest

java.lang.Object
io.vertx.mutiny.core.http.HttpRequestHead
io.vertx.mutiny.core.http.HttpServerRequest
All Implemented Interfaces:
MutinyDelegate, ReadStream<io.vertx.core.buffer.Buffer>, StreamBase

public class HttpServerRequest extends HttpRequestHead implements ReadStream<io.vertx.core.buffer.Buffer>, MutinyDelegate
Represents a server-side HTTP request.

Instances are created for each request and passed to the user via a handler.

Each instance of this class is associated with a corresponding HttpServerResponse instance via response().

It implements ReadStream so it can be used with Pipe to pipe data with flow control.

NOTE: This class has been automatically generated from the original non Mutiny-ified interface.

Author:
Tim Fox
See Also:
  • HttpServerRequest
  • Field Details

  • Constructor Details

    • HttpServerRequest

      public HttpServerRequest(io.vertx.core.http.HttpServerRequest delegate)
      Create a new instance of HttpServerRequest delegating to the given (non-null) instance of HttpServerRequest.
    • HttpServerRequest

      public HttpServerRequest(Object delegate)
  • Method Details

    • getDelegate

      public io.vertx.core.http.HttpServerRequest getDelegate()
      Get the delegate instance.

      This method returns the instance on which this shim is delegating the calls. And so, give you access to the bare API.

      Specified by:
      getDelegate in interface MutinyDelegate
      Specified by:
      getDelegate in interface ReadStream<io.vertx.core.buffer.Buffer>
      Specified by:
      getDelegate in interface StreamBase
      Overrides:
      getDelegate in class HttpRequestHead
      Returns:
      the delegate instance
    • body

      @CheckReturnValue public io.smallrye.mutiny.Uni<io.vertx.core.buffer.Buffer> body()
      Convenience method for receiving the entire request body in one piece.

      This saves you having to manually set a dataHandler and an endHandler and append the chunks of the body until the whole body received. Don't use this if your request body is large - you could potentially run out of RAM.

      Unlike the bare Vert.x variant, this method returns a Uni. The uni emits the result of the operation as item. If the operation fails, the uni emits the failure.

      Don't forget to subscribe on it to trigger the operation.

      Returns:
      A Uni representing the asynchronous result of this operation.
      See Also:
      • HttpServerRequest.body()
    • bodyAndAwait

      public io.vertx.core.buffer.Buffer bodyAndAwait()
      Convenience method for receiving the entire request body in one piece.

      This saves you having to manually set a dataHandler and an endHandler and append the chunks of the body until the whole body received. Don't use this if your request body is large - you could potentially run out of RAM.

      Unlike the bare Vert.x variant, this method returns a Buffer. This method awaits indefinitely for the completion of the underlying asynchronous operation. If the operation completes successfully, the result is returned, otherwise the failure is thrown (potentially wrapped in a RuntimeException).

      Returns:
      The operation result
      See Also:
      • HttpServerRequest.body()
    • bodyAndForget

      public HttpServerRequest bodyAndForget()
      Convenience method for receiving the entire request body in one piece.

      This saves you having to manually set a dataHandler and an endHandler and append the chunks of the body until the whole body received. Don't use this if your request body is large - you could potentially run out of RAM.

      Unlike the bare Vert.x variant, this method ignores the Buffer result or any failure.

      Returns:
      The current instance to chain operations if needed.
      See Also:
      • HttpServerRequest.body()
    • end

      @CheckReturnValue public io.smallrye.mutiny.Uni<Void> end()
      Returns a uni signaling when the request has been fully received successfully or failed.

      Unlike the bare Vert.x variant, this method returns a Uni. The uni emits the result of the operation as item. If the operation fails, the uni emits the failure.

      Don't forget to subscribe on it to trigger the operation.

      Returns:
      A Uni representing the asynchronous result of this operation.
      See Also:
      • HttpServerRequest.end()
    • endAndAwait

      public void endAndAwait()
      Returns a underlying uni signaling when the request has been fully received successfully or failed.

      Unlike the bare Vert.x variant, this method returns a Void. This method awaits indefinitely for the completion of the underlying asynchronous operation. If the operation completes successfully, the result is returned, otherwise the failure is thrown (potentially wrapped in a RuntimeException).

      See Also:
      • HttpServerRequest.end()
    • endAndForget

      public HttpServerRequest endAndForget()
      Returns a underlying uni signaling when the request has been fully received successfully or failed.

      Unlike the bare Vert.x variant, this method ignores the Void result or any failure.

      Returns:
      The current instance to chain operations if needed.
      See Also:
      • HttpServerRequest.end()
    • toNetSocket

      @CheckReturnValue public io.smallrye.mutiny.Uni<NetSocket> toNetSocket()
      Returns:
      A Uni representing the asynchronous result of this operation.
      See Also:
      • HttpServerRequest.toNetSocket()
    • toNetSocketAndAwait

      public NetSocket toNetSocketAndAwait()
      Returns:
      The operation result
      See Also:
      • HttpServerRequest.toNetSocket()
    • toNetSocketAndForget

      public HttpServerRequest toNetSocketAndForget()
      Returns:
      The current instance to chain operations if needed.
      See Also:
      • HttpServerRequest.toNetSocket()
    • toWebSocket

      @CheckReturnValue public io.smallrye.mutiny.Uni<ServerWebSocket> toWebSocket()
      Upgrade the connection of the current request to a WebSocket.

      This is an alternative way of handling WebSockets and can only be used if no WebSocket handler is set on the HttpServer, and can only be used during the upgrade request during the WebSocket handshake.

      Both #handler(Handler) and #endHandler(Handler) will be set to get the full body of the request that is necessary to perform the WebSocket handshake.

      If you need to do an asynchronous upgrade, i.e not performed immediately in your request handler, you need to pause() the request in order to not lose HTTP events necessary to upgrade the request.

      Unlike the bare Vert.x variant, this method returns a Uni. The uni emits the result of the operation as item. If the operation fails, the uni emits the failure.

      Don't forget to subscribe on it to trigger the operation.

      Returns:
      A Uni representing the asynchronous result of this operation.
      See Also:
      • HttpServerRequest.toWebSocket()
    • toWebSocketAndAwait

      public ServerWebSocket toWebSocketAndAwait()
      Upgrade the connection of the current request to a WebSocket.

      This is an alternative way of handling WebSockets and can only be used if no WebSocket handler is set on the HttpServer, and can only be used during the upgrade request during the WebSocket handshake.

      Both #handler(Handler) and #endHandler(Handler) will be set to get the full body of the request that is necessary to perform the WebSocket handshake.

      If you need to do an asynchronous upgrade, i.e not performed immediately in your request handler, you need to pause() the request in order to not lose HTTP events necessary to upgrade the request.

      Unlike the bare Vert.x variant, this method returns a ServerWebSocket. This method awaits indefinitely for the completion of the underlying asynchronous operation. If the operation completes successfully, the result is returned, otherwise the failure is thrown (potentially wrapped in a RuntimeException).

      Returns:
      The operation result
      See Also:
      • HttpServerRequest.toWebSocket()
    • toWebSocketAndForget

      public HttpServerRequest toWebSocketAndForget()
      Upgrade the connection of the current request to a WebSocket.

      This is an alternative way of handling WebSockets and can only be used if no WebSocket handler is set on the HttpServer, and can only be used during the upgrade request during the WebSocket handshake.

      Both #handler(Handler) and #endHandler(Handler) will be set to get the full body of the request that is necessary to perform the WebSocket handshake.

      If you need to do an asynchronous upgrade, i.e not performed immediately in your request handler, you need to pause() the request in order to not lose HTTP events necessary to upgrade the request.

      Unlike the bare Vert.x variant, this method ignores the ServerWebSocket result or any failure.

      Returns:
      The current instance to chain operations if needed.
      See Also:
      • HttpServerRequest.toWebSocket()
    • pipeTo

      @CheckReturnValue public io.smallrye.mutiny.Uni<Void> pipeTo(WriteStream<io.vertx.core.buffer.Buffer> arg0)
      Pipe this ReadStream to the WriteStream.

      Elements emitted by this stream will be written to the write stream until this stream ends or fails.

      Unlike the bare Vert.x variant, this method returns a Uni. The uni emits the result of the operation as item. If the operation fails, the uni emits the failure.

      Don't forget to subscribe on it to trigger the operation.

      Specified by:
      pipeTo in interface ReadStream<io.vertx.core.buffer.Buffer>
      Parameters:
      dst - the destination write stream
      Returns:
      A Uni representing the asynchronous result of this operation.
      See Also:
      • io.vertx.core.http.HttpServerRequest#pipeTo(WriteStream)
    • pipeToAndAwait

      public void pipeToAndAwait(WriteStream<io.vertx.core.buffer.Buffer> arg0)
      Pipe this ReadStream to the WriteStream.

      Elements emitted by this stream will be written to the write stream until this stream ends or fails.

      Unlike the bare Vert.x variant, this method returns a Void. This method awaits indefinitely for the completion of the underlying asynchronous operation. If the operation completes successfully, the result is returned, otherwise the failure is thrown (potentially wrapped in a RuntimeException).

      Parameters:
      dst - the destination write stream
      See Also:
      • io.vertx.core.http.HttpServerRequest#pipeTo(WriteStream)
    • pipeToAndForget

      public HttpServerRequest pipeToAndForget(WriteStream<io.vertx.core.buffer.Buffer> arg0)
      Pipe this ReadStream to the WriteStream.

      Elements emitted by this stream will be written to the write stream until this stream ends or fails.

      Unlike the bare Vert.x variant, this method ignores the Void result or any failure.

      Parameters:
      dst - the destination write stream
      Returns:
      The current instance to chain operations if needed.
      See Also:
      • io.vertx.core.http.HttpServerRequest#pipeTo(WriteStream)
    • exceptionHandler

      public HttpServerRequest exceptionHandler(Consumer<Throwable> handler)
      Description copied from interface: ReadStream
      Set an exception handler on the read stream.
      Specified by:
      exceptionHandler in interface ReadStream<io.vertx.core.buffer.Buffer>
      Specified by:
      exceptionHandler in interface StreamBase
      Parameters:
      handler - the exception handler. Can be null.
      Returns:
      a reference to this, so the API can be used fluently
    • handler

      public HttpServerRequest handler(Consumer<io.vertx.core.buffer.Buffer> handler)
      Description copied from interface: ReadStream
      Set a data handler. As data is read, the handler will be called with the data.
      Specified by:
      handler in interface ReadStream<io.vertx.core.buffer.Buffer>
      Returns:
      a reference to this, so the API can be used fluently
    • pause

      public HttpServerRequest pause()
      Description copied from interface: ReadStream
      Pause the ReadStream, it sets the buffer in fetch mode and clears the actual demand.

      While it's paused, no data will be sent to the data handler.

      Specified by:
      pause in interface ReadStream<io.vertx.core.buffer.Buffer>
      Returns:
      a reference to this, so the API can be used fluently
    • resume

      public HttpServerRequest resume()
      Description copied from interface: ReadStream
      Resume reading, and sets the buffer in flowing mode.

      If the ReadStream has been paused, reading will recommence on it.

      Specified by:
      resume in interface ReadStream<io.vertx.core.buffer.Buffer>
      Returns:
      a reference to this, so the API can be used fluently
    • fetch

      public HttpServerRequest fetch(long amount)
      Description copied from interface: ReadStream
      Fetch the specified amount of elements. If the ReadStream has been paused, reading will recommence with the specified amount of items, otherwise the specified amount will be added to the current stream demand.
      Specified by:
      fetch in interface ReadStream<io.vertx.core.buffer.Buffer>
      Returns:
      a reference to this, so the API can be used fluently
    • endHandler

      public HttpServerRequest endHandler(Runnable endHandler)
      Description copied from interface: ReadStream
      Set an end handler. Once the stream has ended, and there is no more data to be read, this handler will be called.
      Specified by:
      endHandler in interface ReadStream<io.vertx.core.buffer.Buffer>
      Returns:
      a reference to this, so the API can be used fluently
    • version

      public io.vertx.core.http.HttpVersion version()
      Returns:
      the HTTP version of the request
    • method

      public io.vertx.core.http.HttpMethod method()
      Overrides:
      method in class HttpRequestHead
      Returns:
      the HTTP method for the request.
    • isSSL

      public boolean isSSL()
      Returns:
      true if this NetSocket is encrypted via SSL/TLS
    • scheme

      public String scheme()
      Returns:
      the scheme of the request. Can be null.
    • authority

      public io.vertx.core.net.HostAndPort authority()
      Returns:
      the request authority.
      • HTTP/2: the :authority pseudo header is returned if present, otherwise the Host header value is returned.
      • HTTP/1.x: the Host header is returned
      • or null when no such header is present
      When the authority string does not carry a port, the HostAndPort.port() returns -1 to indicate the scheme port is prevalent.
    • authority

      public io.vertx.core.net.HostAndPort authority(boolean real)
      Parameters:
      real - whether to return the value of the real HTTP/2 :authority header, or the computed one.
      Returns:
      the authority, either computed or real. May be null when real is true.
    • bytesRead

      public long bytesRead()
      Returns:
      the total number of bytes read for the body of the request.
    • response

      public HttpServerResponse response()
      Returns:
      the response. Each instance of this class has an HttpServerResponse instance attached to it. This is used to send the response back to the client.
    • setParamsCharset

      public HttpServerRequest setParamsCharset(String charset)
      Override the charset to use for decoding the query parameter map, when none is set, UTF8 is used.
      Parameters:
      charset - the charset to use for decoding query params
      Returns:
      a reference to this, so the API can be used fluently
    • getParamsCharset

      public String getParamsCharset()
      Returns:
      the charset used for decoding query parameters
    • params

      public io.vertx.core.MultiMap params()
      Returns:
      the query parameters in the request
    • params

      public io.vertx.core.MultiMap params(boolean semicolonIsNormalChar)
      Parameters:
      semicolonIsNormalChar - whether semicolon is treated as a normal character or a query parameter separator
      Returns:
      the query parameters in the request
    • getParam

      public String getParam(String paramName)
      Return the first param value with the specified name
      Parameters:
      paramName - the param name
      Returns:
      the param value. Can be null.
    • getParam

      public String getParam(String paramName, String defaultValue)
      Return the first param value with the specified name or defaultValue when the query param is not present
      Parameters:
      paramName - the param name
      defaultValue - the default value, must be non-null
      Returns:
      the param value or defaultValue when not present
    • remoteAddress

      public io.vertx.core.net.SocketAddress remoteAddress()
      Returns:
      the remote address for this connection, possibly null (e.g a server bound on a domain socket). If useProxyProtocol is set to true, the address returned will be of the actual connecting client.
    • localAddress

      public io.vertx.core.net.SocketAddress localAddress()
      Returns:
      the local address for this connection, possibly null (e.g a server bound on a domain socket) If useProxyProtocol is set to true, the address returned will be of the proxy.
    • sslSession

      public SSLSession sslSession()
      Returns:
      SSLSession associated with the underlying socket. Returns null if connection is not SSL.
      See Also:
    • absoluteURI

      public String absoluteURI()
      Returns:
      the absolute URI corresponding to the HTTP request
    • bodyHandler

      public HttpServerRequest bodyHandler(Consumer<io.vertx.core.buffer.Buffer> bodyHandler)
      Convenience method for receiving the entire request body in one piece.

      This saves the user having to manually setting a data and end handler and append the chunks of the body until the whole body received. Don't use this if your request body is large - you could potentially run out of RAM.

      Parameters:
      bodyHandler - This handler will be called after all the body has been received. Can be null.
    • setExpectMultipart

      public HttpServerRequest setExpectMultipart(boolean expect)
      Call this with true if you are expecting a multi-part body to be submitted in the request. This must be called before the body of the request has been received
      Parameters:
      expect - true - if you are expecting a multi-part body
      Returns:
      a reference to this, so the API can be used fluently
    • isExpectMultipart

      public boolean isExpectMultipart()
      Returns:
      true if we are expecting a multi-part body for this request. See setExpectMultipart(boolean).
    • uploadHandler

      public HttpServerRequest uploadHandler(Consumer<HttpServerFileUpload> uploadHandler)
      Set an upload handler. The handler will get notified once a new file upload was received to allow you to deal with the file upload.
      Returns:
      a reference to this, so the API can be used fluently
    • formAttributes

      public io.vertx.core.MultiMap formAttributes()
      Returns a map of all form attributes in the request.

      Be aware that the attributes will only be available after the whole body has been received, i.e. after the request end handler has been called.

      setExpectMultipart(boolean) must be called first before trying to get the form attributes.

      Returns:
      the form attributes
    • getFormAttribute

      public String getFormAttribute(String attributeName)
      Return the first form attribute value with the specified name
      Parameters:
      attributeName - the attribute name
      Returns:
      the attribute value. Can be null.
    • streamId

      public long streamId()
      Returns:
      the id of the stream of this request, -1 when it is not yet determined, i.e the request has not been yet sent or it is not supported HTTP/1.x
    • canUpgradeToWebSocket

      public boolean canUpgradeToWebSocket()
      Returns:
      whether this request can be upgraded to a WebSocket, implying it uses HTTP/1.x and presents the correct characteristics for a proper upgrade.
    • isEnded

      public boolean isEnded()
      Has the request ended? I.e. has the entire request, including the body been read?
      Returns:
      true if ended
    • customFrameHandler

      public HttpServerRequest customFrameHandler(Consumer<io.vertx.core.http.HttpFrame> handler)
      Set a custom frame handler. The handler will get notified when the http stream receives an custom HTTP/2 frame. HTTP/2 permits extension of the protocol.
      Returns:
      a reference to this, so the API can be used fluently
    • connection

      public HttpConnection connection()
      Returns:
      the HttpConnection associated with this request
    • streamPriority

      public io.vertx.core.http.StreamPriority streamPriority()
      Returns:
      the priority of the associated HTTP/2 stream for HTTP/2 otherwise null
    • streamPriorityHandler

      public HttpServerRequest streamPriorityHandler(Consumer<io.vertx.core.http.StreamPriority> handler)
      Set an handler for stream priority changes

      This is not implemented for HTTP/1.x.

      Parameters:
      handler - the handler to be called when stream priority changes
    • getCookie

      public io.vertx.core.http.Cookie getCookie(String name)
      Get the cookie with the specified name. NOTE: this will return just the 1st Cookie that matches the given name, to get all cookies for this name see: cookies(String)
      Parameters:
      name - the cookie name
      Returns:
      the cookie or null if not found.
    • getCookie

      public io.vertx.core.http.Cookie getCookie(String name, String domain, String path)
      Get the cookie with the specified <name, domain, path>.
      Parameters:
      name - the cookie name
      domain - the cookie domain
      path - the cookie path
      Returns:
      the cookie or null if not found.
    • cookieCount

      public int cookieCount()
      Returns:
      the number of cookies in the cookie jar.
    • cookies

      public Set<io.vertx.core.http.Cookie> cookies(String name)
      Returns a read only set of parsed cookies that match the given name, or an empty set. Several cookies may share the same name but have different keys. A cookie is unique by its <name, domain, path> tuple. The set entries are references to the request original set. This means that performing property changes in the cookie objects will affect the original object too. NOTE: the returned Set is read-only. This means any attempt to modify (add or remove to the set), will throw UnsupportedOperationException.
      Parameters:
      name - the name to be matches
      Returns:
      the matching cookies or empty set
    • cookies

      public Set<io.vertx.core.http.Cookie> cookies()
      Returns a modifiable set of parsed cookies from the COOKIE header. Several cookies may share the same name but have different keys. A cookie is unique by its <name, domain, path> tuple. Request cookies are directly linked to response cookies. Any modification to a cookie object in the returned set will mark the cookie to be included in the HTTP response. Removing a cookie from the set, will also mean that it will be removed from the response, regardless if it was modified or not.
      Returns:
      a set with all cookies in the cookie jar.
    • routed

      public HttpServerRequest routed(String route)
      Marks this request as being routed to the given route. This is purely informational and is being provided to metrics.
      Parameters:
      route - The route this request has been routed to.
    • pipe

      public Pipe<io.vertx.core.buffer.Buffer> pipe()
      Pause this stream and return a Pipe to transfer the elements of this stream to a destination WriteStream.

      The stream will be resumed when the pipe will be wired to a WriteStream.

      Specified by:
      pipe in interface ReadStream<io.vertx.core.buffer.Buffer>
      Returns:
      a pipe
    • newInstance

      public static HttpServerRequest newInstance(io.vertx.core.http.HttpServerRequest delegate)
      Creates a new instance of the HttpServerRequest.
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class HttpRequestHead
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class HttpRequestHead
    • toString

      public String toString()
      Overrides:
      toString in class HttpRequestHead
    • toMulti

      @CheckReturnValue public io.smallrye.mutiny.Multi<io.vertx.core.buffer.Buffer> toMulti()
    • toBlockingIterable

      public Iterable<io.vertx.core.buffer.Buffer> toBlockingIterable()
    • toBlockingStream

      public Stream<io.vertx.core.buffer.Buffer> toBlockingStream()