Files
MeWeb/src/MeWeb.App/AppServices.cs
T

35 lines
1.3 KiB
C#
Raw Normal View History

using MeWeb.App.ViewModels;
using MeWeb.Core.Checks;
using MeWeb.Core.History;
using MeWeb.Core.Knowledge;
using MeWeb.Core.Net;
using MeWeb.Shared;
using Microsoft.Extensions.DependencyInjection;
namespace MeWeb.App;
public static class AppServices
{
public const string Secure = "secure";
public const string Plain = "plain";
public static IServiceCollection AddMeWebApp(this IServiceCollection services, IPlatform platform)
{
var agent = $"me-web/{BuildInfo.Version}";
services.AddHttpClient(Secure, http => http.DefaultRequestHeaders.UserAgent.ParseAdd(agent));
services.AddHttpClient(Plain, http => http.DefaultRequestHeaders.UserAgent.ParseAdd(agent))
.ConfigurePrimaryHttpMessageHandler(() => new SocketsHttpHandler { AllowAutoRedirect = false });
services.AddSingleton(platform);
services.AddSingleton(sp =>
{
var factory = sp.GetRequiredService<IHttpClientFactory>();
return new ServerProbe(factory.CreateClient(Secure), factory.CreateClient(Plain));
});
services.AddSingleton<KnowledgeBase>();
services.AddSingleton(new HistoryStore(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "MeWeb")));
services.AddSingleton<CheckRunner>();
services.AddTransient<MainViewModel>();
return services;
}
}