public Dispatcher(ILogger <Dispatcher> log, IControlHandler controlHandler, IExamineHandler examineHandler, IInventoryHandler inventoryHandler, ILockHandler lockHandler, ILookAroundHandler lookHandler, IMagicHandler magicHandler, IMoveDirectionHandler moveDirHandler, IMoveFeatureHandler moveFeatureHandler, IMoveLocationHandler moveLocHandler, IOnOffHandler onOffHandler, IResponseBuilder responseBuilder, AdventureContext context) { _log = log; _controlHandler = controlHandler; _examineHandler = examineHandler; _inventoryHandler = inventoryHandler; _lockHandler = lockHandler; _lookHandler = lookHandler; _magicHandler = magicHandler; _moveDirHandler = moveDirHandler; _moveFeatureHandler = moveFeatureHandler; _moveLocHandler = moveLocHandler; _onOffHandler = onOffHandler; _responseBuilder = responseBuilder; _advContext = context; }
/// <summary> /// Initializes a new instance of the <see cref="WebDavDispatcherClass2"/> class. /// </summary> /// <param name="handlers">The WebDAV class 2 handlers</param> /// <param name="context">The WebDAV context</param> public WebDavDispatcherClass2([NotNull][ItemNotNull] IEnumerable <IClass2Handler> handlers, [NotNull] IWebDavContext context) { var httpMethods = new HashSet <string>(); foreach (var handler in handlers) { var handlerFound = false; if (handler is ILockHandler lockHandler) { _lockHandler = lockHandler; handlerFound = true; } if (handler is IUnlockHandler unlockHandler) { _unlockHandler = unlockHandler; handlerFound = true; } if (!handlerFound) { throw new NotSupportedException(); } foreach (var httpMethod in handler.HttpMethods) { httpMethods.Add(httpMethod); } } HttpMethods = httpMethods.ToList(); WebDavContext = context; OptionsResponseHeaders = new Dictionary <string, IEnumerable <string> >() { ["Allow"] = HttpMethods, }; DefaultResponseHeaders = new Dictionary <string, IEnumerable <string> >() { ["DAV"] = new[] { "2" }, }; }
static StaticLockHandler() { StaticLockHandler._instance = new StaticLockHandler(); }