예제 #1
0
    def post(self, request):
        import uuid
        from rest_framework import status
        from rest_framework.response import Response
        from drf_to_s3 import s3
        from drf_to_s3.access_control import upload_prefix_for_request

        key = '%s/%s' % (upload_prefix_for_request(request), str(uuid.uuid4()))
        upload_uri = s3.build_signed_upload_uri(
            bucket=self.get_aws_upload_bucket(),
            key=key,
            access_key_id=self.get_aws_access_key_id(),
            secret_key=self.get_aws_secret_key(),
            expire_after_seconds=self.expire_after_seconds
        )
        data = {
            'key': key,
            'upload_uri': upload_uri,
        }
        return Response(data=data, status=status.HTTP_200_OK)
예제 #2
0
    def test_can_put_to_generated_signed_url(self):
        import os, tempfile, requests, uuid
        from drf_to_s3 import s3
        from django.conf import settings

        self.new_key = '%s/%s' % ('*****@*****.**', str(uuid.uuid4()))
        aws_access_id = os.environ['AWS_ACCESS_KEY_ID']
        secret_key = os.environ['AWS_SECRET_ACCESS_KEY']

        signed_url = s3.build_signed_upload_uri(
            bucket=self.bucket_name,
            key=self.new_key,
            access_key_id=aws_access_id,
            secret_key=secret_key,
            expire_after_seconds=60
        )

        with tempfile.NamedTemporaryFile() as f:
            f.write(os.urandom(1024))
            resp = requests.put(signed_url, data=f.read())
            self.assertEquals(resp.status_code, 200)