Skip to content

Commit 2ba37a7

Browse files
committed
head
Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
1 parent 4da970e commit 2ba37a7

File tree

4 files changed

+59
-1
lines changed

4 files changed

+59
-1
lines changed

.vscode/launch.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,24 @@
155155
"request": "launch",
156156
"url": "http://localhost:8080",
157157
"webRoot": "${workspaceFolder}/apps/client"
158+
},
159+
160+
{
161+
"name": "Launch Server NestJS",
162+
"type": "node",
163+
"request": "launch",
164+
"runtimeExecutable": "pnpm",
165+
"runtimeArgs": [
166+
"run",
167+
"start:debug"
168+
],
169+
"cwd": "${workspaceFolder}/apps/server-nestjs",
170+
"console": "internalConsole",
171+
"restart": true,
172+
"skipFiles": [
173+
"<node_internals>/**",
174+
"${workspaceFolder}/node_modules/**/*.js"
175+
]
158176
}
159177
],
160178
"compounds": [

apps/server-nestjs/src/cpin-module/infrastructure/configuration/configuration.service.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export class ConfigurationService {
1919

2020
// keycloak
2121
sessionSecret = process.env.SESSION_SECRET
22+
keycloakUrl = process.env.KEYCLOAK_URL
2223
keycloakProtocol = process.env.KEYCLOAK_PROTOCOL
2324
keycloakDomain = process.env.KEYCLOAK_DOMAIN
2425
keycloakRealm = process.env.KEYCLOAK_REALM

apps/server-nestjs/src/modules/gitlab/gitlab-controller.service.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { Inject, Injectable, Logger, type OnApplicationBootstrap } from '@nestjs
22
import { OnEvent } from '@nestjs/event-emitter'
33
import { Cron, CronExpression } from '@nestjs/schedule'
44
import { AccessLevel, type MemberSchema, type ProjectSchema, type SimpleUserSchema } from '@gitbeaker/core'
5-
import { DISABLED, ENABLED } from '@cpn-console/shared'
65
import { ConfigurationService } from '@/cpin-module/infrastructure/configuration/configuration.service'
76
import { GitlabDatastoreService } from './gitlab-datastore.service'
87
import type { ProjectWithDetails } from './gitlab-datastore.service'
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { Controller, Get } from '@nestjs/common'
2+
import { Monitor, type MonitorInfos, MonitorStatus } from '@cpn-console/shared'
3+
import type { ConfigurationService } from '../../cpin-module/infrastructure/configuration/configuration.service'
4+
5+
@Controller('keycloak')
6+
export class KeycloakController {
7+
private monitor: Monitor
8+
9+
constructor(
10+
private readonly configService: ConfigurationService,
11+
) {
12+
this.monitor = new Monitor(async (instance): Promise<MonitorInfos> => {
13+
instance.lastStatus.lastUpdateTimestamp = (new Date()).getTime()
14+
try {
15+
if (!this.configService.keycloakUrl) {
16+
throw new Error('keycloakUrl is not defined')
17+
}
18+
const res = await fetch(this.configService.keycloakUrl)
19+
if (res.status === 200) {
20+
instance.lastStatus.status = MonitorStatus.OK
21+
instance.lastStatus.message = MonitorStatus.OK
22+
return instance.lastStatus
23+
}
24+
instance.lastStatus.status = MonitorStatus.ERROR
25+
instance.lastStatus.message = 'Service en erreur'
26+
return instance.lastStatus
27+
} catch (error) {
28+
instance.lastStatus.message = 'Erreur lors la requête'
29+
instance.lastStatus.status = MonitorStatus.UNKNOW
30+
instance.lastStatus.cause = error
31+
}
32+
return instance.lastStatus
33+
})
34+
}
35+
36+
@Get('status')
37+
async status(): Promise<MonitorInfos> {
38+
return this.monitor.lastStatus
39+
}
40+
}

0 commit comments

Comments
 (0)