Class HttpRequestUriUtils

java.lang.Object
io.servicetalk.http.utils.HttpRequestUriUtils

public final class HttpRequestUriUtils extends Object
Helper methods for computing effective request URIs according to RFC 7230, section 5.5 and base URIs (which are effective request URIs with / as path, and no query nor fragment.
  • Method Details

    • getEffectiveRequestUri

      public static String getEffectiveRequestUri(ConnectionContext ctx, HttpRequestMetaData metaData, boolean includeUserInfo)
      Get the effective request URI for the provided ConnectionContext and HttpRequestMetaData.

      For example, for this origin-form request:

       GET /pub/WWW/TheProject.html HTTP/1.1
       Host: www.example.org:8080
       
      the effective request URI will be:
       http://www.example.org:8080/pub/WWW/TheProject.html
       
      Parameters:
      ctx - the ConnectionContext to use.
      metaData - the HttpRequestMetaData to use.
      includeUserInfo - true if the deprecated user info sub-component must be included (see RFC 7230, section 2.7.1).
      Returns:
      an effective request URI as String.
    • getEffectiveRequestUri

      public static String getEffectiveRequestUri(ConnectionContext ctx, HttpRequestMetaData metaData, @Nullable String fixedScheme, @Nullable String fixedAuthority, boolean includeUserInfo)
      Get the effective request URI for the provided ConnectionContext and HttpRequestMetaData.

      For example, for this origin-form request:

       GET /pub/WWW/TheProject.html HTTP/1.1
       Host: www.example.org:8080
       
      and a fixedAuthority of "example.com" the effective request URI will be:
       http://example.com/pub/WWW/TheProject.html
       
      Parameters:
      ctx - the ConnectionContext to use.
      metaData - the HttpRequestMetaData to use.
      fixedScheme - the configured fixed scheme as String, or null if none is set.
      fixedAuthority - the configured fixed authority as String, or null if none is set.
      includeUserInfo - true if the deprecated user info sub-component must be included (see RFC 7230, section 2.7.1). Note that this flag has no effect on any user info that could be provided in fixedAuthority.
      Returns:
      an effective request URI as String.
      Throws:
      IllegalArgumentException - if fixedScheme is not null and is not http nor https.
    • getEffectiveRequestUri

      public static String getEffectiveRequestUri(HttpRequestMetaData metaData, String fixedScheme, String fixedAuthority, boolean includeUserInfo)
      Get the effective request URI for the provided HttpRequestMetaData.

      For example, for this origin-form request:

       GET /pub/WWW/TheProject.html HTTP/1.1
       Host: www.example.org:8080
       
      and a fixedAuthority of "example.com" the effective request URI will be:
       http://example.com/pub/WWW/TheProject.html
       
      Parameters:
      metaData - the HttpRequestMetaData to use.
      fixedScheme - the configured fixed scheme as String, or null if none is set.
      fixedAuthority - the configured fixed authority as String, or null if none is set.
      includeUserInfo - true if the deprecated user info sub-component must be included (see RFC 7230, section 2.7.1). Note that this flag has no effect on any user info that could be provided in fixedAuthority.
      Returns:
      an effective request URI as String.
      Throws:
      IllegalArgumentException - if fixedScheme is not null and is not http nor https.
    • getBaseRequestUri

      public static String getBaseRequestUri(ConnectionContext ctx, HttpRequestMetaData metaData, boolean includeUserInfo)
      Get the base URI for the provided ConnectionContext and HttpRequestMetaData.

      For example, for this origin-form request:

       GET /pub/WWW/TheProject.html HTTP/1.1
       Host: www.example.org:8080
       
      the base request URI will be:
       http://www.example.org:8080/
       
      Parameters:
      ctx - the ConnectionContext to use.
      metaData - the HttpRequestMetaData to use.
      includeUserInfo - true if the deprecated user info sub-component must be included (see RFC 7230, section 2.7.1).
      Returns:
      a base request URI as String.
    • getBaseRequestUri

      public static String getBaseRequestUri(ConnectionContext ctx, HttpRequestMetaData metaData, @Nullable String fixedScheme, @Nullable String fixedAuthority, boolean includeUserInfo)
      Get the base URI for the provided ConnectionContext and HttpRequestMetaData.

      For example, for this origin-form request:

       GET /pub/WWW/TheProject.html HTTP/1.1
       Host: www.example.org:8080
       
      and a fixedAuthority of "example.com" the base request URI will be:
       http://example.com/
       
      Parameters:
      ctx - the ConnectionContext to use.
      metaData - the HttpRequestMetaData to use.
      fixedScheme - the configured fixed scheme as String, or null if none is set.
      fixedAuthority - the configured fixed authority as String, or null if none is set.
      includeUserInfo - true if the deprecated user info sub-component must be included (see RFC 7230, section 2.7.1). Note that this flag has no effect on any user info that could be provided in fixedAuthority.
      Returns:
      a base request URI as String.
      Throws:
      IllegalArgumentException - if fixedScheme is not null and is not http nor https.