UNPKG

@documentica/webdav

Version:
44 lines (43 loc) 2.03 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const createWebdavRequest_1 = require("../createWebdavRequest"); const utils_1 = require("../utils"); const lodash_isequal_1 = __importDefault(require("lodash.isequal")); const Property_1 = __importDefault(require("../Property")); function search({ config, path, value, initial, success, fail, headers }) { let updateProps = Object.keys(value.props).filter(i => (initial.props[i] == undefined) || !lodash_isequal_1.default(value.props[i], initial.props[i])).map(i => Property_1.default.NewProperty("DAV:", i, value.props[i])); let delProps = Object.keys(initial.props).filter(i => value.props[i] == undefined).map(i => Property_1.default.NewProperty("DAV:", i, value.props[i])); createWebdavRequest_1.createWebdavRequest({ config, method: 'PROPPATCH', path, success: function (status, body) { const items = utils_1.multiStatusToPropfindResponse(body, config); success(items); }, fail, headers, multistatus: true, responseType: 'xml', body: `<?xml version="1.0" encoding="UTF-8"?> <propertyupdate xmlns="DAV:"> ${updateProps.length ? `<set> <prop> ${updateProps.map(prop => prop.xmlvalue ? "<" + prop.tagname + ">" + (Array.prototype.slice.call(prop.xmlvalue).map(item => new XMLSerializer().serializeToString(item)).join("\n")) + "</" + prop.tagname + ">" : undefined).filter(i => i).join("\n")} </prop> </set>` : ""} ${delProps.length ? `<remove> <prop> ${delProps.map(prop => "<" + prop.tagname + "/>").join("\n")} </prop> </remove>` : ""} </propertyupdate>` }); } exports.default = search;