Package io.inversion

Class Url

java.lang.Object
io.inversion.Url

public final class Url extends Object
Utility class for parsing and working with HTTP(S) URLs.

Not for use with non HTTP(S) urls.

A number of different utility methods are provided to make it simple to find or remove different query string keys.

  • Constructor Details

    • Url

      public Url(String url)
      Parses url into its protocol, host, port, path and query string param parts.

      If url does not start with "http://" or "https://" then "http://127.0.0.1" will be prepended.

      Parameters:
      url - url string
  • Method Details

    • copy

      public Url copy()
    • toQueryString

      public static String toQueryString(Map<String,String> params)
      Creates a UTF-8 url encoded query string, not including a leading "?" with key value pairs separated by a '&'
      Parameters:
      params - the key/value pairs to encode
      Returns:
      a UTF-8 url encoded query string
      See Also:
    • encode

      public static String encode(String str)
    • toString

      public String toString()
      Generates a string string representation of this url with any query string parameters URL encoded and port number included only if it differs from the standard protocol port.
      Overrides:
      toString in class Object
      Returns:
      the string representation of this url
    • equals

      public boolean equals(Object url)
      Checks url equality based on type and toString equality
      Overrides:
      equals in class Object
      Returns:
      true if url is a Url with a matching toString
    • getDomain

      public String getDomain()
    • getQueryString

      public String getQueryString()
      Generates a URL encode query string for params
      Returns:
      a URL encoded query string if params.size() is @gt; 0 else empty string
      See Also:
    • getHost

      public String getHost()
    • withHost

      public Url withHost(String host)
    • getHostAsPath

      public io.inversion.utils.Path getHostAsPath()
    • getPort

      public int getPort()
    • withPort

      public Url withPort(int port)
    • getProtocol

      public String getProtocol()
    • withProtocol

      public Url withProtocol(String protocol)
    • getPath

      public io.inversion.utils.Path getPath()
    • withPath

      public Url withPath(io.inversion.utils.Path path)
    • getFile

      public String getFile()
      Gets the last url path part if it exists
      Returns:
      path.last() if it exists otherwise null
    • withQueryString

      public Url withQueryString(String queryString)
      Parses queryString and replace params
      Parameters:
      queryString - query prams to add
      Returns:
      this
    • withParams

      public Url withParams(Map<String,String> params)
      Adds all key/value pairs from newParams to params overwriting any exiting keys on a case insensitive basis
      Parameters:
      params - name/value pairs to add to the query string params map
      Returns:
      this
    • withParam

      public Url withParam(io.inversion.rql.Term term)
    • withParam

      public Url withParam(String name, String value)
      Adds name/value to params overwriting any preexisting key/value pair on a key case insensitive basis.
      Parameters:
      name - the key to add or overwrite, may not be null
      value - the value, may be null
      Returns:
      this
    • withParams

      public Url withParams(String... nvpairs)
    • clearParams

      public String clearParams(String... tokens)
      Removes any param that has one of tokens as a whole word case insensitive substring in the key.
      Parameters:
      tokens - string tokens when found in a param key will cause them to be removed
      Returns:
      the first value found that contained any one of tokens
      See Also:
      • Utils.containsToken(java.lang.String, java.lang.String)
    • clearParams

      public void clearParams()
    • findKey

      public String findKey(String... tokens)
      Finds a key that has any one of tokens as a whole word case insensitive substring
      Parameters:
      tokens - substrings to search params.keySet() for
      Returns:
      the first param key that has anyone of tokens as a whole word case insensitive substring
    • findKeyValue

      public String findKeyValue(String... tokens)
      Finds the value associated with findKey(tokens)
      Parameters:
      tokens - substrings to search params.keySet() for
      Returns:
      the value for the first param key that has anyone of tokens as a whole word case insensitive substring
      See Also:
    • getParam

      public String getParam(String key)
      Gets the param value with key based on a case insensitive match.
      Parameters:
      key - the key to get
      Returns:
      the param value for key based on a case insensitive match.
    • getParams

      public Map<String,String> getParams()
      Returns:
      a new case insensitive order preserving map copy of params
    • getOriginal

      public String getOriginal()
      Returns:
      the url string used in constructing this Url.