diff options
Diffstat (limited to 'shared/extra-utils/mock-servers/mock-instances-index.ts')
-rw-r--r-- | shared/extra-utils/mock-servers/mock-instances-index.ts | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/shared/extra-utils/mock-servers/mock-instances-index.ts b/shared/extra-utils/mock-servers/mock-instances-index.ts new file mode 100644 index 000000000..2604eda03 --- /dev/null +++ b/shared/extra-utils/mock-servers/mock-instances-index.ts | |||
@@ -0,0 +1,38 @@ | |||
1 | import * as express from 'express' | ||
2 | |||
3 | export class MockInstancesIndex { | ||
4 | private readonly indexInstances: { host: string, createdAt: string }[] = [] | ||
5 | |||
6 | initialize () { | ||
7 | return new Promise<void>(res => { | ||
8 | const app = express() | ||
9 | |||
10 | app.use('/', (req: express.Request, res: express.Response, next: express.NextFunction) => { | ||
11 | if (process.env.DEBUG) console.log('Receiving request on mocked server %s.', req.url) | ||
12 | |||
13 | return next() | ||
14 | }) | ||
15 | |||
16 | app.get('/api/v1/instances/hosts', (req: express.Request, res: express.Response) => { | ||
17 | const since = req.query.since | ||
18 | |||
19 | const filtered = this.indexInstances.filter(i => { | ||
20 | if (!since) return true | ||
21 | |||
22 | return i.createdAt > since | ||
23 | }) | ||
24 | |||
25 | return res.json({ | ||
26 | total: filtered.length, | ||
27 | data: filtered | ||
28 | }) | ||
29 | }) | ||
30 | |||
31 | app.listen(42101, () => res()) | ||
32 | }) | ||
33 | } | ||
34 | |||
35 | addInstance (host: string) { | ||
36 | this.indexInstances.push({ host, createdAt: new Date().toISOString() }) | ||
37 | } | ||
38 | } | ||