コード例 #1
0
ファイル: message.py プロジェクト: mgwilliams/tipsip
 def parse(cls, s):
     if '\r\n\r\n' not in s:
         raise MessageParsingError("Bad message (no CRLFCRLF found)")
     head, content = s.split('\r\n\r\n', 1)
     if not content:
         content = None
     if '\r\n' not in head:
         first_line = head
         hdrs = ''
     else:
         first_line, hdrs = head.split('\r\n', 1)
     headers = Headers.parse(hdrs)
     r = first_line.split(None, 2)
     if len(r) != 3:
         raise MessageParsingError("Bad first line: " + first_line)
     if r[0] == cls.version:
         code = int(r[1])
         reason = r[2]
         return Response(code, reason, headers, content)
     elif r[2] == cls.version:
         method = r[0]
         uri = URI.parse(r[1])
         return Request(method, uri, headers, content)
     else:
         raise MessageParsingError("Bad first line: " + first_line)