Skip to content

Commit 33526f0

Browse files
committed
Refactor usages
1 parent 6560b09 commit 33526f0

File tree

11 files changed

+47
-19
lines changed

11 files changed

+47
-19
lines changed

src/Elastic.Documentation.LinkIndex/LinkIndexProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public interface ILinkIndexProvider
1616
Task<LinkReference> GetLinkReference(string key, Cancel cancellationToken = default);
1717
}
1818

19-
public class AwsS3LinkIndexProvider(IAmazonS3 s3Client, string bucketName, string registryKey) : ILinkIndexProvider
19+
public class AwsS3LinkIndexProvider(IAmazonS3 s3Client, string bucketName = "elastic-docs-link-index", string registryKey = "link-index.json") : ILinkIndexProvider
2020
{
2121
public async Task<LinkReferenceRegistry> GetLinkIndex(Cancel cancellationToken = default)
2222
{

src/Elastic.Markdown/Elastic.Markdown.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
</ItemGroup>
6565

6666
<ItemGroup>
67+
<ProjectReference Include="..\Elastic.Documentation.LinkIndex\Elastic.Documentation.LinkIndex.csproj" />
6768
<ProjectReference Include="..\Elastic.Documentation\Elastic.Documentation.csproj" />
6869
<ProjectReference Include="..\Elastic.Documentation.Configuration\Elastic.Documentation.Configuration.csproj" />
6970
</ItemGroup>

src/Elastic.Markdown/IO/DocumentationSet.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
using System.Collections.Frozen;
66
using System.IO.Abstractions;
77
using System.Runtime.InteropServices;
8+
using Amazon.S3;
89
using Elastic.Documentation;
910
using Elastic.Documentation.Configuration.Builder;
1011
using Elastic.Documentation.Configuration.TableOfContents;
12+
using Elastic.Documentation.LinkIndex;
1113
using Elastic.Documentation.Links;
1214
using Elastic.Markdown.Diagnostics;
1315
using Elastic.Markdown.Extensions;
@@ -121,12 +123,16 @@ public DocumentationSet(
121123
TableOfContentsTreeCollector? treeCollector = null
122124
)
123125
{
126+
127+
var s3client = new AmazonS3Client();
128+
var linkIndexProvider = new AwsS3LinkIndexProvider(s3client);
129+
124130
Context = context;
125131
Source = ContentSourceMoniker.Create(context.Git.RepositoryName, null);
126132
SourceDirectory = context.DocumentationSourceDirectory;
127133
OutputDirectory = context.DocumentationOutputDirectory;
128134
LinkResolver =
129-
linkResolver ?? new CrossLinkResolver(new ConfigurationCrossLinkFetcher(context.Configuration, logger));
135+
linkResolver ?? new CrossLinkResolver(new ConfigurationCrossLinkFetcher(context.Configuration, linkIndexProvider, logger));
130136
Configuration = context.Configuration;
131137
EnabledExtensions = InstantiateExtensions();
132138
treeCollector ??= new TableOfContentsTreeCollector();

src/Elastic.Markdown/Links/CrossLinks/ConfigurationCrossLinkFetcher.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@
55
using System.Collections.Frozen;
66
using Elastic.Documentation;
77
using Elastic.Documentation.Configuration.Builder;
8+
using Elastic.Documentation.LinkIndex;
89
using Elastic.Documentation.Links;
910
using Microsoft.Extensions.Logging;
1011

1112
namespace Elastic.Markdown.Links.CrossLinks;
1213

13-
public class ConfigurationCrossLinkFetcher(ConfigurationFile configuration, ILoggerFactory logger) : CrossLinkFetcher(logger)
14+
public class ConfigurationCrossLinkFetcher(ConfigurationFile configuration, ILinkIndexProvider linkIndexProvider, ILoggerFactory logger) : CrossLinkFetcher(linkIndexProvider, logger)
1415
{
1516
public override async Task<FetchedCrossLinks> Fetch(Cancel ctx)
1617
{

src/Elastic.Markdown/Links/CrossLinks/CrossLinkFetcher.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Collections.Frozen;
66
using System.Text.Json;
77
using Elastic.Documentation;
8+
using Elastic.Documentation.LinkIndex;
89
using Elastic.Documentation.Links;
910
using Elastic.Documentation.Serialization;
1011
using Elastic.Markdown.IO;
@@ -31,7 +32,7 @@ public record FetchedCrossLinks
3132
};
3233
}
3334

34-
public abstract class CrossLinkFetcher(ILoggerFactory logger) : IDisposable
35+
public abstract class CrossLinkFetcher(ILinkIndexProvider linkIndexProvider, ILoggerFactory logger) : IDisposable
3536
{
3637
public const string RegistryUrl = $"https://elastic-docs-link-index.s3.us-east-2.amazonaws.com/link-index.json";
3738
private readonly ILogger _logger = logger.CreateLogger(nameof(CrossLinkFetcher));
@@ -51,9 +52,8 @@ public async Task<LinkReferenceRegistry> FetchLinkIndex(Cancel ctx)
5152
return _linkIndex;
5253
}
5354

54-
_logger.LogInformation("Fetching {Url}", RegistryUrl);
55-
var json = await _client.GetStringAsync(RegistryUrl, ctx);
56-
_linkIndex = LinkReferenceRegistry.Deserialize(json);
55+
_logger.LogInformation("Getting link index");
56+
_linkIndex = await linkIndexProvider.GetLinkIndex(ctx);
5757
return _linkIndex;
5858
}
5959

src/Elastic.Markdown/Links/InboundLinks/LinkIndexCrossLinkFetcher.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44

55
using System.Collections.Frozen;
66
using Elastic.Documentation;
7+
using Elastic.Documentation.LinkIndex;
78
using Elastic.Documentation.Links;
89
using Elastic.Markdown.Links.CrossLinks;
910
using Microsoft.Extensions.Logging;
1011

1112
namespace Elastic.Markdown.Links.InboundLinks;
1213

13-
public class LinksIndexCrossLinkFetcher(ILoggerFactory logger) : CrossLinkFetcher(logger)
14+
public class LinksIndexCrossLinkFetcher(ILinkIndexProvider linkIndexProvider, ILoggerFactory logger) : CrossLinkFetcher(linkIndexProvider, logger)
1415
{
1516
public override async Task<FetchedCrossLinks> Fetch(Cancel ctx)
1617
{

src/Elastic.Markdown/Links/InboundLinks/LinkIndexLinkChecker.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
33
// See the LICENSE file in the project root for more information
44

5+
using Amazon.S3;
56
using Elastic.Documentation;
67
using Elastic.Documentation.Diagnostics;
8+
using Elastic.Documentation.LinkIndex;
79
using Elastic.Documentation.Links;
810
using Elastic.Markdown.IO;
911
using Elastic.Markdown.Links.CrossLinks;
@@ -25,7 +27,9 @@ private sealed record RepositoryFilter
2527

2628
public async Task CheckAll(IDiagnosticsCollector collector, Cancel ctx)
2729
{
28-
var fetcher = new LinksIndexCrossLinkFetcher(logger);
30+
var s3Client = new AmazonS3Client();
31+
var linkIndexProvider = new AwsS3LinkIndexProvider(s3Client);
32+
var fetcher = new LinksIndexCrossLinkFetcher(linkIndexProvider, logger);
2933
var resolver = new CrossLinkResolver(fetcher);
3034
var crossLinks = await resolver.FetchLinks(ctx);
3135

@@ -34,7 +38,9 @@ public async Task CheckAll(IDiagnosticsCollector collector, Cancel ctx)
3438

3539
public async Task CheckRepository(IDiagnosticsCollector collector, string? toRepository, string? fromRepository, Cancel ctx)
3640
{
37-
var fetcher = new LinksIndexCrossLinkFetcher(logger);
41+
var s3Client = new AmazonS3Client();
42+
var linkIndexProvider = new AwsS3LinkIndexProvider(s3Client);
43+
var fetcher = new LinksIndexCrossLinkFetcher(linkIndexProvider, logger);
3844
var resolver = new CrossLinkResolver(fetcher);
3945
var crossLinks = await resolver.FetchLinks(ctx);
4046
var filter = new RepositoryFilter
@@ -48,7 +54,9 @@ public async Task CheckRepository(IDiagnosticsCollector collector, string? toRep
4854

4955
public async Task CheckWithLocalLinksJson(IDiagnosticsCollector collector, string repository, string localLinksJson, Cancel ctx)
5056
{
51-
var fetcher = new LinksIndexCrossLinkFetcher(logger);
57+
var s3Client = new AmazonS3Client();
58+
var linkIndexProvider = new AwsS3LinkIndexProvider(s3Client);
59+
var fetcher = new LinksIndexCrossLinkFetcher(linkIndexProvider, logger);
5260
var resolver = new CrossLinkResolver(fetcher);
5361
// ReSharper disable once RedundantAssignment
5462
var crossLinks = await resolver.FetchLinks(ctx);

src/tooling/docs-assembler/AssembleSources.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44

55
using System.Collections.Frozen;
66
using System.IO.Abstractions;
7+
using Amazon.S3;
78
using Documentation.Assembler.Building;
89
using Documentation.Assembler.Navigation;
910
using Documentation.Assembler.Sourcing;
1011
using Elastic.Documentation;
1112
using Elastic.Documentation.Configuration;
1213
using Elastic.Documentation.Configuration.Assembler;
1314
using Elastic.Documentation.Configuration.Builder;
15+
using Elastic.Documentation.LinkIndex;
1416
using Elastic.Markdown.IO.Navigation;
1517
using Elastic.Markdown.Links.CrossLinks;
1618
using Microsoft.Extensions.Logging.Abstractions;
@@ -60,8 +62,9 @@ private AssembleSources(AssembleContext assembleContext, Checkout[] checkouts)
6062
AssembleContext = assembleContext;
6163
TocTopLevelMappings = GetConfiguredSources(assembleContext);
6264
HistoryMappings = GetHistoryMapping(assembleContext);
63-
64-
var crossLinkFetcher = new AssemblerCrossLinkFetcher(NullLoggerFactory.Instance, assembleContext.Configuration, assembleContext.Environment);
65+
var s3Client = new AmazonS3Client();
66+
var linkIndexProvider = new AwsS3LinkIndexProvider(s3Client);
67+
var crossLinkFetcher = new AssemblerCrossLinkFetcher(NullLoggerFactory.Instance, assembleContext.Configuration, assembleContext.Environment, linkIndexProvider);
6568
UriResolver = new PublishEnvironmentUriResolver(TocTopLevelMappings, assembleContext.Environment);
6669
var crossLinkResolver = new CrossLinkResolver(crossLinkFetcher, UriResolver);
6770
AssembleSets = checkouts

src/tooling/docs-assembler/Building/AssemblerCrossLinkFetcher.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@
33
// See the LICENSE file in the project root for more information
44

55
using System.Collections.Frozen;
6-
using Elastic.Documentation;
76
using Elastic.Documentation.Configuration.Assembler;
7+
using Elastic.Documentation.LinkIndex;
88
using Elastic.Documentation.Links;
99
using Elastic.Markdown.Links.CrossLinks;
1010
using Microsoft.Extensions.Logging;
1111

1212
namespace Documentation.Assembler.Building;
1313

14-
public class AssemblerCrossLinkFetcher(ILoggerFactory logger, AssemblyConfiguration configuration, PublishEnvironment publishEnvironment)
15-
: CrossLinkFetcher(logger)
14+
public class AssemblerCrossLinkFetcher(ILoggerFactory logger, AssemblyConfiguration configuration, PublishEnvironment publishEnvironment, ILinkIndexProvider linkIndexProvider)
15+
: CrossLinkFetcher(linkIndexProvider, logger)
1616
{
1717
public override async Task<FetchedCrossLinks> Fetch(Cancel ctx)
1818
{

src/tooling/docs-assembler/Cli/ContentSourceCommands.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
using System.Diagnostics.CodeAnalysis;
66
using System.IO.Abstractions;
77
using Actions.Core.Services;
8+
using Amazon.S3;
89
using ConsoleAppFramework;
910
using Documentation.Assembler.Building;
1011
using Elastic.Documentation.Configuration.Assembler;
12+
using Elastic.Documentation.LinkIndex;
1113
using Elastic.Documentation.Tooling.Diagnostics.Console;
1214
using Elastic.Markdown.Links.CrossLinks;
1315
using Microsoft.Extensions.Logging;
@@ -41,15 +43,17 @@ public async Task<int> Validate(Cancel ctx = default)
4143
Force = false,
4244
AllowIndexing = false
4345
};
44-
var fetcher = new AssemblerCrossLinkFetcher(logFactory, context.Configuration, context.Environment);
46+
var s3Client = new AmazonS3Client();
47+
var linkIndexProvider = new AwsS3LinkIndexProvider(s3Client);
48+
var fetcher = new AssemblerCrossLinkFetcher(logFactory, context.Configuration, context.Environment, linkIndexProvider);
4549
var links = await fetcher.FetchLinkIndex(ctx);
4650
var repositories = context.Configuration.ReferenceRepositories.Values.Concat<Repository>([context.Configuration.Narrative]).ToList();
4751

4852
foreach (var repository in repositories)
4953
{
5054
if (!links.Repositories.TryGetValue(repository.Name, out var registryMapping))
5155
{
52-
collector.EmitError(context.ConfigurationPath, $"'{repository}' does not exist in {CrossLinkFetcher.RegistryUrl}");
56+
collector.EmitError(context.ConfigurationPath, $"'{repository}' does not exist in link index");
5357
continue;
5458
}
5559

0 commit comments

Comments
 (0)