'Returns value, or raises an exception if it is invalid.
According to RFC 2616 section 4.2, header field values must consist "of
either *TEXT or combinations of token, separators, and quoted-string".
TEXT = <any OCTET except CTLs, but including LWS>
Args:
value: HTTP header field value.
key: HTTP header field name.
Returns:
value argument.
Raises:
appinfo_errors.InvalidHttpHeaderValue: argument cannot be used as an
HTTP header value.'

def Validate(self, value, key=None):

    if isinstance(value, unicode):
        try:
            value = value.encode('ascii')
        except UnicodeEncodeError:
            raise appinfo_errors.InvalidHttpHeaderValue('HTTP    header    values    must    not    contain    non-ASCII    data')
    key = key.lower()
    printable = set(string.printable[:(-5)])
    if (not all(((char in printable) for char in value))):
        raise appinfo_errors.InvalidHttpHeaderValue('HTTP    header    field    values    must    consist    of    printable    characters.')
    HttpHeadersDict.ValueValidator.AssertHeaderNotTooLong(key, value)
    return value
