Revision 6c62a96d

b/kamaki/clients/__init__.py
57 57
requests.Response.status = property(_status)
58 58

  
59 59

  
60
class XAuthTokenAuth(AuthBase):
61
    def __init__(self, token):
62
        self.token = token
63
    
64
    def __call__(self, r):
65
        r.headers['X-Auth-Token'] = self.token
66
        return r
67

  
68

  
69 60
class ClientError(Exception):
70 61
    def __init__(self, message, status=0, details=''):
71 62
        self.message = message
......
76 67
class Client(object):
77 68
    def __init__(self, base_url, token):
78 69
        self.base_url = base_url
79
        self.auth = XAuthTokenAuth(token)
80
    
70
        self.token = token
71

  
81 72
    def raise_for_status(self, r):        
82 73
        message = "%d %s" % (r.status_code, r.status)
83 74
        details = r.text
......
86 77
    def request(self, method, path, **kwargs):
87 78
        raw = kwargs.pop('raw', False)
88 79
        success = kwargs.pop('success', 200)
80

  
81
        data = kwargs.pop('data', None)
82
        headers = kwargs.pop('headers', {})
83
        headers.setdefault('X-Auth-Token', self.token)
84

  
89 85
        if 'json' in kwargs:
90 86
            data = json.dumps(kwargs.pop('json'))
91
            kwargs['data'] = data
92
            headers = kwargs.setdefault('headers', {})
93
            headers['content-type'] = 'application/json'
87
            headers.setdefault('Content-Type', 'application/json')
88

  
89
        if data:
90
            headers.setdefault('Content-Length', str(len(data)))
94 91

  
95 92
        url = self.base_url + path
96
        kwargs.setdefault('auth', self.auth)
97 93
        kwargs.setdefault('verify', False)  # Disable certificate verification
98
        r = requests.request(method, url, **kwargs)
99
        
94
        r = requests.request(method, url, headers=headers, data=data, **kwargs)
95

  
100 96
        req = r.request
101 97
        sendlog.info('%s %s', req.method, req.url)
102 98
        for key, val in req.headers.items():

Also available in: Unified diff