diff --git a/src/main/java/com/backend/glowhouse/AWS/sns/SnsNotificationSender.java b/src/main/java/com/backend/glowhouse/AWS/sns/SnsNotificationSender.java new file mode 100644 index 0000000000000000000000000000000000000000..ac5a90215a0aa453ad4930ccb6ebb442c009052e --- /dev/null +++ b/src/main/java/com/backend/glowhouse/AWS/sns/SnsNotificationSender.java @@ -0,0 +1,18 @@ +package com.backend.glowhouse.aws.sns; + +import com.amazonaws.services.sns.AmazonSNS; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.aws.messaging.core.NotificationMessagingTemplate; + +public class SnsNotificationSender { + private final NotificationMessagingTemplate notificationMessagingTemplate; + + @Autowired + public SnsNotificationSender(AmazonSNS amazonSns) { + this.notificationMessagingTemplate = new NotificationMessagingTemplate(amazonSns); + } + + public void sendIOCommandForLight(String subject, String message) { + this.notificationMessagingTemplate.sendNotification("awsiot_to_localgateway", message, subject); + } +} \ No newline at end of file diff --git a/src/main/java/com/backend/glowhouse/controller/DeviceDataController.java b/src/main/java/com/backend/glowhouse/controller/DeviceDataController.java new file mode 100644 index 0000000000000000000000000000000000000000..e823daeb4e98a09629efc96f331ee21adbac5007 --- /dev/null +++ b/src/main/java/com/backend/glowhouse/controller/DeviceDataController.java @@ -0,0 +1,56 @@ +package com.backend.glowhouse.controller; + +import com.backend.glowhouse.model.Device; +import com.backend.glowhouse.model.DeviceRegistrationRequest; +import com.backend.glowhouse.model.response.DeviceIdResponse; +import com.backend.glowhouse.model.response.DeviceRegistrationResponse; +import com.backend.glowhouse.repository.device.DeviceRepository; +import com.backend.glowhouse.repository.UserRepository; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.Optional; + +@RestController +@RequestMapping("/api/device") +public class DeviceDataController { + private DeviceRepository deviceRepository; + private UserRepository userRepository; + + ObjectMapper mapper = new ObjectMapper(); + + @Autowired + public DeviceDataController(DeviceRepository deviceRepository, UserRepository userRepository) { + this.deviceRepository = deviceRepository; + this.userRepository = userRepository; + } + + @PostMapping("/registerDevice") + @PreAuthorize("hasRole('USER')") + public String registerDevice(@RequestBody DeviceRegistrationRequest deviceRegistrationRequest) throws JsonProcessingException { + String deviceId = deviceRegistrationRequest.getDeviceId(); + String username = deviceRegistrationRequest.getUsername(); + + Device deviceToRegister = deviceRepository.updateDeviceAssignUserAndSetRegisteredTrue(deviceId, username); + + userRepository.updateUserAssignDevice(username, deviceToRegister); + + DeviceRegistrationResponse deviceRegistrationResponse = new DeviceRegistrationResponse(deviceToRegister.getDeviceId()); + + return mapper.writeValueAsString(deviceRegistrationResponse); + } + + @GetMapping("/getDeviceIdForUser") + @PreAuthorize("hasRole('USER')") + public String getDeviceIdForUser(@RequestParam(value = "username") String username) throws JsonProcessingException { + Device device = deviceRepository.findByRegisteredUser(username); + + DeviceIdResponse deviceIdResponse = new DeviceIdResponse(device.getDeviceId()); + + return mapper.writeValueAsString(deviceIdResponse); + } +} diff --git a/src/main/java/com/backend/glowhouse/model/response/DeviceIdResponse.java b/src/main/java/com/backend/glowhouse/model/response/DeviceIdResponse.java new file mode 100644 index 0000000000000000000000000000000000000000..6cfd493cad5b76b84027dd472b6f8f520beb388e --- /dev/null +++ b/src/main/java/com/backend/glowhouse/model/response/DeviceIdResponse.java @@ -0,0 +1,17 @@ +package com.backend.glowhouse.model.response; + +public class DeviceIdResponse { + String deviceId; + + public DeviceIdResponse(String deviceId) { + this.deviceId = deviceId; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } +} diff --git a/src/main/java/com/backend/glowhouse/model/response/DeviceRegistrationResponse.java b/src/main/java/com/backend/glowhouse/model/response/DeviceRegistrationResponse.java new file mode 100644 index 0000000000000000000000000000000000000000..b5d4a9ba2961405696c49db24b42f8615f932cb8 --- /dev/null +++ b/src/main/java/com/backend/glowhouse/model/response/DeviceRegistrationResponse.java @@ -0,0 +1,17 @@ +package com.backend.glowhouse.model.response; + +public class DeviceRegistrationResponse { + private String deviceId; + + public DeviceRegistrationResponse(String deviceId) { + this.deviceId = deviceId; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } +}