@documentica/webdav
Version:
Documentica Webdav Client
44 lines (43 loc) • 2.03 kB
JavaScript
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;
;