Refactoring, Clean up and bug fixes
This commit is contained in:
		| @@ -1,4 +1,4 @@ | ||||
| import $ from 'cafy'; import ID from '../../../../../misc/cafy-id'; | ||||
| import $ from 'cafy'; import ID, { transform } from '../../../../../misc/cafy-id'; | ||||
| import DriveFile from '../../../../../models/drive-file'; | ||||
| import { ILocalUser } from '../../../../../models/user'; | ||||
| import getParams from '../../../get-params'; | ||||
| @@ -17,12 +17,14 @@ export const meta = { | ||||
| 	kind: 'drive-read', | ||||
|  | ||||
| 	params: { | ||||
| 		fileId: $.type(ID).note({ | ||||
| 		fileId: { | ||||
| 			validator: $.type(ID), | ||||
| 			transform: transform, | ||||
| 			desc: { | ||||
| 				'ja-JP': '対象のファイルID', | ||||
| 				'en-US': 'Target file ID' | ||||
| 			} | ||||
| 		}) | ||||
| 		} | ||||
| 	} | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -13,11 +13,12 @@ export const meta = { | ||||
| 	kind: 'drive-read', | ||||
|  | ||||
| 	params: { | ||||
| 		md5: $.str.note({ | ||||
| 		md5: { | ||||
| 			validator: $.str, | ||||
| 			desc: { | ||||
| 				'ja-JP': 'ファイルのMD5ハッシュ' | ||||
| 			} | ||||
| 		}) | ||||
| 		} | ||||
| 	} | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| import * as fs from 'fs'; | ||||
| const ms = require('ms'); | ||||
| import $ from 'cafy'; import ID from '../../../../../misc/cafy-id'; | ||||
| import $ from 'cafy'; import ID, { transform } from '../../../../../misc/cafy-id'; | ||||
| import { validateFileName, pack } from '../../../../../models/drive-file'; | ||||
| import create from '../../../../../services/drive/add-file'; | ||||
| import { ILocalUser } from '../../../../../models/user'; | ||||
| @@ -24,27 +24,31 @@ export const meta = { | ||||
| 	kind: 'drive-write', | ||||
|  | ||||
| 	params: { | ||||
| 		folderId: $.type(ID).optional.nullable.note({ | ||||
| 			default: null, | ||||
| 		folderId: { | ||||
| 			validator: $.type(ID).optional.nullable, | ||||
| 			transform: transform, | ||||
| 			default: null as any, | ||||
| 			desc: { | ||||
| 				'ja-JP': 'フォルダID' | ||||
| 			} | ||||
| 		}), | ||||
| 		}, | ||||
|  | ||||
| 		isSensitive: $.bool.optional.note({ | ||||
| 		isSensitive: { | ||||
| 			validator: $.bool.optional, | ||||
| 			default: false, | ||||
| 			desc: { | ||||
| 				'ja-JP': 'このメディアが「閲覧注意」(NSFW)かどうか', | ||||
| 				'en-US': 'Whether this media is NSFW' | ||||
| 			} | ||||
| 		}), | ||||
| 		}, | ||||
|  | ||||
| 		force: $.bool.optional.note({ | ||||
| 		force: { | ||||
| 			validator: $.bool.optional, | ||||
| 			default: false, | ||||
| 			desc: { | ||||
| 				'ja-JP': 'true にすると、同じハッシュを持つファイルが既にアップロードされていても強制的にファイルを作成します。', | ||||
| 			} | ||||
| 		}) | ||||
| 		} | ||||
| 	} | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| import $ from 'cafy'; import ID from '../../../../../misc/cafy-id'; | ||||
| import $ from 'cafy'; import ID, { transform } from '../../../../../misc/cafy-id'; | ||||
| import DriveFile from '../../../../../models/drive-file'; | ||||
| import del from '../../../../../services/drive/delete-file'; | ||||
| import { publishDriveStream } from '../../../../../stream'; | ||||
| @@ -18,12 +18,14 @@ export const meta = { | ||||
| 	kind: 'drive-write', | ||||
|  | ||||
| 	params: { | ||||
| 		fileId: $.type(ID).note({ | ||||
| 		fileId: { | ||||
| 			validator: $.type(ID), | ||||
| 			transform: transform, | ||||
| 			desc: { | ||||
| 				'ja-JP': '対象のファイルID', | ||||
| 				'en-US': 'Target file ID' | ||||
| 			} | ||||
| 		}) | ||||
| 		} | ||||
| 	} | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -1,31 +1,39 @@ | ||||
| import $ from 'cafy'; import ID from '../../../../../misc/cafy-id'; | ||||
| import $ from 'cafy'; import ID, { transform } from '../../../../../misc/cafy-id'; | ||||
| import DriveFile, { pack } from '../../../../../models/drive-file'; | ||||
| import { ILocalUser } from '../../../../../models/user'; | ||||
| import getParams from '../../../get-params'; | ||||
|  | ||||
| export const meta = { | ||||
| 	requireCredential: true, | ||||
|  | ||||
| 	kind: 'drive-read' | ||||
| 	kind: 'drive-read', | ||||
|  | ||||
| 	params: { | ||||
| 		name: { | ||||
| 			validator: $.str | ||||
| 		}, | ||||
|  | ||||
| 		folderId: { | ||||
| 			validator: $.type(ID).optional.nullable, | ||||
| 			transform: transform, | ||||
| 			default: null as any, | ||||
| 			desc: { | ||||
| 				'ja-JP': 'フォルダID' | ||||
| 			} | ||||
| 		}, | ||||
| 	} | ||||
| }; | ||||
|  | ||||
| export default (params: any, user: ILocalUser) => new Promise(async (res, rej) => { | ||||
| 	// Get 'name' parameter | ||||
| 	const [name, nameErr] = $.str.get(params.name); | ||||
| 	if (nameErr) return rej('invalid name param'); | ||||
| 	const [ps, psErr] = getParams(meta, params); | ||||
| 	if (psErr) return rej(psErr); | ||||
|  | ||||
| 	// Get 'folderId' parameter | ||||
| 	const [folderId = null, folderIdErr] = $.type(ID).optional.nullable.get(params.folderId); | ||||
| 	if (folderIdErr) return rej('invalid folderId param'); | ||||
|  | ||||
| 	// Issue query | ||||
| 	const files = await DriveFile | ||||
| 		.find({ | ||||
| 			filename: name, | ||||
| 			'metadata.userId': user._id, | ||||
| 			'metadata.folderId': folderId | ||||
| 			'metadata.folderId': ps.folderId | ||||
| 		}); | ||||
|  | ||||
| 	// Serialize | ||||
| 	res(await Promise.all(files.map(async file => | ||||
| 		await pack(file)))); | ||||
| 	res(await Promise.all(files.map(file => pack(file)))); | ||||
| }); | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| import $ from 'cafy'; import ID from '../../../../../misc/cafy-id'; | ||||
| import $ from 'cafy'; import ID, { transform } from '../../../../../misc/cafy-id'; | ||||
| import DriveFile, { pack } from '../../../../../models/drive-file'; | ||||
| import { ILocalUser } from '../../../../../models/user'; | ||||
| import getParams from '../../../get-params'; | ||||
| @@ -16,12 +16,14 @@ export const meta = { | ||||
| 	kind: 'drive-read', | ||||
|  | ||||
| 	params: { | ||||
| 		fileId: $.type(ID).note({ | ||||
| 		fileId: { | ||||
| 			validator: $.type(ID), | ||||
| 			transform: transform, | ||||
| 			desc: { | ||||
| 				'ja-JP': '対象のファイルID', | ||||
| 				'en-US': 'Target file ID' | ||||
| 			} | ||||
| 		}) | ||||
| 		} | ||||
| 	} | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| import $ from 'cafy'; import ID from '../../../../../misc/cafy-id'; | ||||
| import $ from 'cafy'; import ID, { transform } from '../../../../../misc/cafy-id'; | ||||
| import DriveFolder from '../../../../../models/drive-folder'; | ||||
| import DriveFile, { validateFileName, pack } from '../../../../../models/drive-file'; | ||||
| import { publishDriveStream } from '../../../../../stream'; | ||||
| @@ -17,34 +17,40 @@ export const meta = { | ||||
| 	kind: 'drive-write', | ||||
|  | ||||
| 	params: { | ||||
| 		fileId: $.type(ID).note({ | ||||
| 		fileId: { | ||||
| 			validator: $.type(ID), | ||||
| 			transform: transform, | ||||
| 			desc: { | ||||
| 				'ja-JP': '対象のファイルID' | ||||
| 			} | ||||
| 		}), | ||||
| 		}, | ||||
|  | ||||
| 		folderId: $.type(ID).optional.nullable.note({ | ||||
| 			default: undefined, | ||||
| 		folderId: { | ||||
| 			validator: $.type(ID).optional.nullable, | ||||
| 			transform: transform, | ||||
| 			default: undefined as any, | ||||
| 			desc: { | ||||
| 				'ja-JP': 'フォルダID' | ||||
| 			} | ||||
| 		}), | ||||
| 		}, | ||||
|  | ||||
| 		name: $.str.optional.pipe(validateFileName).note({ | ||||
| 			default: undefined, | ||||
| 		name: { | ||||
| 			validator: $.str.optional.pipe(validateFileName), | ||||
| 			default: undefined as any, | ||||
| 			desc: { | ||||
| 				'ja-JP': 'ファイル名', | ||||
| 				'en-US': 'Name of the file' | ||||
| 			} | ||||
| 		}), | ||||
| 		}, | ||||
|  | ||||
| 		isSensitive: $.bool.optional.note({ | ||||
| 			default: undefined, | ||||
| 		isSensitive: { | ||||
| 			validator: $.bool.optional, | ||||
| 			default: undefined as any, | ||||
| 			desc: { | ||||
| 				'ja-JP': 'このメディアが「閲覧注意」(NSFW)かどうか', | ||||
| 				'en-US': 'Whether this media is NSFW' | ||||
| 			} | ||||
| 		}) | ||||
| 		} | ||||
| 	} | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -1,8 +1,9 @@ | ||||
| import $ from 'cafy'; import ID from '../../../../../misc/cafy-id'; | ||||
| import $ from 'cafy'; import ID, { transform } from '../../../../../misc/cafy-id'; | ||||
| const ms = require('ms'); | ||||
| import { pack } from '../../../../../models/drive-file'; | ||||
| import uploadFromUrl from '../../../../../services/drive/upload-from-url'; | ||||
| import { ILocalUser } from '../../../../../models/user'; | ||||
| import getParams from '../../../get-params'; | ||||
|  | ||||
| export const meta = { | ||||
| 	desc: { | ||||
| @@ -16,21 +17,25 @@ export const meta = { | ||||
|  | ||||
| 	requireCredential: true, | ||||
|  | ||||
| 	kind: 'drive-write' | ||||
| 	kind: 'drive-write', | ||||
|  | ||||
| 	params: { | ||||
| 		url: { | ||||
| 			// TODO: Validate this url | ||||
| 			validator: $.str, | ||||
| 		}, | ||||
|  | ||||
| 		folderId: { | ||||
| 			validator: $.type(ID).optional.nullable, | ||||
| 			default: null as any as any, | ||||
| 			transform: transform | ||||
| 		}, | ||||
| 	} | ||||
| }; | ||||
|  | ||||
| /** | ||||
|  * Create a file from a URL | ||||
|  */ | ||||
| export default async (params: any, user: ILocalUser): Promise<any> => { | ||||
| 	// Get 'url' parameter | ||||
| 	// TODO: Validate this url | ||||
| 	const [url, urlErr] = $.str.get(params.url); | ||||
| 	if (urlErr) throw 'invalid url param'; | ||||
| 	const [ps, psErr] = getParams(meta, params); | ||||
| 	if (psErr) throw psErr; | ||||
|  | ||||
| 	// Get 'folderId' parameter | ||||
| 	const [folderId = null, folderIdErr] = $.type(ID).optional.nullable.get(params.folderId); | ||||
| 	if (folderIdErr) throw 'invalid folderId param'; | ||||
|  | ||||
| 	return pack(await uploadFromUrl(url, user, folderId)); | ||||
| 	return pack(await uploadFromUrl(ps.url, user, ps.folderId)); | ||||
| }; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 syuilo
					syuilo