* Added an API endpoint to check the existence of the file * fix #2773: Now we can prevent users from posting the same images * bug fix
This commit is contained in:
		
							
								
								
									
										38
									
								
								src/server/api/endpoints/drive/files/check_existence.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								src/server/api/endpoints/drive/files/check_existence.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
import $ from 'cafy';
 | 
			
		||||
import DriveFile, { pack } from '../../../../../models/drive-file';
 | 
			
		||||
import { ILocalUser } from '../../../../../models/user';
 | 
			
		||||
 | 
			
		||||
export const meta = {
 | 
			
		||||
	desc: {
 | 
			
		||||
		'ja-JP': '与えられたMD5ハッシュ値を持つファイルがドライブに存在するかどうかを返します。',
 | 
			
		||||
		'en-US': 'Returns whether the file with the given MD5 hash exists in the user\'s drive.'
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	requireCredential: true,
 | 
			
		||||
 | 
			
		||||
	kind: 'drive-read',
 | 
			
		||||
 | 
			
		||||
	params: {
 | 
			
		||||
		md5: $.str.note({
 | 
			
		||||
			desc: {
 | 
			
		||||
				'ja-JP': 'ファイルのMD5ハッシュ'
 | 
			
		||||
			}
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export default (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
			
		||||
	const [md5, md5Err] = $.str.get(params.md5);
 | 
			
		||||
	if (md5Err) return rej('invalid md5 param');
 | 
			
		||||
 | 
			
		||||
	const file = await DriveFile.findOne({
 | 
			
		||||
		md5: md5,
 | 
			
		||||
		'metadata.userId': user._id
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	if (file === null) {
 | 
			
		||||
		res({ file: null });
 | 
			
		||||
	} else {
 | 
			
		||||
		res({ file: await pack(file) });
 | 
			
		||||
	}
 | 
			
		||||
});
 | 
			
		||||
		Reference in New Issue
	
	Block a user