Skip to content

Implement Presigned Post URLs #3902

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 27 commits into
base: development
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
1d43e08
presigned post
GarrettBeatty Jul 2, 2025
84354b2
update comments
GarrettBeatty Jul 2, 2025
0b12d72
update comments
GarrettBeatty Jul 2, 2025
d7fa60a
update comments
GarrettBeatty Jul 2, 2025
f5732f7
use public set
GarrettBeatty Jul 2, 2025
ca6fefa
add unit tests
GarrettBeatty Jul 2, 2025
56151bf
Fix duplicate fields
GarrettBeatty Jul 7, 2025
805b14d
Fix url pathing
GarrettBeatty Jul 7, 2025
78ac820
Update fields and conditions logic to match python
GarrettBeatty Jul 8, 2025
3de290a
add integration tests
GarrettBeatty Jul 8, 2025
5084f72
Revert "Update fields and conditions logic to match python"
GarrettBeatty Jul 8, 2025
300557e
update it test
GarrettBeatty Jul 8, 2025
ca23784
remove s3 express logic
GarrettBeatty Jul 8, 2025
4580173
restructre it tests
GarrettBeatty Jul 8, 2025
eb59489
add dev config
GarrettBeatty Jul 8, 2025
f2c464e
update comments
GarrettBeatty Jul 8, 2025
042a320
fix test namespace
GarrettBeatty Jul 8, 2025
7583c33
fix test namespace
GarrettBeatty Jul 8, 2025
e4bf85a
add replacement in key
GarrettBeatty Jul 9, 2025
3ef3e3b
remove async tests from netframework
GarrettBeatty Jul 9, 2025
d8b179d
Revert "remove async tests from netframework"
GarrettBeatty Jul 9, 2025
2ee4790
Remove async api check
GarrettBeatty Jul 9, 2025
3cd831d
add System.Net.Http reference
GarrettBeatty Jul 9, 2025
87acbd6
add comment
GarrettBeatty Jul 9, 2025
48a64c9
add comment
GarrettBeatty Jul 9, 2025
29a99ef
update comments
GarrettBeatty Jul 9, 2025
3b5fadd
fix build
GarrettBeatty Jul 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions generator/.DevConfigs/48cf8831-8233-4a7e-853c-5352f8ca948d.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"core": {
"updateMinimum": true,
"type": "patch",
"changeLogMessages": [
"Add CreatePresignedPostRequest endpoint resolver logic"
]
},
"services": [
{
"serviceName": "S3",
"type": "patch",
"changeLogMessages": [
"Implement presigned POST urls"
]
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ namespace ServiceClientGenerator.Generators.Endpoints
/// Class to produce the template output
/// </summary>

#line 1 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 1 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "17.0.0.0")]
public partial class EndpointResolver : BaseGenerator
{
Expand All @@ -30,7 +30,7 @@ public partial class EndpointResolver : BaseGenerator
public override string TransformText()
{

#line 7 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 7 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"

AddLicenseHeader();

Expand All @@ -40,60 +40,60 @@ public override string TransformText()
this.Write("\r\nusing System;\r\nusing System.Linq;\r\nusing System.Collections.Generic;\r\nusing Ama" +
"zon.");

#line 14 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 14 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Config.ServiceNameRoot));

#line default
#line hidden
this.Write(".Model;\r\nusing Amazon.Runtime;\r\nusing Amazon.Runtime.Internal;\r\nusing Amazon.Runt" +
"ime.Endpoints;\r\nusing Amazon.Util;\r\nusing ");

#line 19 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 19 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Config.Namespace));

#line default
#line hidden
this.Write(".Endpoints;\r\n\r\n#pragma warning disable 1591\r\n\r\nnamespace ");

#line 23 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 23 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Config.Namespace));

#line default
#line hidden
this.Write(".Internal\r\n{\r\n /// <summary>\r\n /// Amazon ");

#line 26 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 26 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.Config.ClassName));

#line default
#line hidden
this.Write(" endpoint resolver.\r\n /// Custom PipelineHandler responsible for resolving end" +
"point and setting authentication parameters for ");

#line 27 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 27 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.Config.ClassName));

#line default
#line hidden
this.Write(" service requests.\r\n /// Collects values for ");

#line 28 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 28 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.Config.ClassName));

#line default
#line hidden
this.Write("EndpointParameters and then tries to resolve endpoint by calling \r\n /// Resolv" +
"eEndpoint method on GlobalEndpoints.Provider if present, otherwise uses ");

#line 29 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 29 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.Config.ClassName));

#line default
#line hidden
this.Write("EndpointProvider.\r\n /// Responsible for setting authentication and http header" +
"s provided by resolved endpoint.\r\n /// </summary>\r\n public class Amazon");

#line 32 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 32 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Config.ClassName));

#line default
Expand All @@ -102,7 +102,7 @@ public override string TransformText()
"erviceSpecificHandler(IExecutionContext executionContext, EndpointParameters par" +
"ameters)\r\n {\r\n");

#line 36 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 36 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
if (Config.ServiceId == "S3") {

#line default
Expand All @@ -123,57 +123,57 @@ public override string TransformText()
}
");

#line 51 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 51 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
}

#line default
#line hidden
this.Write("\r\n");

#line 53 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 53 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
if (!this.dontInjectHostPrefixForServices.Contains(Config.ServiceId)) {

#line default
#line hidden
this.Write(" InjectHostPrefix(executionContext.RequestContext);\r\n");

#line 55 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 55 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
}

#line default
#line hidden
this.Write(" }\r\n\r\n protected override EndpointParameters MapEndpointsParameters" +
"(IRequestContext requestContext)\r\n {\r\n var config = (Amazon");

#line 60 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 60 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Config.ClassName));

#line default
#line hidden
this.Write("Config)requestContext.ClientConfig;\r\n var result = new ");

#line 61 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 61 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(Config.ClassName));

#line default
#line hidden
this.Write("EndpointParameters();\r\n");

#line 62 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 62 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.AssignBuiltins()));

#line default
#line hidden
this.Write("\r\n");

#line 63 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 63 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.AssignClientContext()));

#line default
#line hidden
this.Write("\r\n");

#line 64 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 64 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
if (Config.EndpointsRuleSet.parameters.ContainsKey("Region")) {

#line default
Expand Down Expand Up @@ -208,21 +208,21 @@ public override string TransformText()
");

#line 93 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 93 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
}

#line default
#line hidden

#line 94 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 94 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"

// GetACL and PutACL are deprecated in V4 and may be removed in the future


#line default
#line hidden

#line 97 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 97 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
if (Config.ClassName == "S3") {

#line default
Expand All @@ -234,6 +234,13 @@ public override string TransformText()
result.Bucket = request.BucketName;
return result;
}
// Special handling of CreatePresignedPostRequest
if (requestContext.Request.RequestName == ""CreatePresignedPostRequest"")
{
var request = (CreatePresignedPostRequest)requestContext.Request.OriginalRequest;
result.Bucket = request.BucketName;
return result;
}
if (requestContext.RequestName == ""GetACLRequest"") {
result.UseS3ExpressControlEndpoint = true;
var request = (GetACLRequest)requestContext.OriginalRequest;
Expand All @@ -248,14 +255,14 @@ public override string TransformText()
}
");

#line 117 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 124 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
}

#line default
#line hidden
this.Write("\r\n // Assign staticContextParams and contextParam per operation\r\n");

#line 120 "C:\Dev\worktrees\nosigv2\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
#line 127 "C:\dev\repos\aws-sdk-net\generator\ServiceClientGeneratorLib\Generators\Endpoints\EndpointResolver.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.AssignOperationContext()));

#line default
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,13 @@ namespace <#=Config.Namespace#>.Internal
result.Bucket = request.BucketName;
return result;
}
// Special handling of CreatePresignedPostRequest
if (requestContext.Request.RequestName == "CreatePresignedPostRequest")
{
var request = (CreatePresignedPostRequest)requestContext.Request.OriginalRequest;
result.Bucket = request.BucketName;
return result;
}
if (requestContext.RequestName == "GetACLRequest") {
result.UseS3ExpressControlEndpoint = true;
var request = (GetACLRequest)requestContext.OriginalRequest;
Expand Down
Loading