< Summary

Information
Class: Chronicis.Client.Extensions.ApplicationServiceExtensions
Assembly: Chronicis.Client
File(s): /home/runner/work/chronicis/chronicis/src/Chronicis.Client/Extensions/ApplicationServiceExtensions.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 47
Coverable lines: 47
Total lines: 78
Line coverage: 0%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
AddChronicisApplicationServices(...)100%210%

File(s)

/home/runner/work/chronicis/chronicis/src/Chronicis.Client/Extensions/ApplicationServiceExtensions.cs

#LineLine coverage
 1using Chronicis.Client.Services;
 2
 3namespace Chronicis.Client.Extensions;
 4
 5/// <summary>
 6/// Extension methods for registering application services.
 7/// </summary>
 8public static class ApplicationServiceExtensions
 9{
 10    /// <summary>
 11    /// Adds all Chronicis application services including API services,
 12    /// state services, and domain services.
 13    /// </summary>
 14    public static IServiceCollection AddChronicisApplicationServices(this IServiceCollection services)
 15    {
 16        // API Services - use the authenticated "ChronicisApi" client
 017        services.AddChronicisApiService<IArticleApiService, ArticleApiService>();
 018        services.AddChronicisApiService<ISearchApiService, SearchApiService>();
 019        services.AddChronicisApiService<IAISummaryApiService, AISummaryApiService>();
 020        services.AddChronicisApiService<IWorldApiService, WorldApiService>();
 021        services.AddChronicisApiService<ICampaignApiService, CampaignApiService>();
 022        services.AddChronicisApiService<IArcApiService, ArcApiService>();
 023        services.AddChronicisApiService<ILinkApiService, LinkApiService>();
 024        services.AddChronicisApiService<IArticleExternalLinkApiService, ArticleExternalLinkApiService>();
 025        services.AddChronicisApiService<IExternalLinkApiService, ExternalLinkApiService>();
 026        services.AddChronicisApiService<IUserApiService, UserApiService>();
 027        services.AddChronicisApiService<ICharacterApiService, CharacterApiService>();
 028        services.AddChronicisApiService<IDashboardApiService, DashboardApiService>();
 029        services.AddChronicisApiService<IResourceProviderApiService, ResourceProviderApiService>();
 30
 31        // API services with special dependencies
 032        services.AddChronicisApiServiceWithSnackbar<IQuestApiService, QuestApiService>();
 033        services.AddChronicisApiServiceWithJSRuntime<IExportApiService, ExportApiService>();
 34
 35        // Public API service (uses unauthenticated client)
 036        services.AddScoped<IPublicApiService>(sp =>
 037        {
 038            var factory = sp.GetRequiredService<IHttpClientFactory>();
 039            var logger = sp.GetRequiredService<ILogger<PublicApiService>>();
 040            return new PublicApiService(factory.CreateClient("ChronicisPublicApi"), logger);
 041        });
 42
 43        // Health Status API service (uses unauthenticated client since health endpoints are public)
 044        services.AddScoped<IHealthStatusApiService>(sp =>
 045        {
 046            var factory = sp.GetRequiredService<IHttpClientFactory>();
 047            var logger = sp.GetRequiredService<ILogger<HealthStatusApiService>>();
 048            return new HealthStatusApiService(factory.CreateClient("ChronicisPublicApi"), logger);
 049        });
 50
 51        // State & coordination services
 052        services.AddScoped<ITreeStateService, TreeStateService>();
 053        services.AddScoped<IAuthService, AuthService>();
 054        services.AddScoped<IAdminAuthService, AdminAuthService>();
 055        services.AddScoped<IAppContextService, AppContextService>();
 056        services.AddScoped<IMetadataDrawerService, MetadataDrawerService>();
 057        services.AddScoped<IQuestDrawerService, QuestDrawerService>();
 058        services.AddScoped<IKeyboardShortcutService, KeyboardShortcutService>();
 59
 60        // Domain services
 061        services.AddScoped<IArticleCacheService, ArticleCacheService>();
 062        services.AddScoped<IWikiLinkService, WikiLinkService>();
 063        services.AddScoped<IWikiLinkAutocompleteService, WikiLinkAutocompleteService>();
 064        services.AddScoped<IBreadcrumbService, BreadcrumbService>();
 065        services.AddScoped<IMarkdownService, MarkdownService>();
 66
 67        // Render definition service (loads from wwwroot static assets via base URI)
 068        services.AddScoped<IRenderDefinitionService>(sp =>
 069        {
 070            var navigationManager = sp.GetRequiredService<Microsoft.AspNetCore.Components.NavigationManager>();
 071            var http = new HttpClient { BaseAddress = new Uri(navigationManager.BaseUri) };
 072            var logger = sp.GetRequiredService<ILogger<RenderDefinitionService>>();
 073            return new RenderDefinitionService(http, logger);
 074        });
 75
 076        return services;
 77    }
 78}