boolean isCompressibleContentType(String contentType) {
    // If there is no content-type, assume it's other content-type.
    if (Utils.isNullOrEmpty(contentType)) {
      return false;
    }

    // If an exact match by the full content-type is found, it's compressible.
    String contentTypeLower = contentType.trim().toLowerCase();
    if (compressibleContentTypes.contains(contentTypeLower)) {
      return true;
    }

    // Check whether the content-type contains options separated by ";"
    int mimeSeparatorIndex = contentTypeLower.indexOf(';');
    if (mimeSeparatorIndex > 0) {
      String contentTypeWithoutOption = contentTypeLower.substring(0, mimeSeparatorIndex);
      if (compressibleContentTypes.contains(contentTypeWithoutOption)) {
        return true;
      }
    }

    // Check whether there's a match by content-type prefix.
    // For example, if input content-type is "text/csv", check whether "text" is compressible.
    int prefixSeparatorIndex = contentTypeLower.indexOf('/');
    if (prefixSeparatorIndex > 0) {
      String prefix = contentTypeLower.substring(0, prefixSeparatorIndex);
      if (compressibleContentTypes.contains(prefix)) {
        return true;
      }
    }

    // Content-type is not found in the allowed list, assume it's not compressible.
    return false;
  }
Check whether compression should be applied to the specified content type.
Support format of content-type (3 variations):
See <a href="https://www.geeksforgeeks.org/http-headers-content-type/">Content-Type spec</a> for detail.
  - text/html
  - text/html; charset=UTF-8
  - multipart/form-data; boundary=something
<p>
Content type format is "prefix/specific; option=value".
Content check is applied in this order.  If not in the list, it's not compressible.
1. Check whether the full contentType parameter is specified in content-type set.  Example "text/html"
2. If contentType parameter contains option (separated by ";"), remove the option and check again.
   For example, parameter content-type "text/html; charset=UTF-8", check config by content-type "text/html".
3. Get the content-type prefix (the string before the "/" separator) and lookup prefix again.
   For example, parameter content-type "text/html; charset=UTF-8", check config by content-prefix "text".
@param contentType The HTTP content type.
@return TRUE if compression allowed; FALSE if compression not allowed.
ambry-router/src/main/java/com/github/ambry/router/CompressionService.java