Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
>>> validate_language_tag('en')
>>> validate_language_tag('-US') # Need primary tag # doctest: +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last):
VCardValueError: Invalid language (See RFC 1766 section 2 for details)
String: -us
>>> validate_language_tag('en-') # Can't end with dash # doctest: +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last):
VCardValueError: Invalid language (See RFC 1766 section 2 for details)
String: en-
>>> validate_language_tag('en-US')
"""
text = text.lower() # Case insensitive
if VALID_LANGUAGE_TAG.match(text) is None:
raise VCardValueError(NOTE_INVALID_LANGUAGE_VALUE, {'String': text})
... # doctest: +ELLIPSIS +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last):
VCardValueError: Invalid time zone ...
String: 01:
>>> validate_time_zone('01:1') # Need preceding zero
... # doctest: +ELLIPSIS +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last):
VCardValueError: Invalid time zone ...
"""
if not VALID_TIMEZONE.match(text):
raise VCardValueError(NOTE_INVALID_TIME_ZONE, {'String': text})
try:
isodate.parse_tzinfo(text.replace('+', 'Z+').replace('-', 'Z-'))
except (isodate.ISO8601Error, ValueError):
raise VCardValueError(NOTE_INVALID_TIME_ZONE, {'String': text})
@param text: Single parameter value
Examples:
>>> validate_uri('http://example.org/')
>>> validate_uri('http\\://example.org/') # doctest: +ELLIPSIS +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last):
VCardValueError: Invalid URI ...
String: http\\://example.org/
>>> validate_uri('http:') # doctest: +ELLIPSIS +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last):
VCardValueError: Invalid URI ...
String: http:
"""
parts = six.Module_six_moves_urllib.parse.urlparse(text)
if parts[0] == '' or (parts[1] == '' and parts[2] == ''):
raise VCardValueError(NOTE_INVALID_URI, {'String': text})
def get_vcard_property_sub_values(value_string):
"""
Get the parts of the value.
@param value_string: Single value string
@return: List of values (RFC 2426 page 9)
"""
sub_values = vcard_utils.split_unescaped(value_string, ',')
# Validate string
for sub_value in sub_values:
if not re.match(u'^[{0}]*$'.format(re.escape(VALUE_CHARACTERS)), sub_value):
raise VCardValueError('{0}: {1}'.format(NOTE_INVALID_SUB_VALUE, sub_value), {})
return sub_values
def validate_date(text):
"""
Based on http://tools.ietf.org/html/rfc2425#section-5.8.4 and the fact
that it specifies a subset of ISO 8601.
@param text: String
"""
if VALID_DATE.match(text) is None:
raise VCardValueError(NOTE_INVALID_DATE, {'String': text})
try:
isodate.parse_date(text)
except (isodate.ISO8601Error, ValueError):
raise VCardValueError(NOTE_INVALID_DATE, {'String': text})
def validate_date(text):
"""
Based on http://tools.ietf.org/html/rfc2425#section-5.8.4 and the fact
that it specifies a subset of ISO 8601.
@param text: String
"""
if VALID_DATE.match(text) is None:
raise VCardValueError(NOTE_INVALID_DATE, {'String': text})
try:
isodate.parse_date(text)
except (isodate.ISO8601Error, ValueError):
raise VCardValueError(NOTE_INVALID_DATE, {'String': text})