Skip to content

Commit 8de6b1f

Browse files
authored
Merge pull request #513 from Minei3oat/kitctf
Add KITCTF parser
2 parents a2a3985 + 532ba20 commit 8de6b1f

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

front/src/ctfnote/parsers/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import justCTFParser from './justctf';
66
import AngstromParser from './angstrom';
77
import CINIParser from './cini';
88
import HitconParser from './hitcon';
9+
import KITCTFParser from './kitctf';
910

1011
export type ParsedTask = {
1112
title: string;
@@ -29,4 +30,5 @@ export default [
2930
AngstromParser,
3031
CINIParser,
3132
HitconParser,
33+
KITCTFParser,
3234
];
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { ParsedTask, Parser } from '.';
2+
import { parseJsonStrict } from '../utils';
3+
4+
const KITCTFParser: Parser = {
5+
name: 'KITCTF parser',
6+
hint: 'paste /api/challenges',
7+
8+
parse(s: string): ParsedTask[] {
9+
const tasks = [];
10+
const data =
11+
parseJsonStrict<
12+
Array<{ name: string; tags: string[]; description: string }>
13+
>(s);
14+
if (!Array.isArray(data)) {
15+
return [];
16+
}
17+
for (const task of data) {
18+
if (!task.name || !task.tags) {
19+
continue;
20+
}
21+
tasks.push({
22+
title: task.name,
23+
tags: task.tags,
24+
description: task.description,
25+
});
26+
}
27+
return tasks;
28+
},
29+
};
30+
31+
export default KITCTFParser;

0 commit comments

Comments
 (0)