/// <summary>
 /// Creates instance of this class.
 /// </summary>
 /// <param name="contextOptions">Context options.</param>
 /// <param name="userOptions">User options.</param>
 /// <param name="logger">Logger instance.</param>
 /// <param name="logMethod">Logging method for specific platform.</param>
 /// <param name="eventsService">Server sent events service for user notifications.</param>
 /// <param name="engine">Engine instance.</param>
 public WebDAVHttpListener(
     IOptions <DavContextOptions> contextOptions,
     IOptions <DavUserOptions> userOptions,
     ILogger logger,
     ILogMethod logMethod,
     EventsService eventsService,
     DavEngineAsync engine
     )
 {
     this.contextOptions = contextOptions.Value;
     this.userOptions    = userOptions.Value;
     this.logger         = logger;
     this.eventsService  = eventsService;
     this.engine         = engine;
     this.logMethod      = logMethod;
     Features.Set <IHttpRequestFeature>(new HttpRequestFeature());
     Features.Set <IHttpResponseFeature>(new HttpResponseFeature());
     digestProvider = new DigestAuthenticationProvider(GetPasswordAndRoles);
 }
        /// <summary>
        /// Initializes a new instance of the DavContext class.
        /// </summary>
        /// <param name="listenerContext"><see cref="HttpListenerContext"/> instance.</param>
        /// <param name="prefixes">Http listener prefixes.</param>
        /// <param name="repositoryPath">Local path to repository.</param>
        /// <param name="logger"><see cref="ILogger"/> instance.</param>
        public DavContext(
            HttpListenerContext listenerContext,
            HttpListenerPrefixCollection prefixes,
            System.Security.Principal.IPrincipal principal,
            string repositoryPath,
            ILogger logger,
            EventsService eventsService)
            : base(listenerContext, prefixes)
        {
            this.Logger         = logger;
            this.RepositoryPath = repositoryPath;
            this.eventsService  = eventsService;
            if (!Directory.Exists(repositoryPath))
            {
                Logger.LogError("Repository path specified in Web.config is invalid.", null);
            }

            if (principal != null)
            {
                Identity = principal.Identity;
            }
        }