-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhealthCheck.ts
More file actions
85 lines (77 loc) · 2.15 KB
/
healthCheck.ts
File metadata and controls
85 lines (77 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import { apiSpec, httpRoute, httpRequest, HttpResponse } from '@api-ts/io-ts-http';
import { createRouter, type WrappedRouter } from '@api-ts/typed-express-router';
import { Response } from '@api-ts/response';
import pjson from '../../../package.json';
import { responseHandler } from '../../shared/middleware';
import { PingResponseType, VersionResponseType } from '../../types/health';
import { customDecodeErrorFormatter } from '../../shared/errorFormatters';
// API Response types
const PingResponse: HttpResponse = {
200: PingResponseType,
};
const VersionResponse: HttpResponse = {
200: VersionResponseType,
};
/**
* Ping (AWM)
*
* Test your connection to the Advanced Wallet Manager (AWM) server.
*
* @tag Advanced Wallets
* @operationId advancedwallet.awm.ping
*/
const PingRoute = httpRoute({
method: 'POST',
path: '/ping',
request: httpRequest({}),
response: PingResponse,
description: 'Health check endpoint that returns server status',
});
/**
* Check Version (AWM)
*
* Check your version of the Advanced Wallet Manager (AWM) server.
*
* @tag Advanced Wallets
* @operationId advancedwallet.awm.version
*/
const VersionRoute = httpRoute({
method: 'GET',
path: '/version',
request: httpRequest({}),
response: VersionResponse,
description: 'Returns the current version of the server',
});
export const HealthCheckApiSpec = apiSpec({
'advancedwallet.awm.ping': {
post: PingRoute,
},
'advancedwallet.awm.version': {
get: VersionRoute,
},
});
// Create router with handlers
export function createHealthCheckRouter(): WrappedRouter<typeof HealthCheckApiSpec> {
const router = createRouter(HealthCheckApiSpec, {
decodeErrorFormatter: customDecodeErrorFormatter,
});
// Ping endpoint handler
router.post('advancedwallet.awm.ping', [
responseHandler(() =>
Response.ok({
status: 'advanced wallet manager server is ok!',
timestamp: new Date().toISOString(),
}),
),
]);
// Version endpoint handler
router.get('advancedwallet.awm.version', [
responseHandler(() =>
Response.ok({
version: pjson.version,
name: pjson.name,
}),
),
]);
return router;
}