Home4/src/main/java/de/ph87/home/device/DeviceController.java
2024-11-20 12:49:26 +01:00

51 lines
2.0 KiB
Java

package de.ph87.home.device;
import de.ph87.home.property.PropertyNotFound;
import de.ph87.home.property.PropertyNotWritable;
import de.ph87.home.property.PropertyTypeMismatch;
import jakarta.annotation.Nullable;
import jakarta.servlet.http.HttpServletRequest;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("Device")
public class DeviceController {
private final DeviceService deviceService;
@NonNull
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
private List<DeviceDto> list(@RequestBody(required = false) @Nullable final DeviceFilter filter, @NonNull final HttpServletRequest request) throws PropertyTypeMismatch {
log.debug("list: path={} filter={}", request.getServletPath(), filter);
return deviceService.list(filter);
}
@NonNull
@GetMapping("get/{uuidOrSlug}")
private DeviceDto get(@PathVariable @NonNull final String uuidOrSlug, @NonNull final HttpServletRequest request) throws DeviceNotFound {
log.debug("get: path={}", request.getServletPath());
return deviceService.toDto(uuidOrSlug);
}
@Nullable
@GetMapping("getState/{uuidOrSlug}")
private Boolean getState(@PathVariable @NonNull final String uuidOrSlug, @NonNull final HttpServletRequest request) throws DeviceNotFound, PropertyTypeMismatch {
log.debug("getState: path={}", request.getServletPath());
return deviceService.toDto(uuidOrSlug).getStateValue();
}
@GetMapping("setState/{uuidOrSlug}/{state}")
private void setState(@PathVariable @NonNull final String uuidOrSlug, @PathVariable final boolean state, @NonNull final HttpServletRequest request) throws PropertyNotFound, DeviceNotFound, PropertyNotWritable, PropertyTypeMismatch {
log.debug("setState: path={}", request.getServletPath());
deviceService.setState(uuidOrSlug, state);
}
}