+
+ private validateRawDataRequest (rawData: RawData): ProtocolRequest | false {
+ // logger.debug(
+ // `${this.logPrefix(
+ // moduleName,
+ // 'validateRawDataRequest'
+ // // eslint-disable-next-line @typescript-eslint/no-base-to-string
+ // )} Raw data received in string format: ${rawData.toString()}`
+ // )
+
+ let request: ProtocolRequest
+ try {
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
+ request = JSON.parse(rawData.toString()) as ProtocolRequest
+ } catch (error) {
+ logger.error(
+ `${this.logPrefix(
+ moduleName,
+ 'validateRawDataRequest'
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
+ )} UI protocol request is not valid JSON: ${rawData.toString()}`
+ )
+ return false
+ }
+
+ if (!Array.isArray(request)) {
+ logger.error(
+ `${this.logPrefix(
+ moduleName,
+ 'validateRawDataRequest'
+ )} UI protocol request is not an array:`,
+ request
+ )
+ return false
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
+ if (request.length !== 3) {
+ logger.error(
+ `${this.logPrefix(moduleName, 'validateRawDataRequest')} UI protocol request is malformed:`,
+ request
+ )
+ return false
+ }
+
+ if (!validateUUID(request[0])) {
+ logger.error(
+ `${this.logPrefix(
+ moduleName,
+ 'validateRawDataRequest'
+ )} UI protocol request UUID field is invalid:`,
+ request
+ )
+ return false
+ }
+
+ return request
+ }