UNPKG

@documentica/webdav

Version:
61 lines (60 loc) 1.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const createWebdavRequest_1 = require("../createWebdavRequest"); const utils_1 = require("../utils"); function parseParams(params) { return Object.keys(params).map((field) => { const value = params[field]; if (!value.optype || !value.literal) return null; if (value.optype == "contains") return `<d:${value.optype}> <d:literal>${value.literal}</d:literal> </d:${value.optype}>`; return `<d:${value.optype}> <d:prop> <d:${field}/> </d:prop> <d:literal>${value.literal}</d:literal> </d:${value.optype}>`; }).filter(i => i).join("\n"); } function search({ config, path, params, success, fail, headers }) { createWebdavRequest_1.createWebdavRequest({ config, method: 'SEARCH', 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"?> <d:searchrequest xmlns:d="DAV:"> <d:basicsearch> <d:select> <d:prop> <d:displayname/> <d:getcontenttype/> </d:prop> </d:select> <d:from> <d:scope> <d:href>${path}</d:href> <d:depth>infinity</d:depth> </d:scope> </d:from> <d:where> <d:and> ${parseParams(params)} </d:and> </d:where> <d:orderby/> </d:basicsearch> </d:searchrequest>` }); } exports.default = search;