Revision 27cfa807

b/snf-common/synnefo/lib/astakos.py
33 33

  
34 34
from time import time, mktime
35 35
from urlparse import urlparse
36
from httplib import HTTPConnection, HTTPSConnection
37 36
from urllib import quote, unquote
38 37

  
39 38
from django.conf import settings
40 39
from django.utils import simplejson as json
41 40

  
41
from synnefo.lib.pool.http import get_http_connection
42

  
42 43

  
43 44
def authenticate(token, authentication_url='http://127.0.0.1:8000/im/authenticate'):
44 45
    p = urlparse(authentication_url)
45
    if p.scheme == 'http':
46
        conn = HTTPConnection(p.netloc)
47
    elif p.scheme == 'https':
48
        conn = HTTPSConnection(p.netloc)
49
    else:
50
        raise Exception('Unknown URL scheme')
51
    
46

  
52 47
    kwargs = {}
53 48
    kwargs['headers'] = {}
54 49
    kwargs['headers']['X-Auth-Token'] = token
55 50
    kwargs['headers']['Content-Length'] = 0
56
    
57
    conn.request('GET', p.path, **kwargs)
58
    response = conn.getresponse()
59
    
60
    headers = response.getheaders()
61
    headers = dict((unquote(h), unquote(v)) for h,v in headers)
62
    length = response.getheader('content-length', None)
63
    data = response.read(length)
64
    status = int(response.status)
65
    
51

  
52
    conn = get_http_connection(p.netloc, p.scheme)
53
    try:
54
        conn.request('GET', p.path, **kwargs)
55
        response = conn.getresponse()
56
        headers = response.getheaders()
57
        headers = dict((unquote(h), unquote(v)) for h,v in headers)
58
        length = response.getheader('content-length', None)
59
        data = response.read(length)
60
        status = int(response.status)
61
    finally:
62
        conn.close()
63

  
66 64
    if status < 200 or status >= 300:
67
        raise Exception(data, int(response.status))
65
        raise Exception(data, status)
68 66
    
69 67
    return json.loads(data)
70 68

  

Also available in: Unified diff