Changeset 109:bfb2aabc0b11 for imapclient/response_parser.py
- Timestamp:
- 12/17/09 12:00:01 (2 years ago)
- Branch:
- default
- Files:
-
- 1 modified
-
imapclient/response_parser.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
imapclient/response_parser.py
r107 r109 6 6 7 7 import shlex 8 from cStringIO import StringIO 8 9 9 10 #XXX higher level response type response type processing … … 21 22 22 23 def parse_response(text): 23 #XXX 24 #XXX doc 24 25 src = ResponseTokeniser(text) 25 26 try: 26 return tuple( [atom(src, token) for token in src])27 return tuple(atom(src, token) for token in src) 27 28 except ParseError: 28 29 raise … … 32 33 33 34 def parse_fetch_response(text): 34 #XXX 35 response = parse_response(text) 35 response = iter(parse_response(text)) 36 36 37 msgid = response[0] 37 def expect(expected_value): 38 next_value = response.next() 39 if next_value != expected_value: 40 raise ParseError('expected %r, got %r' % (expected_value, next_value)) 38 41 39 # Second item should be FETCH 40 if response[1] != 'FETCH': 41 raise ParseError('not a FETCH response') 42 43 42 msg_data = {} 43 while True: 44 try: 45 expect('*') 46 except StopIteration: 47 break 48 msgid = int(response.next()) 49 expect('FETCH') 50 msg_data[msgid] = response.next() 51 return msg_data 44 52 45 53
