Show More
@@ -39,16 +39,24 def encodevalueinheaders(value, header, | |||
|
39 | 39 | ``header-<N>`` where ``<N>`` is an integer starting at 1. Each header |
|
40 | 40 | name + value will be at most ``limit`` bytes long. |
|
41 | 41 | |
|
42 |
Returns an iterable of 2-tuples consisting of header names and |
|
|
42 | Returns an iterable of 2-tuples consisting of header names and | |
|
43 | values as native strings. | |
|
43 | 44 | """ |
|
44 | fmt = header + '-%s' | |
|
45 | valuelen = limit - len(fmt % '000') - len(': \r\n') | |
|
45 | # HTTP Headers are ASCII. Python 3 requires them to be unicodes, | |
|
46 | # not bytes. This function always takes bytes in as arguments. | |
|
47 | fmt = pycompat.strurl(header) + r'-%s' | |
|
48 | # Note: it is *NOT* a bug that the last bit here is a bytestring | |
|
49 | # and not a unicode: we're just getting the encoded length anyway, | |
|
50 | # and using an r-string to make it portable between Python 2 and 3 | |
|
51 | # doesn't work because then the \r is a literal backslash-r | |
|
52 | # instead of a carriage return. | |
|
53 | valuelen = limit - len(fmt % r'000') - len(': \r\n') | |
|
46 | 54 | result = [] |
|
47 | 55 | |
|
48 | 56 | n = 0 |
|
49 | 57 | for i in xrange(0, len(value), valuelen): |
|
50 | 58 | n += 1 |
|
51 | result.append((fmt % str(n), value[i:i + valuelen])) | |
|
59 | result.append((fmt % str(n), pycompat.strurl(value[i:i + valuelen]))) | |
|
52 | 60 | |
|
53 | 61 | return result |
|
54 | 62 |
General Comments 0
You need to be logged in to leave comments.
Login now