Comparing version 0.5.0 to 0.6.0
# WebDAV-client changelog | ||
## 0.6.0 | ||
_2017-04-13_ | ||
* Support for non-prefixed XML elements in WebDAV response | ||
* HTTP status code for thrown exceptions | ||
## 0.5.0 | ||
@@ -4,0 +10,0 @@ _2017-02-11_ |
{ | ||
"name": "webdav", | ||
"version": "0.5.0", | ||
"version": "0.6.0", | ||
"description": "WebDAV client for NodeJS", | ||
@@ -27,4 +27,4 @@ "main": "source/index.js", | ||
"dependencies": { | ||
"brototype": "0.0.5", | ||
"deepmerge": "^1.3.1", | ||
"lodash": "^4.17.4", | ||
"node-fetch": "^1.6.3", | ||
@@ -31,0 +31,0 @@ "xml2js": "^0.4.17" |
var path = require("path"); | ||
var _ = require("lodash"); | ||
var Bro = require("../brototype.js"), | ||
urlTools = require("../url.js"); | ||
_.mixin({ | ||
getOne: function(object, keys) { | ||
var val, | ||
keysLen = keys.length; | ||
for (var i = 0; i < keysLen; i += 1) { | ||
val = _.get(object, keys[i]); | ||
if (val !== undefined) { | ||
return val; | ||
} | ||
} | ||
return undefined; | ||
} | ||
}); | ||
function filterItemsByDepth(items) { | ||
@@ -26,4 +40,3 @@ var highestDepth = 0; | ||
var items = [], | ||
responseItems = [], | ||
dirResultBro = Bro(dirResult); | ||
responseItems = []; | ||
if (targetOnly === undefined) { | ||
@@ -33,11 +46,9 @@ targetOnly = false; | ||
try { | ||
var multistatus = dirResultBro.iCanHaz1("d:multistatus", "D:multistatus"); | ||
responseItems = Bro(multistatus).iCanHaz1("d:response", "D:response") || []; | ||
var multistatus = _.getOne(dirResult, ["d:multistatus", "D:multistatus", "multistatus"]); | ||
responseItems = _.getOne(multistatus, ["d:response", "D:response", "response"]) || []; | ||
} catch (e) {} | ||
responseItems.forEach(function(responseItem) { | ||
var responseBro = Bro(responseItem), | ||
propstatBro = Bro(responseBro.iCanHaz1("d:propstat.0", "D:propstat.0")), | ||
props = propstatBro.iCanHaz1("d:prop.0", "D:prop.0"), | ||
propsBro = Bro(props); | ||
var sanitisedFilePath = decodeURIComponent(processXMLStringValue(responseBro.iCanHaz1("d:href", "D:href"))), | ||
var propstat = _.getOne(responseItem, ["d:propstat.0", "D:propstat.0", "propstat.0"]), | ||
props = _.getOne(propstat, ["d:prop.0", "D:prop.0", "prop.0"]); | ||
var sanitisedFilePath = decodeURIComponent(processXMLStringValue(_.getOne(responseItem, ["d:href", "D:href", "href"]))), | ||
serverDepth = sanitisedFilePath | ||
@@ -49,3 +60,2 @@ .split("/") | ||
.length; | ||
// console.log(JSON.stringify(props, undefined, 4)); | ||
var filename = processDirectoryResultFilename( | ||
@@ -55,4 +65,4 @@ dirPath, | ||
).trim(), | ||
resourceType = processXMLStringValue(propsBro.iCanHaz1("lp1:resourcetype", "d:resourcetype", "D:resourcetype")), | ||
itemType = (resourceType.indexOf("d:collection") >= 0 || resourceType.indexOf("D:collection") >= 0) ? | ||
resourceType = processXMLStringValue(_.getOne(props, ["lp1:resourcetype", "d:resourcetype", "D:resourcetype", "resourcetype"])), | ||
itemType = (resourceType.indexOf("d:collection") >= 0 || resourceType.indexOf("D:collection") >= 0 || resourceType.indexOf("collection") >= 0) ? | ||
"directory" : "file"; | ||
@@ -70,8 +80,8 @@ if (filename.length <= 0) { | ||
basename: path.basename(filename), | ||
lastmod: processXMLStringValue(propsBro.iCanHaz1("lp1:getlastmodified", "d:getlastmodified", "D:getlastmodified")), | ||
size: parseInt(processXMLStringValue(propsBro.iCanHaz1("lp1:getcontentlength", "d:getcontentlength", "D:getcontentlength")) || "0", 10), | ||
lastmod: processXMLStringValue(_.getOne(props, ["lp1:getlastmodified", "d:getlastmodified", "D:getlastmodified", "getlastmodified"])), | ||
size: parseInt(processXMLStringValue(_.getOne(props, ["lp1:getcontentlength", "d:getcontentlength", "D:getcontentlength", "getcontentlength"])) || "0", 10), | ||
type: itemType, | ||
_depth: serverDepth | ||
}, | ||
mime = processXMLStringValue(propsBro.iCanHaz1("d:getcontenttype", "D:getcontenttype")); | ||
mime = processXMLStringValue(_.getOne(props, ["d:getcontenttype", "D:getcontenttype", "getcontenttype"])); | ||
if (mime) { | ||
@@ -78,0 +88,0 @@ item.mime = parseMIME(mime); |
@@ -6,3 +6,5 @@ module.exports = { | ||
if (status >= 400) { | ||
throw new Error("Invalid response: " + status + " " + response.statusText); | ||
var err = new Error("Invalid response: " + status + " " + response.statusText); | ||
err.status = status; | ||
throw err; | ||
} | ||
@@ -9,0 +11,0 @@ return response; |
49640
25
843
+ Addedlodash@^4.17.4
+ Addedlodash@4.17.21(transitive)
- Removedbrototype@0.0.5
- Removedbrototype@0.0.5(transitive)