summaryrefslogtreecommitdiff
path: root/src/server/api/get-params.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2018-07-07 02:55:52 +0900
committerGitHub <noreply@github.com>2018-07-07 02:55:52 +0900
commitd5bad25c63f1b1d095da8b523dc02be471d7071a (patch)
tree381ce23594925e56ba09c16de076932193f35b47 /src/server/api/get-params.ts
parentMerge pull request #1846 from syuilo/l10n_master (diff)
parentw (diff)
downloadmisskey-d5bad25c63f1b1d095da8b523dc02be471d7071a.tar.gz
misskey-d5bad25c63f1b1d095da8b523dc02be471d7071a.tar.bz2
misskey-d5bad25c63f1b1d095da8b523dc02be471d7071a.zip
Merge pull request #1854 from syuilo/apis
:v:
Diffstat (limited to 'src/server/api/get-params.ts')
-rw-r--r--src/server/api/get-params.ts27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/server/api/get-params.ts b/src/server/api/get-params.ts
new file mode 100644
index 0000000000..e495e3ef3e
--- /dev/null
+++ b/src/server/api/get-params.ts
@@ -0,0 +1,27 @@
+import { Context } from 'cafy';
+
+type Defs = {
+ params: { [key: string]: Context<any> }
+};
+
+export default function <T extends Defs>(defs: T, params: any): [{
+ [P in keyof T['params']]: ReturnType<T['params'][P]['get']>[0];
+}, Error] {
+ const x: any = {};
+ let err: Error = null;
+ Object.keys(defs.params).some(k => {
+ const [v, e] = defs.params[k].get(params[k]);
+ if (e) {
+ err = e;
+ return true;
+ } else {
+ if (v === undefined && defs.params[k].data.default) {
+ x[k] = defs.params[k].data.default;
+ } else {
+ x[k] = v;
+ }
+ return false;
+ }
+ });
+ return [x, err];
+}