1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
19
20 if not text:
21 return "", ""
22
23 if text[0] == '"':
24 return parsequoted(text, delimiters)
25 else:
26 for pos, c in enumerate(text):
27 if c in delimiters:
28 token = text[0:pos]
29 break
30 else:
31 return text, ""
32
33 return token, lstripdelimiters(text[pos:], delimiters)
34
36
37 assert(text)
38 assert(text[0] == '"')
39
40 pos = 1
41 while True:
42 next_pos = text.find('"', pos)
43 if next_pos == -1:
44 return text[1:].replace("\\\\", "\\").replace("\\\"", "\""), ""
45 if text[next_pos - 1] == '\\':
46 pos = next_pos + 1
47 else:
48 return (
49 text[1:next_pos].replace("\\\\", "\\").replace("\\\"", "\""),
50 lstripdelimiters(text[next_pos+1:], delimiters)
51 )
52
54 for pos, c in enumerate(text):
55 if c not in delimiters:
56 return text[pos:]
57 else:
58 return ""
59
61
62 status = status.strip()
63
64
65 if status[0:9] != "HTTP/1.1 ":
66 return 0
67
68
69 if not status[9:12].isdigit() or (len(status) > 12 and status[12] != " "):
70 return 0
71
72
73 return int(status[9:12])
74