Improve error handling of API (#4345)

* wip

* wip

* wip

* Update attached_notes.ts

* wip

* Refactor

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* Update call.ts

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* ✌️

* Fix
This commit is contained in:
syuilo 2019-02-22 11:46:58 +09:00 committed by GitHub
parent fc52e95ad0
commit 2756f553c6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
181 changed files with 2010 additions and 1322 deletions

View file

@ -5,6 +5,7 @@ import { validateFileName, pack } from '../../../../../models/drive-file';
import create from '../../../../../services/drive/add-file';
import define from '../../../define';
import { apiLogger } from '../../../logger';
import { ApiError } from '../../../error';
export const meta = {
desc: {
@ -51,10 +52,18 @@ export const meta = {
'ja-JP': 'true にすると、同じハッシュを持つファイルが既にアップロードされていても強制的にファイルを作成します。',
}
}
},
errors: {
invalidFileName: {
message: 'Invalid file name.',
code: 'INVALID_FILE_NAME',
id: 'f449b209-0c60-4e51-84d5-29486263bfd4'
}
}
};
export default define(meta, (ps, user, app, file, cleanup) => new Promise(async (res, rej) => {
export default define(meta, async (ps, user, app, file, cleanup) => {
// Get 'name' parameter
let name = file.originalname;
if (name !== undefined && name !== null) {
@ -64,7 +73,7 @@ export default define(meta, (ps, user, app, file, cleanup) => new Promise(async
} else if (name === 'blob') {
name = null;
} else if (!validateFileName(name)) {
return rej('invalid name');
throw new ApiError(meta.errors.invalidFileName);
}
} else {
name = null;
@ -73,15 +82,11 @@ export default define(meta, (ps, user, app, file, cleanup) => new Promise(async
try {
// Create file
const driveFile = await create(user, file.path, name, null, ps.folderId, ps.force, false, null, null, ps.isSensitive);
cleanup();
res(pack(driveFile, { self: true }));
return pack(driveFile, { self: true });
} catch (e) {
apiLogger.error(e);
throw new ApiError();
} finally {
cleanup();
rej(e);
}
}));
});