def do_UNLOCK(self, environ, start_response):
path = environ["<STR_LIT>"]<EOL>provider = self._davProvider<EOL>res = self._davProvider.get_resource_inst(path, environ)<EOL>lockMan = provider.lock_manager<EOL>if lockMan is None:<EOL><INDENT>self._fail(HTTP_NOT_IMPLEMENTED, "<STR_LIT>")<EOL><DEDENT>elif util.get_content_length(environ) != <NUM_LIT:0>:<EOL><INDENT>self._fail(<EOL>HTTP_MEDIATYPE_NOT_SUPPORTED,<EOL>"<STR_LIT>",<EOL>)<EOL><DEDENT>elif res is None:<EOL><INDENT>self._fail(HTTP_NOT_FOUND)<EOL><DEDENT>elif "<STR_LIT>" not in environ:<EOL><INDENT>self._fail(HTTP_BAD_REQUEST, "<STR_LIT>")<EOL><DEDENT>self._evaluate_if_headers(res, environ)<EOL>lockToken = environ["<STR_LIT>"].strip("<STR_LIT>")<EOL>refUrl = res.get_ref_url()<EOL>if not lockMan.is_url_locked_by_token(refUrl, lockToken):<EOL><INDENT>self._fail(<EOL>HTTP_CONFLICT,<EOL>"<STR_LIT>",<EOL>err_condition=PRECONDITION_CODE_LockTokenMismatch,<EOL>)<EOL><DEDENT>if not lockMan.is_token_locked_by_user(lockToken, environ["<STR_LIT>"]):<EOL><INDENT>self._fail(HTTP_FORBIDDEN, "<STR_LIT>")<EOL><DEDENT>lockMan.release(lockToken)<EOL>return util.send_status_response(environ, start_response, HTTP_NO_CONTENT)<EOL>
@see: http://www.webdav.org/specs/rfc4918.html#METHOD_UNLOCK