Замена webdav-fs на webdav

This commit is contained in:
Book Pauk
2020-01-21 13:54:21 +07:00
parent 992d2033f3
commit 81629fab7a
4 changed files with 34 additions and 54 deletions

10
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{ {
"name": "Liberama", "name": "Liberama",
"version": "0.8.1", "version": "0.8.2",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@@ -12807,14 +12807,6 @@
} }
} }
}, },
"webdav-fs": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/webdav-fs/-/webdav-fs-2.0.0.tgz",
"integrity": "sha512-TjqQKNnf1NuPiMEFJVrmWUYpIEgUxWRktddu5JhQsyxFIOyAJT0cpLyaoOdAp/yrG1yXgDsa6ZL9z+h4Z71zWA==",
"requires": {
"webdav": "^2.0.0"
}
},
"webpack": { "webpack": {
"version": "4.40.2", "version": "4.40.2",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.40.2.tgz", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.40.2.tgz",

View File

@@ -84,7 +84,7 @@
"vue-router": "^3.1.3", "vue-router": "^3.1.3",
"vuex": "^3.1.1", "vuex": "^3.1.1",
"vuex-persistedstate": "^2.5.4", "vuex-persistedstate": "^2.5.4",
"webdav-fs": "^2.0.0", "webdav": "^2.10.1",
"zip-stream": "^2.1.2" "zip-stream": "^2.1.2"
} }
} }

View File

@@ -31,7 +31,9 @@ class ReaderWorker {
this.remoteWebDavStorage = false; this.remoteWebDavStorage = false;
if (config.remoteWebDavStorage) { if (config.remoteWebDavStorage) {
this.remoteWebDavStorage = new RemoteWebDavStorage(config.remoteWebDavStorage); this.remoteWebDavStorage = new RemoteWebDavStorage(
Object.assign({maxContentLength: config.maxUploadFileSize}, config.remoteWebDavStorage)
);
} }
this.periodicCleanDir(this.config.tempPublicDir, this.config.maxTempPublicDirSize, 60*60*1000);//1 раз в час this.periodicCleanDir(this.config.tempPublicDir, this.config.maxTempPublicDirSize, 60*60*1000);//1 раз в час

View File

@@ -1,62 +1,48 @@
const fs = require('fs-extra'); const fs = require('fs-extra');
const path = require('path'); const path = require('path');
const WebDavFS = require('webdav-fs'); const { createClient } = require('webdav');
class RemoteWebDavStorage { class RemoteWebDavStorage {
constructor(config) { constructor(config) {
const opts = Object.assign({}, config); this.config = Object.assign({}, config);
this.wfs = WebDavFS(config.url, opts); this.config.maxContentLength = this.config.maxContentLength || 10*1024*1024;
this.wdc = createClient(config.url, this.config);
} }
stat(filename) { _convertStat(data) {
return new Promise((resolve, reject) => { return {
this.wfs.stat(filename, function(err, fileStat) { isDirectory: function() {
if (err) return data.type === "directory";
reject(err); },
resolve(fileStat); isFile: function() {
}); return data.type === "file";
}); },
mtime: (new Date(data.lastmod)).getTime(),
name: data.basename,
size: data.size || 0
};
} }
writeFile(filename, data) { async stat(filename) {
return new Promise((resolve, reject) => { const stat = await this.wdc.stat(filename);
this.wfs.writeFile(filename, data, 'binary', function(err) { return this._convertStat(stat);
if (err)
reject(err);
resolve();
});
});
} }
unlink(filename) { async writeFile(filename, data) {
return new Promise((resolve, reject) => { return await this.wdc.putFileContents(filename, data, { maxContentLength: this.config.maxContentLength })
this.wfs.unlink(filename, function(err) {
if (err)
reject(err);
resolve();
});
});
} }
readFile(filename) { async unlink(filename) {
return new Promise((resolve, reject) => { return await this.wdc.deleteFile(filename);
this.wfs.readFile(filename, 'binary', function(err, data) {
if (err)
reject(err);
resolve(data);
});
});
} }
mkdir(dirname) { async readFile(filename) {
return new Promise((resolve, reject) => { return await this.wdc.getFileContents(filename, { maxContentLength: this.config.maxContentLength })
this.wfs.mkdir(dirname, function(err) { }
if (err)
reject(err); async mkdir(dirname) {
resolve(); return await this.wdc.createDirectory(dirname);
});
});
} }
async putFile(filename) { async putFile(filename) {