async def do_put(self, request: DAVRequest) -> DAVResponse: if not request.lock_token_is_parsed_success: return DAVResponse(412) # check etag if request.lock_token_etag: etag = await self._do_get_etag(request) if etag != request.lock_token_etag: return DAVResponse(412) if request.lock_token_path is None: locked_path = request.src_path else: locked_path = request.lock_token_path if await self.dav_lock.is_locking(locked_path, request.lock_token): return DAVResponse(423) http_status = await self._do_put(request) return DAVResponse(http_status)
async def do_lock(self, request: DAVRequest) -> DAVResponse: # TODO if (not request.body_is_parsed_success or not request.lock_token_is_parsed_success): return DAVResponse(400) elif request.lock_token: # refresh lock_info = await self.dav_lock.refresh(request.lock_token) else: # new lock_info = await self.dav_lock.new(request) if lock_info is None: return DAVResponse(423) message = self._create_lock_response(lock_info) headers = { b"Lock-Token": "opaquelocktoken:{}".format(lock_info.token).encode("utf-8"), } response = DAVResponse(status=200, headers=headers, message=message) return response
async def get_options(self, request: DAVRequest) -> DAVResponse: # TODO headers = { b"Allow": ",".join(DAV_METHODS).encode("utf-8"), b"DAV": b"1, 2", } return DAVResponse(status=200, headers=headers)