import { AppStateControlMessage, AppStateControlPayload, AppVersionControlInstallPayload, AppVersionControlMessage, AppVersionControlUninstallPayload, AppVersionControlUpdateConfigPayload } from './app-action-schema'; import { AppLogsMessage, AppLogsPayload } from './app-logs-schema'; import { AppStateMessage, AppStatePayload } from './app-state-schema'; import { BaseToClientMessage, BaseToCloudMessage, BaseToDeviceAgentMessage } from './common'; import { AppLogsMessageType, AppStateMessageType, DeviceStatsMessageType, SignedUrlsRequestMessageType, StatusResponseMessageType, keyMirrors } from './constants'; import { DeviceActionMessage, DeviceActionPayload } from './device-action-schema'; import { LiveStateUpdatesToggleMessage, LiveStateUpdatesTogglePayload } from './device-agent-action-schema'; import { DeviceStatsMessage, DeviceStatsPayload } from './device-stats-schema'; import { SignedUrlsRequestMessage } from './signed-urls-request-schema'; import { StatusResponsePayload, ToClientStatusResponseMessage, ToDeviceStatusResponseMessage } from './status-response-schema'; import { ToCloudMessagePayload, getToClientTopic, getToCloudTopic, getToDeviceTopic } from './types'; function buildBaseToClientMessage( clientId: string, txId: string ): BaseToClientMessage { const baseClientMessage = { timestamp: new Date().toUTCString(), deviceId: clientId, topic: getToClientTopic(clientId), txId }; return baseClientMessage; } function buildBaseToDeviceMessage( deviceId: string, txId: string ): BaseToDeviceAgentMessage { const baseToDeviceMessage = { timestamp: new Date().toUTCString(), topic: getToDeviceTopic(deviceId), txId }; return baseToDeviceMessage; } function buildBaseToCloudMessage( deviceId: string, txId: string ): BaseToCloudMessage { const baseToCloudMessage = { deviceId, timestamp: new Date().toUTCString(), topic: getToCloudTopic(deviceId), txId }; return baseToCloudMessage; } // toClient Message Builders // app logs function buildAppLogsMessage( clientId: string, payload: AppLogsPayload, txId: string ): AppLogsMessage { const baseMessage = buildBaseToClientMessage(clientId, txId); const messageType: AppLogsMessageType = keyMirrors.toClientMessageType.app_logs; const message = { ...baseMessage, messageType, payload }; return message; } // app state function buildAppStateMessage( clientId: string, payload: AppStatePayload, txId: string ): AppStateMessage { const baseMessage = buildBaseToClientMessage(clientId, txId); const messageType: AppStateMessageType = keyMirrors.toClientMessageType.app_state; const message = { ...baseMessage, messageType, payload }; return message; } // status response function buildToClientStatusResponseMessage( clientId: string, payload: StatusResponsePayload, txId: string ): ToClientStatusResponseMessage { const baseMessage = buildBaseToClientMessage(clientId, txId); const messageType: StatusResponseMessageType = keyMirrors.toClientMessageType.status_response; const message = { ...baseMessage, messageType, payload }; return message; } // device stats function buildDeviceStatsMessage( clientId: string, payload: DeviceStatsPayload, txId: string ): DeviceStatsMessage { const messageType: DeviceStatsMessageType = keyMirrors.toClientMessageType.device_stats; const baseMessage = buildBaseToClientMessage(clientId, txId); const message = { ...baseMessage, messageType, payload }; return message; } // toDevice Message Builders // status response function buildToDeviceStatusResponseMessage( clientId: string, payload: StatusResponsePayload, txId: string ): ToDeviceStatusResponseMessage { const baseMessage = buildBaseToDeviceMessage(clientId, txId); const messageType: StatusResponseMessageType = keyMirrors.toClientMessageType.status_response; const message = { ...baseMessage, messageType, payload }; return message; } // app version control function buildAppVersionControlMessage( deviceId: string, payload: | AppVersionControlInstallPayload | AppVersionControlUninstallPayload | AppVersionControlUpdateConfigPayload, txId: string ): AppVersionControlMessage { const messageType = keyMirrors.toDeviceAgentMessageType.app_version_control; const baseMessage = buildBaseToDeviceMessage(deviceId, txId); const message = { ...baseMessage, messageType, payload }; return message; } // live state updates toggle function buildLiveStateUpdatesToggleMessage( deviceId: string, payload: LiveStateUpdatesTogglePayload, txId: string ): LiveStateUpdatesToggleMessage { const messageType = keyMirrors.toDeviceAgentMessageType.live_state_updates; const baseMessage = buildBaseToDeviceMessage(deviceId, txId); const message = { ...baseMessage, messageType, payload }; return message; } // app state control function buildAppStateControlMessage( deviceId: string, payload: AppStateControlPayload, txId: string ): AppStateControlMessage { const messageType = keyMirrors.toDeviceAgentMessageType.app_state_control; const baseMessage = buildBaseToDeviceMessage(deviceId, txId); const message = { ...baseMessage, messageType, payload }; return message; } function buildDeviceActionMessage( deviceId: string, payload: DeviceActionPayload, txId: string ): DeviceActionMessage { const messageType = keyMirrors.toDeviceAgentMessageType.device_action; const baseMessage = buildBaseToDeviceMessage(deviceId, txId); const message = { ...baseMessage, messageType, payload }; return message; } // toCloud Message Builders // signed URLs function buildSignedUrlsRequestMessage( clientId: string, payload: ToCloudMessagePayload, txId: string ): SignedUrlsRequestMessage { const baseMessage = buildBaseToCloudMessage(clientId, txId); const messageType: SignedUrlsRequestMessageType = keyMirrors.toCloudMessageType.signed_urls_request; const message = { ...baseMessage, messageType, payload }; return message; } export { buildAppLogsMessage, buildAppStateMessage, buildSignedUrlsRequestMessage, buildToClientStatusResponseMessage, buildToDeviceStatusResponseMessage, buildDeviceStatsMessage, buildAppVersionControlMessage, buildLiveStateUpdatesToggleMessage, buildAppStateControlMessage, buildDeviceActionMessage };