Files
htop-web/backend/src/main/java/com/htopweb/system/SystemMetricsController.java
T
2026-10-28 22:04:40 +01:00

76 lines
2.7 KiB
Java

package com.htopweb.system;
import com.htopweb.system.linux.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;
import reactor.core.scheduler.Schedulers;
import java.util.List;
@RestController
@RequestMapping("/api/system")
public class SystemMetricsController {
private final SystemMetricsService _systemMetricsService;
private final LinuxDetailsService _linuxDetailsService;
private final CpuDetailsService _cpuDetailsService;
private final LinuxMemoryService _linuxMemoryService;
private final LinuxDiskService _linuxDiskService;
private final LinuxNetworkService _linuxNetworkService;
public SystemMetricsController(
SystemMetricsService systemMetricsService,
LinuxDetailsService linuxDetailsService,
CpuDetailsService cpuDetailsService,
LinuxMemoryService linuxMemoryService,
LinuxDiskService linuxDiskService,
LinuxNetworkService linuxNetworkService
) {
_systemMetricsService = systemMetricsService;
_linuxDetailsService = linuxDetailsService;
_cpuDetailsService = cpuDetailsService;
_linuxMemoryService = linuxMemoryService;
_linuxDiskService = linuxDiskService;
_linuxNetworkService = linuxNetworkService;
}
@GetMapping("/metrics")
public Mono<SystemMetricsResponse> getMetrics() {
return Mono.fromCallable(_systemMetricsService::getMetrics)
.subscribeOn(Schedulers.boundedElastic());
}
@GetMapping("/linux")
public Mono<LinuxDetailsResponse> getLinuxDetails() {
return Mono.fromCallable(_linuxDetailsService::getDetails)
.subscribeOn(Schedulers.boundedElastic());
}
@GetMapping("/cpu")
public Mono<CpuDetailsResponse> getCpuDetails() {
return Mono.fromCallable(_cpuDetailsService::getDetails)
.subscribeOn(Schedulers.boundedElastic());
}
@GetMapping("/linux/memory")
public Mono<LinuxMemoryResponse> getLinuxMemory() {
return Mono.fromCallable(_linuxMemoryService::getDetails)
.subscribeOn(Schedulers.boundedElastic());
}
@GetMapping("/linux/disks")
public Mono<List<LinuxDiskResponse>> getLinuxDisks() {
return Mono.fromCallable(_linuxDiskService::getDisks)
.subscribeOn(Schedulers.boundedElastic());
}
@GetMapping("/linux/network")
public Mono<List<LinuxNetworkResponse>> getLinuxNetwork() {
return Mono.fromCallable(_linuxNetworkService::getInterfaces)
.subscribeOn(Schedulers.boundedElastic());
}
}