Revision cd6ada1d pithos/lib/client.py

b/pithos/lib/client.py
94 94
        kwargs['headers']['X-Auth-Token'] = self.token
95 95
        if body:
96 96
            kwargs['body'] = body
97
            kwargs['headers'].setdefault('content-type',
98
                                         'application/octet-stream')
97 99
        kwargs['headers'].setdefault('content-length', len(body) if body else 0)
98
        kwargs['headers'].setdefault('content-type', 'application/octet-stream')
99 100
        try:
100 101
            #print '*', method, full_path, kwargs
101 102
            conn.request(method, full_path, **kwargs)
......
118 119
            print
119 120
        
120 121
        if int(resp.status) in ERROR_CODES.keys():
122
            #print '**', resp.status
121 123
            raise Fault(data, int(resp.status))
122 124
        
123
        #print '*',  resp.status, headers, data
125
        #print '**',  resp.status, headers, data
124 126
        return resp.status, headers, data
125 127
    
126 128
    def delete(self, path, format='text', params={}):
......
146 148
        if format == 'json':
147 149
            data = json.loads(data) if data else ''
148 150
        elif format == 'xml':
149
            print '#', data
150 151
            data = minidom.parseString(data)
151 152
        else:
152 153
            data = data.strip().split('\n') if data else ''
......
190 191
        for k,v in ex_meta.items():
191 192
            k = '%s%s' % (prefix, k)
192 193
            headers[k] = v
193
        return self.post(path, headers=headers, params=params)
194
        return self.post(path, headers=headers)
194 195
    
195 196
    def _reset_metadata(self, path, entity, **meta):
196 197
        """
......
309 310
        h = {'Content-Type':'application/directory'}
310 311
        return self.create_zero_length_object(container, object, **h)
311 312
    
313
    def create_directory_marker(self, container, object):
314
        """creates a dierectory marker"""
315
        return self.create_object(container, object, f=None)
316
    
312 317
    def create_object(self, container, object, f=stdin, format='text', meta={},
313 318
                      etag=None, content_type=None, content_encoding=None,
314 319
                      content_disposition=None, **headers):
315
        """creates an object"""
320
        """creates a zero-length object"""
316 321
        path = '/%s/%s' % (container, object)
317 322
        for k, v  in headers.items():
318 323
            if not v:
......
328 333
        data = f.read() if f else None
329 334
        return self.put(path, data, format, headers=headers)
330 335
    
336
    def create_zero_length_object(self, container, object, meta={}, etag=None,
337
                                  content_type=None, content_encoding=None,
338
                                  content_disposition=None, **headers):
339
        args = locals()
340
        for elem in ['self', 'container', 'headers']:
341
            args.pop(elem)
342
        args.update(headers)
343
        return self.create_object(container, f=None, **args)
344
    
331 345
    def update_object(self, container, object, f=stdin, offset=None, meta={},
332 346
                      content_length=None, content_type=None,
333 347
                      content_encoding=None, content_disposition=None,
......
537 551
        params = {'update':None}
538 552
        return self.post('', headers=headers, params=params)
539 553
    
554
    def reset_account_groups(self, **groups):
555
        """overrides account groups"""
556
        headers = {}
557
        for key, val in groups.items():
558
            headers['x-account-group-%s' % key] = val
559
        meta = self.retrieve_account_metadata()
560
        headers.update(meta)
561
        return self.post('', headers=headers)
562
    
540 563
    # Storage Container Services
541 564
    
542 565
    def list_objects(self, container, format='text', limit=10000, marker=None,
......
614 637
        return self.retrieve_object_version(container, object, version='list',
615 638
                                            detail=True, **args)
616 639
    
640
    def create_zero_length_object(self, container, object, meta={},
641
                      etag=None, content_type=None, content_encoding=None,
642
                      content_disposition=None, x_object_manifest=None,
643
                      x_object_sharing=None, x_object_public=None):
644
        """createas a zero length object"""
645
        args = locals()
646
        for elem in ['self', 'container', 'object']:
647
            args.pop(elem)
648
        return OOS_Client.create_zero_length_object(self, container, object,
649
                                                    **args)
650
    
617 651
    def create_object(self, container, object, f=stdin, meta={},
618 652
                      etag=None, content_type=None, content_encoding=None,
619 653
                      content_disposition=None, x_object_manifest=None,

Also available in: Unified diff