upgrade check connections

This commit is contained in:
fyears 2024-07-27 22:58:05 +08:00
parent f2845cdcbf
commit ee4394873b
14 changed files with 79 additions and 28 deletions

View File

@ -320,12 +320,12 @@ export class FakeFsAzureBlobStorage extends FakeFs {
// if we can walk, we can connect
try {
await this.walkPartial();
return true;
} catch (err) {
console.debug(err);
callbackFunc?.(err);
return false;
}
return await this.checkConnectCommonOps(callbackFunc);
}
async getUserDisplayName(): Promise<string> {

View File

@ -892,12 +892,12 @@ export class FakeFsBox extends FakeFs {
// if we can init, we can connect
try {
await this._init();
return true;
} catch (err) {
console.debug(err);
callbackFunc?.(err);
return false;
}
return await this.checkConnectCommonOps(callbackFunc);
}
async getUserDisplayName(): Promise<string> {
throw new Error("Method not implemented.");

View File

@ -728,12 +728,12 @@ export class FakeFsGoogleDrive extends FakeFs {
// if we can init, we can connect
try {
await this._init();
return true;
} catch (err) {
console.debug(err);
callbackFunc?.(err);
return false;
}
return await this.checkConnectCommonOps(callbackFunc);
}
async getUserDisplayName(): Promise<string> {

View File

@ -555,12 +555,12 @@ export class FakeFsKoofr extends FakeFs {
// if we can init, we can connect
try {
await this._init();
return true;
} catch (err) {
console.debug(err);
callbackFunc?.(err);
return false;
}
return await this.checkConnectCommonOps(callbackFunc);
}
async getUserDisplayName(): Promise<string> {

View File

@ -916,12 +916,15 @@ export class FakeFsOnedriveFull extends FakeFs {
async checkConnect(callbackFunc?: any): Promise<boolean> {
try {
const k = await this.getUserDisplayName();
return k !== "<unknown display name>";
if (k === "<unknown display name>") {
throw Error(`unknown display name!`);
}
} catch (err) {
console.debug(err);
callbackFunc?.(err);
return false;
}
return await this.checkConnectCommonOps(callbackFunc);
}
async getUserDisplayName() {

View File

@ -604,12 +604,12 @@ export class FakeFsPCloud extends FakeFs {
// if we can init, we can connect
try {
await this._init();
return true;
} catch (err) {
console.debug(err);
callbackFunc?.(err);
return false;
}
return await this.checkConnectCommonOps(callbackFunc);
}
async getUserDisplayName(): Promise<string> {

View File

@ -480,12 +480,12 @@ export class FakeFsYandexDisk extends FakeFs {
// if we can init, we can connect
try {
await this._init();
return true;
} catch (err) {
console.debug(err);
callbackFunc?.(err);
return false;
}
return await this.checkConnectCommonOps(callbackFunc);
}
async getUserDisplayName(): Promise<string> {

View File

@ -1,3 +1,5 @@
import isEqual from "lodash/isEqual";
import { nanoid } from "nanoid";
import type { Entity } from "./baseTypes";
export abstract class FakeFs {
@ -16,6 +18,49 @@ export abstract class FakeFs {
abstract rename(key1: string, key2: string): Promise<void>;
abstract rm(key: string): Promise<void>;
abstract checkConnect(callbackFunc?: any): Promise<boolean>;
async checkConnectCommonOps(callbackFunc?: any) {
try {
console.info(`check connect: create folder`);
const folderName = `rs-test-folder-${nanoid()}/`;
await this.mkdir(folderName);
// await delay(3000);
console.info(`check connect: upload file`);
const filename = `${folderName}/rs-test-file-${nanoid()}`;
const ctime = Date.now();
const mtime1 = Date.now();
const content1 = new ArrayBuffer(100);
await this.writeFile(filename, content1, mtime1, ctime);
// await delay(3000);
console.info(`check connect: overwrite file`);
const mtime2 = Date.now();
const content2 = new ArrayBuffer(200);
await this.writeFile(filename, content2, mtime2, ctime);
// await delay(3000);
console.info(`check connect: download file`);
const content3 = await this.readFile(filename);
if (!isEqual(content2, content3)) {
throw Error(`downloaded file is not equal with uploaded file!`);
}
// await delay(3000);
console.info(`check connect: delete file`);
await this.rm(filename);
// await delay(3000);
console.info(`check connect: delete folder`);
await this.rm(folderName);
// await delay(3000);
return true;
} catch (err) {
console.error(err);
callbackFunc?.(err);
return false;
}
}
abstract getUserDisplayName(): Promise<string>;
abstract revokeAuth(): Promise<any>;
abstract allowEmptyFile(): boolean;

View File

@ -741,14 +741,15 @@ export class FakeFsDropbox extends FakeFs {
await this._init();
const results = await this._statFromRoot(`/${this.remoteBaseDir}`);
if (results === undefined) {
return false;
throw Error(`cannot check root vault folder!`);
}
return true;
} catch (err) {
console.debug(err);
callbackFunc?.(err);
return false;
}
return await this.checkConnectCommonOps(callbackFunc);
}
async getUserDisplayName() {

View File

@ -47,7 +47,7 @@ export class FakeFsMock extends FakeFs {
}
async checkConnect(callbackFunc?: any): Promise<boolean> {
return true;
return await this.checkConnectCommonOps(callbackFunc);
}
async getUserDisplayName(): Promise<string> {

View File

@ -1036,12 +1036,16 @@ export class FakeFsOnedrive extends FakeFs {
async checkConnect(callbackFunc?: any): Promise<boolean> {
try {
const k = await this.getUserDisplayName();
return k !== "<unknown display name>";
if (k === "<unknown display name>") {
throw Error(`unknown display name!`);
}
} catch (err) {
console.debug(err);
callbackFunc?.(err);
return false;
}
return await this.checkConnectCommonOps(callbackFunc);
}
async getUserDisplayName() {

View File

@ -831,14 +831,11 @@ export class FakeFsS3 extends FakeFs {
results.$metadata === undefined ||
results.$metadata.httpStatusCode === undefined
) {
const err = "results or $metadata or httStatusCode is undefined";
console.debug(err);
if (callbackFunc !== undefined) {
callbackFunc(err);
throw Error("results or $metadata or httStatusCode is undefined");
}
return false;
if (results.$metadata.httpStatusCode !== 200) {
throw Error(`not 200 httpStatusCode`);
}
return results.$metadata.httpStatusCode === 200;
} catch (err: any) {
console.debug(err);
if (callbackFunc !== undefined) {
@ -854,9 +851,10 @@ export class FakeFsS3 extends FakeFs {
callbackFunc(err);
}
}
return false;
}
return await this.checkConnectCommonOps(callbackFunc);
}
async getUserDisplayName(): Promise<string> {

View File

@ -4,8 +4,6 @@ import { getReasonPhrase } from "http-status-codes/build/cjs/utils-functions";
import chunk from "lodash/chunk";
import cloneDeep from "lodash/cloneDeep";
import flatten from "lodash/flatten";
import isString from "lodash/isString";
import { nanoid } from "nanoid";
import { Platform, type RequestUrlParam, requestUrl } from "obsidian";
import type {
FileStat,
@ -140,10 +138,10 @@ if (VALID_REQURL) {
);
}
import isEqual from "lodash/isEqual";
// @ts-ignore
// biome-ignore lint: we want to ts-ignore the next line
import { AuthType, BufferLike, createClient } from "webdav/dist/web/index.js";
import isEqual from "lodash/isEqual";
export const DEFAULT_WEBDAV_CONFIG = {
address: "",
@ -925,17 +923,15 @@ export class FakeFsWebdav extends FakeFs {
await this._init();
const results = await this._statFromRoot(`/${this.remoteBaseDir}/`);
if (results === undefined) {
const err = "results is undefined";
console.error(err);
callbackFunc?.(err);
return false;
throw Error("cannot stat root vault folder!");
}
return true;
} catch (err) {
console.error(err);
callbackFunc?.(err);
return false;
}
return await this.checkConnectCommonOps(callbackFunc);
}
async getUserDisplayName(): Promise<string> {

View File

@ -252,12 +252,16 @@ export class FakeFsWebdis extends FakeFs {
const k = await (
await this._fetchCommand("GET", "PING/helloworld")
).json();
return isEqual(k, { PING: "helloworld" });
if (!isEqual(k, { PING: "helloworld" })) {
throw Error(`no correct ping response`);
}
} catch (err: any) {
console.error(err);
callbackFunc?.(err);
return false;
}
return await this.checkConnectCommonOps(callbackFunc);
// return true;
}
async getUserDisplayName(): Promise<string> {