Revision a4c10cbc pithos/lib/client.py

b/pithos/lib/client.py
1
# Copyright 2011 GRNET S.A. All rights reserved.
2
# 
3
# Redistribution and use in source and binary forms, with or
4
# without modification, are permitted provided that the following
5
# conditions are met:
6
# 
7
#   1. Redistributions of source code must retain the above
8
#      copyright notice, this list of conditions and the following
9
#      disclaimer.
10
# 
11
#   2. Redistributions in binary form must reproduce the above
12
#      copyright notice, this list of conditions and the following
13
#      disclaimer in the documentation and/or other materials
14
#      provided with the distribution.
15
# 
16
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
# POSSIBILITY OF SUCH DAMAGE.
28
# 
29
# The views and conclusions contained in the software and
30
# documentation are those of the authors and should not be
31
# interpreted as representing official policies, either expressed
32
# or implied, of GRNET S.A.
33

  
1 34
from httplib import HTTPConnection, HTTP
2 35
from sys import stdin
3 36

  
......
225 258
    
226 259
    # Storage Container Services
227 260
    
228
    def list_objects(self, container, detail=False, params=None, headers=None):
229
        return self._list('/' + container, detail, params, headers)
261
    def _filter(self, l, d):
262
        """
263
        filter out from l elements having the metadata values provided
264
        """
265
        ll = l
266
        for elem in l:
267
            if type(elem) == types.DictionaryType:
268
                for key in d.keys():
269
                    k = 'x_object_meta_%s' % key
270
                    if k in elem.keys() and elem[k] == d[key]:
271
                        ll.remove(elem)
272
                        break
273
        return ll
274
    
275
    def _filter_trashed(self, l):
276
        return self._filter(l, {'trash':'true'})
277
    
278
    def list_objects(self, container, detail=False, params=None, headers=None,
279
                     include_trashed=False):
280
        l = self._list('/' + container, detail, params, headers)
281
        if not include_trashed:
282
            l = self._filter_trashed(l)
283
        return l
230 284
    
231 285
    def create_container(self, container, headers=None):
232 286
        status, header, data = self.put('/' + container, headers=headers)

Also available in: Unified diff