подписка
This commit is contained in:
+15
@@ -31,6 +31,21 @@ public static class InfrastructureServiceCollectionExtensions
|
||||
|
||||
services.Configure<TnsuPortalOptions>(configuration.GetSection("TnsuPortal"));
|
||||
services.AddHttpClient<TnsuPortalTokenProvider>();
|
||||
// Токен вызывающего и общая авторизация запросов к порталу — одни на всех
|
||||
// его клиентов (см. TnsuPortalCallerToken/TnsuPortalAuthorizer). Именно
|
||||
// Scoped: Hangfire даёт задаче свою область DI, и положенный в задаче токен
|
||||
// не должен протекать в соседние.
|
||||
services.AddScoped<TnsuPortalCallerToken>();
|
||||
services.AddScoped<TnsuPortalAuthorizer>();
|
||||
|
||||
// Подписка новых списков на уведомления SharePoint. Клиент отдельный от
|
||||
// ITnsuPortalClient: там кешируемые чтения справочника, здесь команда.
|
||||
// Своих опций нет — адрес приёмника лежит в SharePoint:NotificationUrl.
|
||||
services.AddHttpClient<ISharePointWebhookSubscriber, HttpSharePointWebhookSubscriber>((sp, client) =>
|
||||
{
|
||||
var options = sp.GetRequiredService<IOptions<TnsuPortalOptions>>().Value;
|
||||
client.BaseAddress = new Uri(options.BaseUrl);
|
||||
});
|
||||
// ITnsuPortalClient резолвится в CachingTnsuPortalClient (кеш на 5 минут,
|
||||
// см. её комментарий) — сам HttpTnsuPortalClient регистрируем по
|
||||
// конкретному типу, а не по интерфейсу, чтобы декоратор мог его получить
|
||||
|
||||
Reference in New Issue
Block a user