Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

import six 

from six import BytesIO 

from six.moves.http_client import HTTPMessage 

try: 

    import http.client 

except ImportError: 

    pass 

 

 

""" 

The python3 http.client api moved some stuff around, so this is an abstraction 

layer that tries to cope with this move. 

""" 

 

 

def get_header(message, name): 

    if six.PY3: 

        return message.getallmatchingheaders(name) 

    else: 

        return message.getheader(name) 

 

 

def get_header_items(message): 

    for (key, values) in get_headers(message): 

        for value in values: 

            yield key, value 

 

 

def get_headers(message): 

    for key in set(message.keys()): 

        if six.PY3: 

            yield key, message.get_all(key) 

        else: 

            yield key, message.getheaders(key) 

 

 

def get_httpmessage(headers): 

    if six.PY3: 

        return http.client.parse_headers(BytesIO(headers)) 

    msg = HTTPMessage(BytesIO(headers)) 

    msg.fp.seek(0) 

    msg.readheaders() 

    return msg