Merge pull request #3997 from nextcloud/backport-27353
Update davclient.js to 0.1.1
This commit is contained in:
commit
17cf8dc450
|
@ -29,7 +29,7 @@
|
||||||
"underscore": "~1.8.0",
|
"underscore": "~1.8.0",
|
||||||
"bootstrap": "~3.3.6",
|
"bootstrap": "~3.3.6",
|
||||||
"backbone": "~1.2.3",
|
"backbone": "~1.2.3",
|
||||||
"davclient.js": "https://github.com/evert/davclient.js.git",
|
"davclient.js": "https://github.com/evert/davclient.js.git#0.1.1",
|
||||||
"es6-promise": "https://github.com/jakearchibald/es6-promise.git#~2.3.0",
|
"es6-promise": "https://github.com/jakearchibald/es6-promise.git#~2.3.0",
|
||||||
"base64": "~0.3.0",
|
"base64": "~0.3.0",
|
||||||
"clipboard": "^1.5.12",
|
"clipboard": "^1.5.12",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "davclient.js",
|
"name": "davclient.js",
|
||||||
"version": "0.0.1",
|
"version": "0.1.1",
|
||||||
"authors": [
|
"authors": [
|
||||||
"Evert Pot <me@evertpot.com>"
|
"Evert Pot <me@evertpot.com>"
|
||||||
],
|
],
|
||||||
|
@ -20,13 +20,14 @@
|
||||||
"test",
|
"test",
|
||||||
"tests"
|
"tests"
|
||||||
],
|
],
|
||||||
"_release": "0.0.1",
|
"_release": "0.1.1",
|
||||||
"_resolution": {
|
"_resolution": {
|
||||||
"type": "version",
|
"type": "version",
|
||||||
"tag": "0.0.1",
|
"tag": "0.1.1",
|
||||||
"commit": "2d054c63ba5bf7f7d40de904a742f3ad9c71e63c"
|
"commit": "a2731f81540816b212c09d14596621cb070a4f10"
|
||||||
},
|
},
|
||||||
"_source": "https://github.com/evert/davclient.js.git",
|
"_source": "https://github.com/evert/davclient.js.git",
|
||||||
"_target": "*",
|
"_target": "0.1.1",
|
||||||
"_originalSource": "https://github.com/evert/davclient.js.git"
|
"_originalSource": "https://github.com/evert/davclient.js.git",
|
||||||
|
"_direct": true
|
||||||
}
|
}
|
|
@ -1,3 +1,8 @@
|
||||||
|
/*
|
||||||
|
* vim: expandtab shiftwidth=4 softtabstop=4
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* global dav */
|
||||||
if (typeof dav == 'undefined') { dav = {}; };
|
if (typeof dav == 'undefined') { dav = {}; };
|
||||||
|
|
||||||
dav._XML_CHAR_MAP = {
|
dav._XML_CHAR_MAP = {
|
||||||
|
@ -99,11 +104,43 @@ dav.Client.prototype = {
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renders a "d:set" block for the given properties.
|
||||||
|
*
|
||||||
|
* @param {Object.<String,String>} properties
|
||||||
|
* @return {String} XML "<d:set>" block
|
||||||
|
*/
|
||||||
|
_renderPropSet: function(properties) {
|
||||||
|
var body = ' <d:set>\n' +
|
||||||
|
' <d:prop>\n';
|
||||||
|
|
||||||
|
for(var ii in properties) {
|
||||||
|
var property = this.parseClarkNotation(ii);
|
||||||
|
var propName;
|
||||||
|
var propValue = properties[ii];
|
||||||
|
if (this.xmlNamespaces[property.namespace]) {
|
||||||
|
propName = this.xmlNamespaces[property.namespace] + ':' + property.name;
|
||||||
|
} else {
|
||||||
|
propName = 'x:' + property.name + ' xmlns:x="' + property.namespace + '"';
|
||||||
|
}
|
||||||
|
|
||||||
|
// FIXME: hard-coded for now until we allow properties to
|
||||||
|
// specify whether to be escaped or not
|
||||||
|
if (propName !== 'd:resourcetype') {
|
||||||
|
propValue = dav._escapeXml(propValue);
|
||||||
|
}
|
||||||
|
body += ' <' + propName + '>' + propValue + '</' + propName + '>\n';
|
||||||
|
}
|
||||||
|
body +=' </d:prop>\n';
|
||||||
|
body +=' </d:set>\n';
|
||||||
|
return body;
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates a propPatch request.
|
* Generates a propPatch request.
|
||||||
*
|
*
|
||||||
* @param {string} url Url to do the proppatch request on
|
* @param {string} url Url to do the proppatch request on
|
||||||
* @param {Array} properties List of properties to store.
|
* @param {Object.<String,String>} properties List of properties to store.
|
||||||
* @param {Object} [headers] headers
|
* @param {Object} [headers] headers
|
||||||
* @return {Promise}
|
* @return {Promise}
|
||||||
*/
|
*/
|
||||||
|
@ -119,25 +156,8 @@ dav.Client.prototype = {
|
||||||
for (namespace in this.xmlNamespaces) {
|
for (namespace in this.xmlNamespaces) {
|
||||||
body += ' xmlns:' + this.xmlNamespaces[namespace] + '="' + namespace + '"';
|
body += ' xmlns:' + this.xmlNamespaces[namespace] + '="' + namespace + '"';
|
||||||
}
|
}
|
||||||
body += '>\n' +
|
body += '>\n' + this._renderPropSet(properties);
|
||||||
' <d:set>\n' +
|
body += '</d:propertyupdate>';
|
||||||
' <d:prop>\n';
|
|
||||||
|
|
||||||
for(var ii in properties) {
|
|
||||||
|
|
||||||
var property = this.parseClarkNotation(ii);
|
|
||||||
var propName;
|
|
||||||
var propValue = properties[ii];
|
|
||||||
if (this.xmlNamespaces[property.namespace]) {
|
|
||||||
propName = this.xmlNamespaces[property.namespace] + ':' + property.name;
|
|
||||||
} else {
|
|
||||||
propName = 'x:' + property.name + ' xmlns:x="' + property.namespace + '"';
|
|
||||||
}
|
|
||||||
body += ' <' + propName + '>' + dav._escapeXml(propValue) + '</' + propName + '>\n';
|
|
||||||
}
|
|
||||||
body+=' </d:prop>\n';
|
|
||||||
body+=' </d:set>\n';
|
|
||||||
body+='</d:propertyupdate>';
|
|
||||||
|
|
||||||
return this.request('PROPPATCH', url, headers, body).then(
|
return this.request('PROPPATCH', url, headers, body).then(
|
||||||
function(result) {
|
function(result) {
|
||||||
|
@ -151,6 +171,44 @@ dav.Client.prototype = {
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates a MKCOL request.
|
||||||
|
* If attributes are given, it will use an extended MKCOL request.
|
||||||
|
*
|
||||||
|
* @param {string} url Url to do the proppatch request on
|
||||||
|
* @param {Object.<String,String>} [properties] list of properties to store.
|
||||||
|
* @param {Object} [headers] headers
|
||||||
|
* @return {Promise}
|
||||||
|
*/
|
||||||
|
mkcol : function(url, properties, headers) {
|
||||||
|
var body = '';
|
||||||
|
headers = headers || {};
|
||||||
|
headers['Content-Type'] = 'application/xml; charset=utf-8';
|
||||||
|
|
||||||
|
if (properties) {
|
||||||
|
body =
|
||||||
|
'<?xml version="1.0"?>\n' +
|
||||||
|
'<d:mkcol';
|
||||||
|
var namespace;
|
||||||
|
for (namespace in this.xmlNamespaces) {
|
||||||
|
body += ' xmlns:' + this.xmlNamespaces[namespace] + '="' + namespace + '"';
|
||||||
|
}
|
||||||
|
body += '>\n' + this._renderPropSet(properties);
|
||||||
|
body +='</d:mkcol>';
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.request('MKCOL', url, headers, body).then(
|
||||||
|
function(result) {
|
||||||
|
return {
|
||||||
|
status: result.status,
|
||||||
|
body: result.body,
|
||||||
|
xhr: result.xhr
|
||||||
|
};
|
||||||
|
}.bind(this)
|
||||||
|
);
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs a HTTP request, and returns a Promise
|
* Performs a HTTP request, and returns a Promise
|
||||||
*
|
*
|
||||||
|
@ -293,10 +351,9 @@ dav.Client.prototype = {
|
||||||
var propStatNode = propStatIterator.iterateNext();
|
var propStatNode = propStatIterator.iterateNext();
|
||||||
|
|
||||||
while(propStatNode) {
|
while(propStatNode) {
|
||||||
|
|
||||||
var propStat = {
|
var propStat = {
|
||||||
status : doc.evaluate('string(d:status)', propStatNode, resolver, XPathResult.ANY_TYPE, null).stringValue,
|
status : doc.evaluate('string(d:status)', propStatNode, resolver, XPathResult.ANY_TYPE, null).stringValue,
|
||||||
properties : [],
|
properties : {},
|
||||||
};
|
};
|
||||||
|
|
||||||
var propIterator = doc.evaluate('d:prop/*', propStatNode, resolver, XPathResult.ANY_TYPE, null);
|
var propIterator = doc.evaluate('d:prop/*', propStatNode, resolver, XPathResult.ANY_TYPE, null);
|
||||||
|
|
Loading…
Reference in New Issue