diff options
author | Jenkins <jenkins@review.openstack.org> | 2014-02-27 04:52:59 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2014-02-27 04:52:59 +0000 |
commit | 6cc1324e6e999317739f8307f75d421df8081601 (patch) | |
tree | 0514fe5fa42ddc98e5b4c768d89865b165001590 /swiftclient/utils.py | |
parent | cfddbde81f135261165ecad8c56c90cb5be55ba4 (diff) | |
parent | 3d35a3e989a180b3785b4f259a03c09eed32a14d (diff) | |
download | python-swiftclient-6cc1324e6e999317739f8307f75d421df8081601.tar.gz |
Merge "Add LengthWrapper in put_object to honor content_length param"
Diffstat (limited to 'swiftclient/utils.py')
-rw-r--r-- | swiftclient/utils.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/swiftclient/utils.py b/swiftclient/utils.py index a038dcc..5095f9d 100644 --- a/swiftclient/utils.py +++ b/swiftclient/utils.py @@ -55,3 +55,21 @@ def prt_bytes(bytes, human_flag): bytes = '%12s' % bytes return(bytes) + + +class LengthWrapper(object): + + def __init__(self, readable, length): + self._length = self._remaining = length + self._readable = readable + + def __len__(self): + return self._length + + def read(self, *args, **kwargs): + if self._remaining <= 0: + return '' + chunk = self._readable.read( + *args, **kwargs)[:self._remaining] + self._remaining -= len(chunk) + return chunk |