@@ -4,20 +4,20 @@ import com.fasterxml.jackson.databind.PropertyNamingStrategies
4
4
import com.fasterxml.jackson.databind.node.ObjectNode
5
5
import com.fasterxml.jackson.dataformat.yaml.YAMLMapper
6
6
import com.fasterxml.jackson.module.kotlin.kotlinModule
7
- import com.kuvaszuptime.kuvasz.config.MonitorConfig
7
+ import com.kuvaszuptime.kuvasz.config.HttpMonitorConfig
8
8
import com.kuvaszuptime.kuvasz.jooq.enums.SslStatus
9
9
import com.kuvaszuptime.kuvasz.jooq.enums.UptimeStatus
10
10
import com.kuvaszuptime.kuvasz.models.ServiceError
11
- import com.kuvaszuptime.kuvasz.models.dto.MonitorCreateDto
12
- import com.kuvaszuptime.kuvasz.models.dto.MonitorDetailsDto
13
- import com.kuvaszuptime.kuvasz.models.dto.MonitorDto
14
- import com.kuvaszuptime.kuvasz.models.dto.MonitorExportDto
15
- import com.kuvaszuptime.kuvasz.models.dto.MonitorStatsDto
16
- import com.kuvaszuptime.kuvasz.models.dto.MonitoringStatsDto
11
+ import com.kuvaszuptime.kuvasz.models.dto.HttpMonitorCreateDto
12
+ import com.kuvaszuptime.kuvasz.models.dto.HttpMonitorDetailsDto
13
+ import com.kuvaszuptime.kuvasz.models.dto.HttpMonitorDto
14
+ import com.kuvaszuptime.kuvasz.models.dto.HttpMonitorExportDto
15
+ import com.kuvaszuptime.kuvasz.models.dto.HttpMonitorStatsDto
16
+ import com.kuvaszuptime.kuvasz.models.dto.HttpMonitoringStatsDto
17
+ import com.kuvaszuptime.kuvasz.models.dto.HttpUptimeEventDto
17
18
import com.kuvaszuptime.kuvasz.models.dto.SSLEventDto
18
- import com.kuvaszuptime.kuvasz.models.dto.UptimeEventDto
19
- import com.kuvaszuptime.kuvasz.services.MonitorCrudService
20
19
import com.kuvaszuptime.kuvasz.services.StatCalculator
20
+ import com.kuvaszuptime.kuvasz.services.check.http.HttpMonitorCrudService
21
21
import io.micronaut.http.HttpStatus
22
22
import io.micronaut.http.MediaType
23
23
import io.micronaut.http.annotation.Controller
@@ -41,19 +41,18 @@ import java.io.File
41
41
import java.time.Duration
42
42
import java.time.Instant
43
43
44
- const val API_V1_PREFIX = " /api/v1"
45
-
46
44
@Controller(" $API_V1_PREFIX /monitors" , produces = [MediaType .APPLICATION_JSON ])
47
45
@Validated
48
- @Tag(name = " HTTP monitors" )
46
+ @Tag(name = " HTTP monitors (V1, deprecated)" )
47
+ @Deprecated(" Use HttpMonitorControllerV2" )
49
48
@SecurityRequirements(
50
49
SecurityRequirement (name = " apiKey" ),
51
50
SecurityRequirement (name = " bearerAuth" )
52
51
)
53
- class MonitorController (
54
- private val monitorCrudService : MonitorCrudService ,
52
+ class HttpMonitorControllerV1 (
53
+ private val monitorCrudService : HttpMonitorCrudService ,
55
54
private val statCalculator : StatCalculator ,
56
- ) : MonitorOperations {
55
+ ) : HttpMonitorOperationsV1 {
57
56
58
57
private val yamlMapper = YAMLMapper ()
59
58
.registerModules(kotlinModule())
@@ -63,7 +62,7 @@ class MonitorController(
63
62
ApiResponse (
64
63
responseCode = " 200" ,
65
64
description = " Successful query" ,
66
- content = [Content (array = ArraySchema (schema = Schema (implementation = MonitorDetailsDto ::class )))]
65
+ content = [Content (array = ArraySchema (schema = Schema (implementation = HttpMonitorDetailsDto ::class )))]
67
66
)
68
67
)
69
68
@ExecuteOn(TaskExecutors .IO )
@@ -72,7 +71,7 @@ class MonitorController(
72
71
@QueryValue uptimeStatus : List <UptimeStatus >? ,
73
72
@QueryValue sslStatus : List <SslStatus >? ,
74
73
@QueryValue sslCheckEnabled : Boolean? ,
75
- ): List <MonitorDetailsDto > =
74
+ ): List <HttpMonitorDetailsDto > =
76
75
monitorCrudService.getMonitorsWithDetails(
77
76
enabled = enabled,
78
77
uptimeStatus = uptimeStatus.orEmpty(),
@@ -84,7 +83,7 @@ class MonitorController(
84
83
ApiResponse (
85
84
responseCode = " 200" ,
86
85
description = " Successful query" ,
87
- content = [Content (schema = Schema (implementation = MonitorDetailsDto ::class ))]
86
+ content = [Content (schema = Schema (implementation = HttpMonitorDetailsDto ::class ))]
88
87
),
89
88
ApiResponse (
90
89
responseCode = " 404" ,
@@ -93,15 +92,15 @@ class MonitorController(
93
92
)
94
93
)
95
94
@ExecuteOn(TaskExecutors .IO )
96
- override fun getMonitorDetails (monitorId : Long ): MonitorDetailsDto =
95
+ override fun getMonitorDetails (monitorId : Long ): HttpMonitorDetailsDto =
97
96
monitorCrudService.getMonitorDetails(monitorId)
98
97
99
98
@Status(HttpStatus .CREATED )
100
99
@ApiResponses(
101
100
ApiResponse (
102
101
responseCode = " 201" ,
103
102
description = " Successful creation" ,
104
- content = [Content (schema = Schema (implementation = MonitorDto ::class ))]
103
+ content = [Content (schema = Schema (implementation = HttpMonitorDto ::class ))]
105
104
),
106
105
ApiResponse (
107
106
responseCode = " 400" ,
@@ -115,10 +114,10 @@ class MonitorController(
115
114
)
116
115
)
117
116
@ExecuteOn(TaskExecutors .IO )
118
- @ReadOnlyIfYaml
119
- override fun createMonitor (@Valid monitor : MonitorCreateDto ): MonitorDto {
117
+ @CheckHttpMonitorsWritable
118
+ override fun createMonitor (@Valid monitor : HttpMonitorCreateDto ): HttpMonitorDto {
120
119
val createdMonitor = monitorCrudService.createMonitor(monitor)
121
- return MonitorDto .fromMonitorRecord(createdMonitor)
120
+ return HttpMonitorDto .fromMonitorRecord(createdMonitor)
122
121
}
123
122
124
123
@Status(HttpStatus .NO_CONTENT )
@@ -139,14 +138,14 @@ class MonitorController(
139
138
)
140
139
)
141
140
@ExecuteOn(TaskExecutors .IO )
142
- @ReadOnlyIfYaml
141
+ @CheckHttpMonitorsWritable
143
142
override fun deleteMonitor (monitorId : Long ) = monitorCrudService.deleteMonitorById(monitorId)
144
143
145
144
@ApiResponses(
146
145
ApiResponse (
147
146
responseCode = " 200" ,
148
147
description = " Successful update" ,
149
- content = [Content (schema = Schema (implementation = MonitorDto ::class ))]
148
+ content = [Content (schema = Schema (implementation = HttpMonitorDto ::class ))]
150
149
),
151
150
ApiResponse (
152
151
responseCode = " 400" ,
@@ -165,21 +164,21 @@ class MonitorController(
165
164
)
166
165
)
167
166
@ExecuteOn(TaskExecutors .IO )
168
- @ReadOnlyIfYaml
169
- override fun updateMonitor (monitorId : Long , updates : ObjectNode ): MonitorDto {
167
+ @CheckHttpMonitorsWritable
168
+ override fun updateMonitor (monitorId : Long , updates : ObjectNode ): HttpMonitorDto {
170
169
val updatedMonitor = monitorCrudService.updateMonitor(monitorId, updates)
171
- return MonitorDto .fromMonitorRecord(updatedMonitor)
170
+ return HttpMonitorDto .fromMonitorRecord(updatedMonitor)
172
171
}
173
172
174
173
@ApiResponses(
175
174
ApiResponse (
176
175
responseCode = " 200" ,
177
176
description = " Successful query" ,
178
- content = [Content (array = ArraySchema (schema = Schema (implementation = UptimeEventDto ::class )))]
177
+ content = [Content (array = ArraySchema (schema = Schema (implementation = HttpUptimeEventDto ::class )))]
179
178
)
180
179
)
181
180
@ExecuteOn(TaskExecutors .IO )
182
- override fun getUptimeEvents (monitorId : Long ): List <UptimeEventDto > =
181
+ override fun getUptimeEvents (monitorId : Long ): List <HttpUptimeEventDto > =
183
182
monitorCrudService.getUptimeEventsByMonitorId(monitorId)
184
183
185
184
@ApiResponses(
@@ -197,7 +196,7 @@ class MonitorController(
197
196
ApiResponse (
198
197
responseCode = " 200" ,
199
198
description = " Successful query" ,
200
- content = [Content (schema = Schema (implementation = MonitorStatsDto ::class ))]
199
+ content = [Content (schema = Schema (implementation = HttpMonitorStatsDto ::class ))]
201
200
),
202
201
ApiResponse (
203
202
responseCode = " 404" ,
@@ -209,7 +208,7 @@ class MonitorController(
209
208
override fun getMonitorStats (
210
209
monitorId : Long ,
211
210
@QueryValue period : Duration ? ,
212
- ): MonitorStatsDto {
211
+ ): HttpMonitorStatsDto {
213
212
val effectivePeriod = period ? : Duration .ofDays(MONITOR_STATS_PERIOD_DEFAULT_DAYS )
214
213
return monitorCrudService.getMonitorStats(
215
214
monitorId = monitorId,
@@ -229,8 +228,8 @@ class MonitorController(
229
228
override fun getYamlMonitorsExport (): SystemFile {
230
229
val file = File .createTempFile(" temp" , EXPORT_FILE_NAME_PREFIX )
231
230
val export = mapOf (
232
- MonitorConfig . CONFIG_PREFIX to monitorCrudService.getMonitorsExport ()
233
- .map { MonitorExportDto .fromMonitorRecord(it) }
231
+ HttpMonitorConfig . LEGACY_CONFIG_PREFIX to monitorCrudService.getHttpMonitorsExport ()
232
+ .map { HttpMonitorExportDto .fromMonitorRecord(it) }
234
233
)
235
234
yamlMapper.writeValue(file, export)
236
235
val finalFileName = EXPORT_FILE_NAME_PREFIX + Instant .now().epochSecond + EXPORT_FILE_EXTENSION
@@ -242,12 +241,12 @@ class MonitorController(
242
241
ApiResponse (
243
242
responseCode = " 200" ,
244
243
description = " Successful query" ,
245
- content = [Content (schema = Schema (implementation = MonitoringStatsDto ::class ))]
244
+ content = [Content (schema = Schema (implementation = HttpMonitoringStatsDto ::class ))]
246
245
)
247
246
)
248
247
@ExecuteOn(TaskExecutors .IO )
249
- override fun getMonitoringStats (period : Duration ? ): MonitoringStatsDto {
250
- return statCalculator.calculateOverallStats (period ? : Duration .ofDays(MONITORING_STATS_PERIOD_DEFAULT_DAYS ))
248
+ override fun getMonitoringStats (period : Duration ? ): HttpMonitoringStatsDto {
249
+ return statCalculator.calculateOverallHttpStats (period ? : Duration .ofDays(MONITORING_STATS_PERIOD_DEFAULT_DAYS ))
251
250
}
252
251
253
252
companion object {
0 commit comments