fix onedrive and make mtime ctime optional for mkdir

This commit is contained in:
fyears 2024-04-26 00:04:37 +08:00
parent 11d9e2e3f1
commit 0c6e16c131
3 changed files with 22 additions and 20 deletions

View File

@ -534,7 +534,7 @@ export class FakeFsDropbox extends FakeFs {
return fromDropboxItemToEntity(rsp.result, this.remoteBaseDir);
}
async mkdir(key: string, mtime: number, ctime: number): Promise<Entity> {
async mkdir(key: string, mtime?: number, ctime?: number): Promise<Entity> {
if (!key.endsWith("/")) {
throw Error(`you should not call mkdir on ${key}`);
}
@ -547,8 +547,8 @@ export class FakeFsDropbox extends FakeFs {
async _mkdirFromRoot(
key: string,
mtime: number,
ctime: number
mtime?: number,
ctime?: number
): Promise<Entity> {
if (hasEmojiInText(key)) {
throw new Error(

View File

@ -697,23 +697,25 @@ export class FakeFsOnedrive extends FakeFs {
return res;
}
async mkdir(key: string, mtime: number, ctime: number): Promise<Entity> {
async mkdir(key: string, mtime?: number, ctime?: number): Promise<Entity> {
if (!key.endsWith("/")) {
throw Error(`you should not call mkdir on ${key}`);
}
await this._init();
const uploadFolder = getOnedrivePath(key, this.remoteBaseDir);
console.debug(`mkdir upLoadFile=${uploadFolder}`);
console.debug(`mkdir uploadFolder=${uploadFolder}`);
return await this._mkdirFromRoot(uploadFolder, mtime, ctime);
}
async _mkdirFromRoot(
key: string,
mtime: number,
ctime: number
mtime?: number,
ctime?: number
): Promise<Entity> {
// console.debug(`foldersCreatedBefore=${Array.from(this.foldersCreatedBefore)}`);
if (this.foldersCreatedBefore.has(key)) {
// created, pass
// console.debug(`folder ${key} created.`)
} else {
// https://stackoverflow.com/questions/56479865/creating-nested-folders-in-one-go-onedrive-api
// use PATCH to create folder recursively!!!
@ -721,17 +723,17 @@ export class FakeFsOnedrive extends FakeFs {
folder: {},
"@microsoft.graph.conflictBehavior": "replace",
};
if (mtime !== 0 && ctime !== 0) {
const ctimeStr = new Date(ctime).toISOString();
const fileSystemInfo: Record<string, string> = {};
if (mtime !== undefined && mtime !== 0) {
const mtimeStr = new Date(mtime).toISOString();
playload = {
folder: {},
"@microsoft.graph.conflictBehavior": "replace",
fileSystemInfo: {
lastModifiedDateTime: mtimeStr,
createdDateTime: ctimeStr,
} as FileSystemInfo,
};
fileSystemInfo["lastModifiedDateTime"] = mtimeStr;
}
if (ctime !== undefined && ctime !== 0) {
const ctimeStr = new Date(ctime).toISOString();
fileSystemInfo["createdDateTime"] = ctimeStr;
}
if (Object.keys(fileSystemInfo).length > 0) {
playload["fileSystemInfo"] = fileSystemInfo;
}
await this._patchJson(key, playload);
}

View File

@ -368,7 +368,7 @@ export class FakeFsWebdav extends FakeFs {
return fromWebdavItemToEntity(res, this.remoteBaseDir);
}
async mkdir(key: string, mtime: number, ctime: number): Promise<Entity> {
async mkdir(key: string, mtime?: number, ctime?: number): Promise<Entity> {
if (!key.endsWith("/")) {
throw Error(`you should not call mkdir on ${key}`);
}
@ -379,8 +379,8 @@ export class FakeFsWebdav extends FakeFs {
async _mkdirFromRoot(
key: string,
mtime: number,
ctime: number
mtime?: number,
ctime?: number
): Promise<Entity> {
await this.client.createDirectory(key, {
recursive: true,