Skip to content

Commit b803da7

Browse files
author
Matthias Gessinger
committed
Extract LinkBuilder base class
1 parent 54d9cf3 commit b803da7

File tree

2 files changed

+21
-7
lines changed

2 files changed

+21
-7
lines changed

src/Common/src/Common/SunsetLinkBuilder.cs renamed to src/Common/src/Common/LinkBuilder.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,16 @@
22

33
namespace Asp.Versioning;
44

5-
internal sealed class SunsetLinkBuilder : ILinkBuilder
5+
internal abstract class LinkBuilder : ILinkBuilder
66
{
7-
private readonly SunsetPolicyBuilder policy;
7+
protected abstract string RelationType { get; }
88
private string? language;
99
private List<string>? languages;
1010
private string? title;
1111
private string? type;
1212

13-
public SunsetLinkBuilder( SunsetPolicyBuilder policy, Uri linkTarget )
13+
public LinkBuilder( Uri linkTarget )
1414
{
15-
this.policy = policy;
1615
LinkTarget = linkTarget;
1716
}
1817

@@ -36,8 +35,6 @@ public ILinkBuilder Language( string value )
3635
return this;
3736
}
3837

39-
public ILinkBuilder Link( Uri linkTarget ) => policy.Link( linkTarget );
40-
4138
public ILinkBuilder Title( string value )
4239
{
4340
title = value;
@@ -50,9 +47,11 @@ public ILinkBuilder Type( string value )
5047
return this;
5148
}
5249

50+
public abstract ILinkBuilder Link( Uri linkTarget );
51+
5352
public LinkHeaderValue Build()
5453
{
55-
var link = new LinkHeaderValue( LinkTarget, "sunset" );
54+
var link = new LinkHeaderValue( LinkTarget, RelationType );
5655

5756
if ( title != null )
5857
{

src/Common/src/Common/SunsetPolicyBuilder.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,19 @@ public override SunsetPolicy Build()
8282

8383
return policy;
8484
}
85+
86+
private sealed class SunsetLinkBuilder : LinkBuilder, ILinkBuilder
87+
{
88+
protected override string RelationType => "sunset";
89+
90+
private readonly SunsetPolicyBuilder policyBuilder;
91+
92+
public SunsetLinkBuilder( SunsetPolicyBuilder policy, Uri linkTarget )
93+
: base( linkTarget )
94+
{
95+
policyBuilder = policy;
96+
}
97+
98+
public override ILinkBuilder Link( Uri linkTarget ) => policyBuilder.Link( linkTarget );
99+
}
85100
}

0 commit comments

Comments
 (0)