def validate_str_length(value, min_length=None, max_length=None):
    """Validation value is a string and its length is between [min_size:max_size] as long
    those are defined.

    :param value: A string value
    :type value: string | NoneType
    :param min_length: The minimum amount of characters the value can have
    :type min_length: integer
    :param max_length: The maximum amount of characters the value can have
    :type max_length: integer
    :return: True if values is a string with length within boundaries or None. Otherwise returns False
    :rtype: bool
    """
    if value is None:
        return True
    if not isinstance(value, str):
        return False
    gte_min = True if not min_length else min_length <= len(value)
    lte_max = True if not max_length else max_length >= len(value)
    return gte_min and lte_max