moto/moto/s3/models.py

58 lines
1.3 KiB
Python
Raw Normal View History

2013-02-18 21:09:40 +00:00
# from boto.s3.bucket import Bucket
# from boto.s3.key import Key
import md5
from moto.core import BaseBackend
class FakeKey(object):
def __init__(self, name, value):
self.name = name
self.value = value
@property
def etag(self):
value_md5 = md5.new()
value_md5.update(self.value)
return '"{0}"'.format(value_md5.hexdigest())
class FakeBucket(object):
def __init__(self, name):
self.name = name
self.keys = []
class MockS3(BaseBackend):
base_url = "https://(.+).s3.amazonaws.com"
def __init__(self):
self.buckets = {}
def create_bucket(self, bucket_name):
new_bucket = FakeBucket(name=bucket_name)
self.buckets[bucket_name] = new_bucket
return new_bucket
def get_bucket(self, bucket_name):
return self.buckets.get(bucket_name)
def set_key(self, bucket_name, key_name, value):
bucket = self.buckets[bucket_name]
new_key = FakeKey(name=key_name, value=value)
bucket.keys.append(new_key)
return new_key
def get_key(self, bucket_name, key_name):
bucket = self.buckets[bucket_name]
found_key = None
for key in bucket.keys:
if key.name == key_name:
found_key = key
break
return found_key
s3_backend = MockS3()