Class RESTUtil
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionconfigHeaders(Map<String, String> properties) credentialsQueryParams(Map<String, String> properties) Query parameters for the loadCredentials endpoint, from client-side request context.decodeFormData(String formString) Decodes a map of form data from application/x-www-form-urlencoded.static NamespacedecodeNamespace(String encodedNamespace, String separator) Takes in a string representation of a namespace encoded with application/x-www-form-urlencoded encoding, and returns the corresponding namespace.static NamespacedecodeNamespaceAsPathSegment(String encodedNamespace, String separator) Decodes a URL path segment per RFC 3986 into a namespace.static StringdecodePathSegment(String encoded) Decodes a URL path segment per RFC 3986.static StringdecodeString(String encoded) Decodes a string that was encoded using application/x-www-form-urlencoded encoding, where+is decoded as a space.static StringencodeFormData(Map<?, ?> formData) Encodes a map of form data as application/x-www-form-urlencoded.static StringencodeNamespace(Namespace namespace, String separator) Returns a String representation of a namespace that is suitable for use with application/x-www-form-urlencoded encoding.static StringencodeNamespaceAsPathSegment(Namespace namespace, String separator) Returns a String representation of a namespace that is suitable for use in a URL path segment per RFC 3986.static StringencodePathSegment(String segment) Encodes a string for use as a URL path segment per RFC 3986.static StringencodeString(String toEncode) Encodes a string using application/x-www-form-urlencoded encoding, where spaces are encoded as+.extractPrefixMap(Map<String, String> properties, String prefix) Takes in a map, and returns a copy filtered on the entries with keys beginning with the designated prefix.Returns a single-use headers map containing a freshly generated idempotency key.Merge updates into a target string map.static NamespacenamespaceFromQueryParam(String namespace) This converts a namespace where each part in a multipart namespace has been separated using '' to its originalNamespaceinstance.static NamespacenamespaceFromQueryParam(String namespace, String unicodeNamespaceSeparator) This converts a namespace where each part in a multipart namespace has been separated using the provided unicode separator to its originalNamespaceinstance.static StringnamespaceToQueryParam(Namespace namespace) This converts the given namespace to a string and separates each part in a multipart namespace using the unicode character ''.static StringnamespaceToQueryParam(Namespace namespace, String unicodeNamespaceSeparator) This converts the given namespace to a string and separates each part in a multipart namespace using the provided unicode separator.static StringresolveEndpoint(String catalogUri, String endpointPath) Returns the catalog URI suffixed by the relative endpoint path.static StringstripTrailingSlash(String path)
-
Field Details
-
IDEMPOTENCY_KEY_HEADER
- See Also:
-
-
Method Details
-
stripTrailingSlash
-
merge
Merge updates into a target string map.- Parameters:
target- a map to updateupdates- a map of updates- Returns:
- an immutable result map built from target and updates
-
extractPrefixMap
Takes in a map, and returns a copy filtered on the entries with keys beginning with the designated prefix. The keys are returned with the prefix removed.Any entries whose keys don't begin with the prefix are not returned.
This can be used to get a subset of the configuration related to the REST catalog, such as all properties from a prefix of `spark.sql.catalog.my_catalog.rest.` to get REST catalog specific properties from the spark configuration.
-
encodeFormData
Encodes a map of form data as application/x-www-form-urlencoded.This encodes the form with pairs separated by & and keys separated from values by =.
- Parameters:
formData- a map of form data- Returns:
- a String of encoded form data
-
decodeFormData
Decodes a map of form data from application/x-www-form-urlencoded.This decodes the form with pairs separated by & and keys separated from values by =.
- Parameters:
formString- a map of form data- Returns:
- a map of key/value form data
-
encodeString
Encodes a string using application/x-www-form-urlencoded encoding, where spaces are encoded as+.This method is suitable for encoding form data (e.g. OAuth2 token requests) but not for URL path segments, where
+is a literal character. UseencodePathSegment(String)for path segments.decodeString(String)should be used to decode.- Parameters:
toEncode- string to encode- Returns:
- form-encoded string, suitable for use in application/x-www-form-urlencoded content
-
decodeString
Decodes a string that was encoded using application/x-www-form-urlencoded encoding, where+is decoded as a space.This method is suitable for decoding form data but not for URL path segments. Use
decodePathSegment(String)for path segments.See also
encodeString(String)for form encoding.- Parameters:
encoded- a string to decode- Returns:
- a decoded string
-
encodePathSegment
Encodes a string for use as a URL path segment per RFC 3986. Spaces are encoded as%20(not+), and other non-unreserved characters are percent-encoded.decodePathSegment(String)should be used to decode.- Parameters:
segment- string to encode- Returns:
- percent-encoded string suitable for use in URL path segments
-
decodePathSegment
Decodes a URL path segment per RFC 3986. UnlikedecodeString(String), this method does not treat+as a space — it is left as a literal+character.See also
encodePathSegment(String)for encoding.- Parameters:
encoded- a percent-encoded path segment- Returns:
- a decoded string
-
namespaceToQueryParam
This converts the given namespace to a string and separates each part in a multipart namespace using the unicode character ''. Note that this method is different fromencodeNamespace(Namespace, String), which URL-encodes each part of the namespace.namespaceFromQueryParam(String)should be used to convert the namespace string back to aNamespaceinstance.- Parameters:
namespace- The namespace to convert- Returns:
- The namespace converted to a string where each part in a multipart namespace is separated using the unicode character ''
-
namespaceToQueryParam
This converts the given namespace to a string and separates each part in a multipart namespace using the provided unicode separator.namespaceFromQueryParam(String, String)should be used to convert the namespace string back to aNamespaceinstance.- Parameters:
namespace- The namespace to convertunicodeNamespaceSeparator- The unicode namespace separator to use, such as '.'- Returns:
- The namespace converted to a string where each part in a multipart namespace is separated using the given unicode separator
-
namespaceFromQueryParam
This converts a namespace where each part in a multipart namespace has been separated using '' to its originalNamespaceinstance.namespaceToQueryParam(Namespace)should be used to convert theNamespaceto a string.- Parameters:
namespace- The namespace to convert- Returns:
- The namespace instance from the given namespace string, where each part in a multipart namespace is converted using the unicode separator ''
-
namespaceFromQueryParam
This converts a namespace where each part in a multipart namespace has been separated using the provided unicode separator to its originalNamespaceinstance.namespaceToQueryParam(Namespace, String)should be used to convert theNamespaceto a string.- Parameters:
namespace- The namespace to convertunicodeNamespaceSeparator- The unicode namespace separator to use, such as '.'- Returns:
- The namespace instance from the given namespace string, where each part in a multipart namespace is converted using the given unicode namespace separator
-
encodeNamespace
Returns a String representation of a namespace that is suitable for use with application/x-www-form-urlencoded encoding.This function needs to be called when a namespace is used in a POST request body, to format the namespace per the spec.
decodeNamespace(String, String)should be used to parse the namespace from a request body.- Parameters:
namespace- namespace to encodeseparator- The namespace separator to be used for encoding. The separator will be used as-is and won't be UTF-8 encoded.- Returns:
- UTF-8 encoded string representing the namespace, suitable for use as a URL parameter
-
decodeNamespace
Takes in a string representation of a namespace encoded with application/x-www-form-urlencoded encoding, and returns the corresponding namespace.See also
encodeNamespace(org.apache.iceberg.catalog.Namespace, java.lang.String)for generating correctly formatted POST requests.- Parameters:
encodedNamespace- a namespace to decodeseparator- The namespace separator to be used as-is for decoding. This should be the same separator that was used when callingencodeNamespace(Namespace, String)- Returns:
- a namespace
-
encodeNamespaceAsPathSegment
Returns a String representation of a namespace that is suitable for use in a URL path segment per RFC 3986. Spaces are encoded as%20(not+).This method should be used instead of
encodeNamespace(Namespace, String)when the result is placed into a URL path.decodeNamespaceAsPathSegment(String, String)should be used to decode the result.- Parameters:
namespace- namespace to encodeseparator- The namespace separator to be used for encoding. The separator will be used as-is and won't be encoded.- Returns:
- percent-encoded string representing the namespace, suitable for use in URL path segments
-
decodeNamespaceAsPathSegment
Decodes a URL path segment per RFC 3986 into a namespace. UnlikedecodeNamespace(String, String), this method does not treat+as a space.encodeNamespaceAsPathSegment(Namespace, String)should be used for encoding path segments.- Parameters:
encodedNamespace- a percent-encoded namespace path segmentseparator- The namespace separator used during encoding- Returns:
- a namespace
-
resolveEndpoint
Returns the catalog URI suffixed by the relative endpoint path. If the endpoint path is an absolute path, then the absolute endpoint path is returned without using the catalog URI.- Parameters:
catalogUri- The catalog URI that is typically passed throughCatalogProperties.URIendpointPath- Either an absolute or relative endpoint path- Returns:
- The actual endpoint path if it's an absolute path or the catalog uri suffixed by the endpoint path if the path is relative.
-
configHeaders
-
idempotencyHeaders
Returns a single-use headers map containing a freshly generated idempotency key. The key is a UUIDv7 string suitable for use in the Idempotency-Key header. -
credentialsQueryParams
Query parameters for the loadCredentials endpoint, from client-side request context.
-