Source code for freshpy.utils.core_utils
# -*- coding: utf-8 -*-
"""
:Module: freshpy.utils.core_utils
:Synopsis: Collection of supporting utilities and functions to complement the primary modules
:Created By: Jeff Shurtliff
:Last Modified: Jeff Shurtliff
:Modified Date: 30 Dec 2021
"""
import urllib.parse
[docs]def construct_query_string(existing_query=None, appendage=None):
"""This function assists in constructing query strings for URIs to ensure they follow the appropriate format.
.. versionadded:: 1.0.0
:param existing_query: The existing query string (if any)
:type existing_query: str, None
:param appendage: The new addition to the query string to be appended (if any)
:type appendage: str, None
:returns: The constructed query string
"""
combined_query = '' if existing_query is None else existing_query
if appendage:
if existing_query == '?':
combined_query = f'?{appendage}'
elif existing_query:
combined_query = existing_query + f'&{appendage}'
elif appendage.startswith('?'):
combined_query = appendage
else:
combined_query = f'?{appendage}'
return combined_query
[docs]def url_encode(raw_string):
"""This function encodes a string for use in URLs.
.. versionadded:: 1.0.0
:param raw_string: The raw string to be encoded
:type raw_string: str
:returns: The encoded string
"""
return urllib.parse.quote_plus(raw_string)
[docs]def url_decode(encoded_string):
"""This function decodes a url-encoded string.
.. versionadded:: 1.0.0
:param encoded_string: The url-encoded string
:type encoded_string: str
:returns: The unencoded string
"""
return urllib.parse.unquote_plus(encoded_string)