Skip to content

Commit cdf9f8b

Browse files
author
adam.gloyne
committed
simplify principal input
1 parent 0e00170 commit cdf9f8b

File tree

4 files changed

+37
-27
lines changed

4 files changed

+37
-27
lines changed

src/LEGO.AsyncAPI.Bindings/Sns/Principal.cs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,17 @@ namespace LEGO.AsyncAPI.Bindings.Sns;
1212

1313
public class Principal : IAsyncApiElement
1414
{
15-
public Principal(IPrincipalValue value)
15+
public Principal(KeyValuePair<string, StringOrStringList> value)
1616
{
17-
this.Value = value;
17+
this.Value = new PrincipalObject(value);
1818
}
1919

20-
public IPrincipalValue Value { get; set; }
20+
public Principal()
21+
{
22+
this.Value = new PrincipalStar();
23+
}
24+
25+
public IPrincipalValue Value { get; private set; }
2126

2227
public static Principal Parse(ParseNode node)
2328
{
@@ -31,7 +36,7 @@ public static Principal Parse(ParseNode node)
3136
$"Principal value without a property name can only be a string value of '*'.");
3237
}
3338

34-
return new Principal(new PrincipalStar());
39+
return new Principal();
3540

3641
case MapNode mapNode:
3742
{
@@ -42,9 +47,9 @@ public static Principal Parse(ParseNode node)
4247
$"Node should contain a valid AWS principal property name.");
4348
}
4449

45-
IPrincipalValue principalValue = new PrincipalObject(new KeyValuePair<string, StringOrStringList>(
50+
var principalValue = new KeyValuePair<string, StringOrStringList>(
4651
propertyNode.Name,
47-
StringOrStringList.Parse(propertyNode.Value)));
52+
StringOrStringList.Parse(propertyNode.Value));
4853

4954
return new Principal(principalValue);
5055
}

src/LEGO.AsyncAPI.Bindings/Sqs/Principal.cs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,17 @@ namespace LEGO.AsyncAPI.Bindings.Sqs;
1212

1313
public class Principal : IAsyncApiElement
1414
{
15-
public Principal(IPrincipalValue value)
15+
public Principal(KeyValuePair<string, StringOrStringList> value)
1616
{
17-
this.Value = value;
17+
this.Value = new PrincipalObject(value);
1818
}
1919

20-
public IPrincipalValue Value { get; set; }
20+
public Principal()
21+
{
22+
this.Value = new PrincipalStar();
23+
}
24+
25+
public IPrincipalValue Value { get; private set; }
2126

2227
public static Principal Parse(ParseNode node)
2328
{
@@ -31,7 +36,7 @@ public static Principal Parse(ParseNode node)
3136
$"Principal value without a property name can only be a string value of '*'.");
3237
}
3338

34-
return new Principal(new PrincipalStar());
39+
return new Principal();
3540

3641
case MapNode mapNode:
3742
{
@@ -42,9 +47,9 @@ public static Principal Parse(ParseNode node)
4247
$"Node should contain a valid AWS principal property name.");
4348
}
4449

45-
IPrincipalValue principalValue = new PrincipalObject(new KeyValuePair<string, StringOrStringList>(
50+
var principalValue = new KeyValuePair<string, StringOrStringList>(
4651
propertyNode.Name,
47-
StringOrStringList.Parse(propertyNode.Value)));
52+
StringOrStringList.Parse(propertyNode.Value));
4853

4954
return new Principal(principalValue);
5055
}

test/LEGO.AsyncAPI.Tests/Bindings/Sns/SnsBindings_Should.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public void SnsChannelBinding_WithFilledObject_SerializesAndDeserializes()
8686
new Statement()
8787
{
8888
Effect = Effect.Deny,
89-
Principal = new Principal(new PrincipalStar()),
89+
Principal = new Principal(),
9090
Action = new StringOrStringList(new AsyncApiAny(new List<string>()
9191
{
9292
"sns:Publish",
@@ -105,9 +105,9 @@ public void SnsChannelBinding_WithFilledObject_SerializesAndDeserializes()
105105
new Statement()
106106
{
107107
Effect = Effect.Allow,
108-
Principal = new Principal(new PrincipalObject(new KeyValuePair<string, StringOrStringList>(
108+
Principal = new Principal(new KeyValuePair<string, StringOrStringList>(
109109
"AWS", new StringOrStringList(new AsyncApiAny(new List<string>
110-
{ "arn:aws:iam::123456789012:user/alex.wichmann", "arn:aws:iam::123456789012:user/dec.kolakowski" }))))),
110+
{ "arn:aws:iam::123456789012:user/alex.wichmann", "arn:aws:iam::123456789012:user/dec.kolakowski" })))),
111111
Action = new StringOrStringList(new AsyncApiAny("sns:Create")),
112112
Condition = new AsyncApiAny(new Dictionary<string, object>()
113113
{

test/LEGO.AsyncAPI.Tests/Bindings/Sqs/SqsBindings_should.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,8 @@ public void SqsChannelBinding_WithFilledObject_SerializesAndDeserializes()
136136
new Statement()
137137
{
138138
Effect = Effect.Deny,
139-
Principal = new Principal(new PrincipalObject(new KeyValuePair<string, StringOrStringList>(
140-
"AWS", new StringOrStringList(new AsyncApiAny("arn:aws:iam::123456789012:user/alex.wichmann"))))),
139+
Principal = new Principal(new KeyValuePair<string, StringOrStringList>(
140+
"AWS", new StringOrStringList(new AsyncApiAny("arn:aws:iam::123456789012:user/alex.wichmann")))),
141141
Action = new StringOrStringList(new AsyncApiAny(new List<string>
142142
{
143143
"sqs:SendMessage",
@@ -166,9 +166,9 @@ public void SqsChannelBinding_WithFilledObject_SerializesAndDeserializes()
166166
new Statement()
167167
{
168168
Effect = Effect.Allow,
169-
Principal = new Principal(new PrincipalObject(new KeyValuePair<string, StringOrStringList>(
169+
Principal = new Principal(new KeyValuePair<string, StringOrStringList>(
170170
"AWS", new StringOrStringList(new AsyncApiAny(new List<string>
171-
{ "arn:aws:iam::123456789012:user/alex.wichmann", "arn:aws:iam::123456789012:user/dec.kolakowski" }))))),
171+
{ "arn:aws:iam::123456789012:user/alex.wichmann", "arn:aws:iam::123456789012:user/dec.kolakowski" })))),
172172
Action = new StringOrStringList(new AsyncApiAny("sqs:CreateQueue")),
173173
Condition = new AsyncApiAny(new Dictionary<string, object>()
174174
{
@@ -223,8 +223,8 @@ public void SqsChannelBinding_WithFilledObject_SerializesAndDeserializes()
223223
new Statement()
224224
{
225225
Effect = Effect.Allow,
226-
Principal = new Principal(new PrincipalObject(new KeyValuePair<string, StringOrStringList>(
227-
"Service", new StringOrStringList(new AsyncApiAny("s3.amazonaws.com"))))),
226+
Principal = new Principal(new KeyValuePair<string, StringOrStringList>(
227+
"Service", new StringOrStringList(new AsyncApiAny("s3.amazonaws.com")))),
228228
Action = new StringOrStringList(new AsyncApiAny(new List<string>
229229
{
230230
"sqs:*",
@@ -377,8 +377,8 @@ public void SqsOperationBinding_WithFilledObject_SerializesAndDeserializes()
377377
new Statement()
378378
{
379379
Effect = Effect.Deny,
380-
Principal = new Principal(new PrincipalObject(new KeyValuePair<string, StringOrStringList>(
381-
"AWS", new StringOrStringList(new AsyncApiAny("arn:aws:iam::123456789012:user/alex.wichmann"))))),
380+
Principal = new Principal(new KeyValuePair<string, StringOrStringList>(
381+
"AWS", new StringOrStringList(new AsyncApiAny("arn:aws:iam::123456789012:user/alex.wichmann")))),
382382
Action = new StringOrStringList(new AsyncApiAny(new List<string>()
383383
{
384384
"sqs:SendMessage",
@@ -398,9 +398,9 @@ public void SqsOperationBinding_WithFilledObject_SerializesAndDeserializes()
398398
new Statement()
399399
{
400400
Effect = Effect.Allow,
401-
Principal = new Principal(new PrincipalObject(new KeyValuePair<string, StringOrStringList>(
401+
Principal = new Principal(new KeyValuePair<string, StringOrStringList>(
402402
"AWS", new StringOrStringList(new AsyncApiAny(new List<string>
403-
{ "arn:aws:iam::123456789012:user/alex.wichmann", "arn:aws:iam::123456789012:user/dec.kolakowski" }))))),
403+
{ "arn:aws:iam::123456789012:user/alex.wichmann", "arn:aws:iam::123456789012:user/dec.kolakowski" })))),
404404
Action = new StringOrStringList(new AsyncApiAny("sqs:CreateQueue")),
405405
},
406406
},
@@ -446,8 +446,8 @@ public void SqsOperationBinding_WithFilledObject_SerializesAndDeserializes()
446446
new Statement()
447447
{
448448
Effect = Effect.Allow,
449-
Principal = new Principal(new PrincipalObject(new KeyValuePair<string, StringOrStringList>(
450-
"AWS", new StringOrStringList(new AsyncApiAny("arn:aws:iam::123456789012:user/alex.wichmann"))))),
449+
Principal = new Principal(new KeyValuePair<string, StringOrStringList>(
450+
"AWS", new StringOrStringList(new AsyncApiAny("arn:aws:iam::123456789012:user/alex.wichmann")))),
451451
Action = new StringOrStringList(new AsyncApiAny(new List<string>
452452
{
453453
"sqs:*",

0 commit comments

Comments
 (0)