51 lines
2.0 KiB
Java
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);
|
|
}
|
|
|
|
}
|