"""Raw representations of every data type in the AWS S3 service.

See Also:
    `AWS developer guide for S3
    <https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html>`_

This file is automatically generated, and should not be directly edited.
"""

from ..core import Resource

__all__ = [
    "Bucket",
    "BucketPolicy",
]


class Bucket(Resource):
    """A Bucket for S3.

    See Also:
        `AWS Cloud Formation documentation for Bucket
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html>`_
    """

    RESOURCE_TYPE = "AWS::S3::Bucket"

    RESOURCE_PROPERTIES = {
        "AccelerateConfiguration",
        "AccessControl",
        "AnalyticsConfigurations",
        "BucketEncryption",
        "BucketName",
        "CorsConfiguration",
        "InventoryConfigurations",
        "LifecycleConfiguration",
        "LoggingConfiguration",
        "MetricsConfigurations",
        "NotificationConfiguration",
        "ReplicationConfiguration",
        "Tags",
        "VersioningConfiguration",
        "WebsiteConfiguration",
    }


class BucketPolicy(Resource):
    """A Bucket Policy for S3.

    See Also:
        `AWS Cloud Formation documentation for BucketPolicy
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html>`_
    """

    RESOURCE_TYPE = "AWS::S3::BucketPolicy"

    RESOURCE_PROPERTIES = {
        "Bucket",
        "PolicyDocument",
    }
