Example #1
0
def _create_presigned_post_policy(bucket_name, content_id, mimetype, size):
    from datetime import datetime, timedelta
    from minio import PostPolicy

    post_policy = PostPolicy()
    post_policy.set_bucket_name(bucket_name)
    post_policy.set_key_startswith(content_id)
    post_policy.set_content_length_range(size, size)
    post_policy.set_content_type(mimetype)
    expires_date = datetime.utcnow() + timedelta(days=1)
    post_policy.set_expires(expires_date)
    post_policy.append_policy('eq', '$acl', 'bucket-owner-full-control')

    return post_policy
Example #2
0
    def post_object(self, bucket_name, object_name=None, content_type=None):
        post_policy = PostPolicy()
        post_policy.set_bucket_name(bucket_name)

        if object_name:
            post_policy.set_key(object_name)

        if content_type:
            post_policy.set_content_type(content_type)

        post_policy.set_content_length_range(0, 1024000)
        expires_date = datetime.utcnow() + timedelta(days=10)
        post_policy.set_expires(expires_date)
        return self.minioClient.presigned_post_policy(post_policy)
Example #3
0
    def generate_container_upload_url(
        self,
        container: Container,
        blob_name: str,
        expires: int = 3600,
        acl: str = None,
        meta_data: MetaData = None,
        content_disposition: str = None,
        content_length: ContentLength = None,
        content_type: str = None,
        cache_control: str = None,
        extra: ExtraOptions = None,
    ) -> FormPost:
        if content_disposition:
            logger.warning(messages.OPTION_NOT_SUPPORTED, "content_disposition")

        if cache_control:
            logger.warning(messages.OPTION_NOT_SUPPORTED, "cache_control")

        meta_data = {} if meta_data is None else meta_data

        post_policy = PostPolicy()
        post_policy.set_bucket_name(container.name)
        post_policy.set_key_startswith(blob_name)

        if content_length:
            min_range, max_range = content_length
            post_policy.set_content_length_range(min_range, max_range)

        if content_type:
            post_policy.set_content_type(content_type)

        for meta_name, meta_value in meta_data.items():
            meta_name = self._OBJECT_META_PREFIX + meta_name
            post_policy.policies.append(("eq", "$%s" % meta_name, meta_value))
            post_policy.form_data[meta_name] = meta_value

        expires_date = datetime.utcnow() + timedelta(seconds=expires)
        post_policy.set_expires(expires_date)

        url, fields = self.client.presigned_post_policy(post_policy)
        return {"url": url, "fields": fields}