Refactor
This commit is contained in:
		
							parent
							
								
									31c26354c5
								
							
						
					
					
						commit
						772063aade
					
				
					 5 changed files with 39 additions and 83 deletions
				
			
		|  | @ -30,6 +30,7 @@ | |||
| <script lang="ts"> | ||||
| import Vue from 'vue'; | ||||
| import i18n from '../../i18n'; | ||||
| import { kinds } from '../../../../server/api/kinds'; | ||||
| 
 | ||||
| export default Vue.extend({ | ||||
| 	i18n: i18n('dev/views/new-app.vue'), | ||||
|  | @ -40,14 +41,9 @@ export default Vue.extend({ | |||
| 			cb: '', | ||||
| 			nidState: null, | ||||
| 			permission: [], | ||||
| 			permissionsList: [] | ||||
| 			permissionsList: kinds | ||||
| 		}; | ||||
| 	}, | ||||
| 	created() { | ||||
| 		this.$root.api('permissions').then(permissions => { | ||||
| 			this.permissionsList = permissions | ||||
| 		}); | ||||
| 	}, | ||||
| 	methods: { | ||||
| 		onSubmit() { | ||||
| 			this.$root.api('app/create', { | ||||
|  |  | |||
|  | @ -1,29 +0,0 @@ | |||
| import define from '../define'; | ||||
| import { kindsList } from '../kinds'; | ||||
| 
 | ||||
| export const meta = { | ||||
| 	stability: 'stable', | ||||
| 
 | ||||
| 	desc: { | ||||
| 		'ja-JP': 'パーミッションの一覧を返します。', | ||||
| 		'en-US': 'Get the list of permissons.' | ||||
| 	}, | ||||
| 
 | ||||
| 	tags: ['meta'], | ||||
| 
 | ||||
| 	requireCredential: false, | ||||
| 
 | ||||
| 	params: { | ||||
| 	}, | ||||
| 
 | ||||
| 	res: { | ||||
| 		type: 'array', | ||||
| 		items: { | ||||
| 			type: 'string', | ||||
| 		} | ||||
| 	}, | ||||
| }; | ||||
| 
 | ||||
| export default define(meta, async () => { | ||||
| 	return kindsList; | ||||
| }); | ||||
|  | @ -1,8 +1,4 @@ | |||
| import endpoints from './endpoints'; | ||||
| import * as locale from '../../../locales/'; | ||||
| import { fromEntries } from '../../prelude/array'; | ||||
| 
 | ||||
| export const kindsList = [ | ||||
| export const kinds = [ | ||||
| 	'read:account', | ||||
| 	'write:account', | ||||
| 	'read:blocks', | ||||
|  | @ -24,35 +20,3 @@ export const kindsList = [ | |||
| 	'write:reactions', | ||||
| 	'write:votes' | ||||
| ]; | ||||
| 
 | ||||
| export interface IKindInfo { | ||||
| 	endpoints: string[]; | ||||
| 	descs: { [x: string]: string; }; | ||||
| } | ||||
| 
 | ||||
| export function kinds() { | ||||
| 	const kinds = fromEntries( | ||||
| 		kindsList | ||||
| 			.map(k => [k, { | ||||
| 					endpoints: [], | ||||
| 					descs: fromEntries( | ||||
| 						Object.keys(locale) | ||||
| 							.map(l => [l, locale[l].common.permissions[k] as string] as [string, string]) | ||||
| 						) as { [x: string]: string; } | ||||
| 				}] as [ string, IKindInfo ]) | ||||
| 			) as { [x: string]: IKindInfo; }; | ||||
| 
 | ||||
| 	const errors = [] as string[][]; | ||||
| 
 | ||||
| 	for (const endpoint of endpoints.filter(ep => !ep.meta.secure)) { | ||||
| 		if (endpoint.meta.kind) { | ||||
| 			const kind = endpoint.meta.kind; | ||||
| 			if (kind in kinds) kinds[kind].endpoints.push(endpoint.name); | ||||
| 			else errors.push([kind, endpoint.name]); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if (errors.length > 0) throw Error('\n  ' + errors.map((e) => `Unknown kind (permission) "${e[0]}" found at ${e[1]}.`).join('\n  ')); | ||||
| 
 | ||||
| 	return kinds; | ||||
| } | ||||
|  |  | |||
|  | @ -1,5 +1,40 @@ | |||
| import config from '../../../config'; | ||||
| import { IKindInfo, kinds } from '../kinds'; | ||||
| import endpoints from '../endpoints'; | ||||
| import * as locale from '../../../../locales/'; | ||||
| import { fromEntries } from '../../../prelude/array'; | ||||
| import { kinds as kindsList } from '../kinds'; | ||||
| 
 | ||||
| export interface IKindInfo { | ||||
| 	endpoints: string[]; | ||||
| 	descs: { [x: string]: string; }; | ||||
| } | ||||
| 
 | ||||
| export function kinds() { | ||||
| 	const kinds = fromEntries( | ||||
| 		kindsList | ||||
| 			.map(k => [k, { | ||||
| 					endpoints: [], | ||||
| 					descs: fromEntries( | ||||
| 						Object.keys(locale) | ||||
| 							.map(l => [l, locale[l].common.permissions[k] as string] as [string, string]) | ||||
| 						) as { [x: string]: string; } | ||||
| 				}] as [ string, IKindInfo ]) | ||||
| 			) as { [x: string]: IKindInfo; }; | ||||
| 
 | ||||
| 	const errors = [] as string[][]; | ||||
| 
 | ||||
| 	for (const endpoint of endpoints.filter(ep => !ep.meta.secure)) { | ||||
| 		if (endpoint.meta.kind) { | ||||
| 			const kind = endpoint.meta.kind; | ||||
| 			if (kind in kinds) kinds[kind].endpoints.push(endpoint.name); | ||||
| 			else errors.push([kind, endpoint.name]); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if (errors.length > 0) throw Error('\n  ' + errors.map((e) => `Unknown kind (permission) "${e[0]}" found at ${e[1]}.`).join('\n  ')); | ||||
| 
 | ||||
| 	return kinds; | ||||
| } | ||||
| 
 | ||||
| export function getDescription(lang = 'ja-JP'): string { | ||||
| 	const permissionTable = (Object.entries(kinds()) as [string, IKindInfo][]) | ||||
|  |  | |||
							
								
								
									
										10
									
								
								test/api.ts
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								test/api.ts
									
										
									
									
									
								
							|  | @ -18,8 +18,6 @@ import * as assert from 'assert'; | |||
| import * as childProcess from 'child_process'; | ||||
| import { async, signup, request, post, react, uploadFile } from './utils'; | ||||
| 
 | ||||
| import { kinds } from '../src/server/api/kinds'; | ||||
| 
 | ||||
| describe('API', () => { | ||||
| 	let p: childProcess.ChildProcess; | ||||
| 
 | ||||
|  | @ -967,13 +965,5 @@ describe('API', () => { | |||
| 			assert.strictEqual(res.body[0].id, alicePost.id); | ||||
| 		})); | ||||
| 	}); | ||||
| 
 | ||||
| 	describe('kinds', () => { | ||||
| 		it('登録されていないパーミッションを利用しているAPIがない', () => { | ||||
| 			const res = kinds(); | ||||
| 
 | ||||
| 			assert.strictEqual(typeof res === 'object', true); | ||||
| 		}); | ||||
| 	}); | ||||
| }); | ||||
| */ | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue