/// <summary>
 ///   Inietta la dipendenze necessarie.
 /// </summary>
 /// <param name="authorizationSettings">Le impostazioni legate al server di OAuth2.</param>
 /// <param name="log">Istanza del log per questo filtro.</param>
 /// <param name="clock">L'orologio di sistema.</param>
 public IdnSrvOAuth2AccessTokenRefresher(OAuth2AuthorizationSettings authorizationSettings, ICaravanLog log, IClock clock)
 {
     Raise.ArgumentNullException.IfIsNull(authorizationSettings, nameof(authorizationSettings));
     Raise.ArgumentNullException.IfIsNull(log, nameof(log));
     Raise.ArgumentNullException.IfIsNull(clock, nameof(clock));
     AuthorizationSettings = authorizationSettings;
     _log = log;
     _clock = clock;
 }
        /// <summary>
        ///   Inizializza il componente usato per la compressione.
        /// </summary>
        /// <param name="next">Un riferimento al prossimo componente della pipeline.</param>
        /// <param name="settings">Le impostazioni del componente.</param>
        /// <param name="log">Il log su cui scrivere eventuali messaggi.</param>
        /// <param name="memoryStreamPool">Il pool degli stream in memoria.</param>
        public HttpCompressionMiddleware(OwinMiddleware next, Settings settings, ICaravanLog log, IObjectPool<PooledMemoryStream> memoryStreamPool)
            : base(next)
        {
            // Preconditions
            Raise.ArgumentNullException.IfIsNull(settings, nameof(settings));
            Raise.ArgumentNullException.IfIsNull(log, nameof(log));
            Raise.ArgumentNullException.IfIsNull(memoryStreamPool, nameof(memoryStreamPool));

            _settings = settings;
            _log = log;
            _memoryStreamPool = memoryStreamPool;
        }
        /// <summary>
        ///   Inizializza il componente usato per il logging.
        /// </summary>
        /// <param name="next">Un riferimento al prossimo componente della pipeline.</param>
        /// <param name="settings">Le impostazioni del componente.</param>
        /// <param name="log">Il log su cui scrivere eventuali messaggi.</param>
        /// <param name="perfMonitorFactory">L'oggetto usato per generare cronometri.</param>
        /// <param name="stringBuilderPool">Il pool di oggetti di tipo <see cref="StringBuilder"/>.</param>
        public HttpLoggingMiddleware(OwinMiddleware next, Settings settings, ICaravanLog log, IPerfMonitorFactory perfMonitorFactory, IObjectPool<PooledStringBuilder> stringBuilderPool)
            : base(next)
        {
            // Preconditions
            Raise.ArgumentNullException.IfIsNull(settings, nameof(settings));
            Raise.ArgumentNullException.IfIsNull(log, nameof(log));
            Raise.ArgumentNullException.IfIsNull(perfMonitorFactory, nameof(perfMonitorFactory));
            Raise.ArgumentNullException.IfIsNull(stringBuilderPool, nameof(stringBuilderPool));

            _settings = settings;
            _log = log;
            _perfMonitorFactory = perfMonitorFactory;
            _stringBuilderPool = stringBuilderPool;
        }