using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;

return await Deployment.RunAsync(() => 
{
    var myBucket = new Aws.S3.Bucket("myBucket", new()
    {
        Website = new Aws.S3.Inputs.BucketWebsiteArgs
        {
            IndexDocument = "index.html",
        },
    });

    var ownershipControls = new Aws.S3.BucketOwnershipControls("ownershipControls", new()
    {
        Bucket = myBucket.Id,
        Rule = new Aws.S3.Inputs.BucketOwnershipControlsRuleArgs
        {
            ObjectOwnership = "ObjectWriter",
        },
    });

    var publicAccessBlock = new Aws.S3.BucketPublicAccessBlock("publicAccessBlock", new()
    {
        Bucket = myBucket.Id,
        BlockPublicAcls = false,
    });

    var indexHtml = new Aws.S3.BucketObject("index.html", new()
    {
        Bucket = myBucket.Id,
        Source = new FileAsset("./index.html"),
        ContentType = "text/html",
        Acl = "public-read",
    }, new CustomResourceOptions
    {
        DependsOn =
        {
            publicAccessBlock,
            ownershipControls,
        },
    });

    return new Dictionary<string, object?>
    {
        ["bucketName"] = myBucket.Id,
        ["bucketEndpoint"] = myBucket.WebsiteEndpoint.Apply(websiteEndpoint => $"http://{websiteEndpoint}"),
    };
});