-
Notifications
You must be signed in to change notification settings - Fork 494
Expand file tree
/
Copy pathFunctionUrlAttributeBuilder.cs
More file actions
45 lines (36 loc) · 1.96 KB
/
FunctionUrlAttributeBuilder.cs
File metadata and controls
45 lines (36 loc) · 1.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System.Linq;
using Amazon.Lambda.Annotations.APIGateway;
using Microsoft.CodeAnalysis;
namespace Amazon.Lambda.Annotations.SourceGenerator.Models.Attributes
{
public static class FunctionUrlAttributeBuilder
{
public static FunctionUrlAttribute Build(AttributeData att)
{
var authType = att.NamedArguments.FirstOrDefault(arg => arg.Key == "AuthType").Value.Value;
var data = new FunctionUrlAttribute
{
AuthType = authType == null ? FunctionUrlAuthType.NONE : (FunctionUrlAuthType)authType
};
var allowOrigins = att.NamedArguments.FirstOrDefault(arg => arg.Key == "AllowOrigins").Value;
if (!allowOrigins.IsNull)
data.AllowOrigins = allowOrigins.Values.Select(v => v.Value as string).ToArray();
var allowMethods = att.NamedArguments.FirstOrDefault(arg => arg.Key == "AllowMethods").Value;
if (!allowMethods.IsNull)
data.AllowMethods = allowMethods.Values.Select(v => v.Value as string).ToArray();
var allowHeaders = att.NamedArguments.FirstOrDefault(arg => arg.Key == "AllowHeaders").Value;
if (!allowHeaders.IsNull)
data.AllowHeaders = allowHeaders.Values.Select(v => v.Value as string).ToArray();
var exposeHeaders = att.NamedArguments.FirstOrDefault(arg => arg.Key == "ExposeHeaders").Value;
if (!exposeHeaders.IsNull)
data.ExposeHeaders = exposeHeaders.Values.Select(v => v.Value as string).ToArray();
var allowCredentials = att.NamedArguments.FirstOrDefault(arg => arg.Key == "AllowCredentials").Value.Value;
if (allowCredentials != null)
data.AllowCredentials = (bool)allowCredentials;
var maxAge = att.NamedArguments.FirstOrDefault(arg => arg.Key == "MaxAge").Value.Value;
if (maxAge != null)
data.MaxAge = (int)maxAge;
return data;
}
}
}