repositories
/
e-mobility-charging-stations-simulator.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix(ocpp-server): silence linter
[e-mobility-charging-stations-simulator.git]
/
ui
/
web
/
src
/
composables
/
UIClient.ts
diff --git
a/ui/web/src/composables/UIClient.ts
b/ui/web/src/composables/UIClient.ts
index 64f2bc69d4e5efd2549d51d471c6f1dafa039058..04587e2d8a98d7688eb8016a0833e01edc5b93a4 100644
(file)
--- a/
ui/web/src/composables/UIClient.ts
+++ b/
ui/web/src/composables/UIClient.ts
@@
-12,7
+12,7
@@
import {
type UIServerConfigurationSection
} from '@/types'
type UIServerConfigurationSection
} from '@/types'
-import { randomUUID } from './Utils'
+import { randomUUID
, validateUUID
} from './Utils'
type ResponseHandler = {
procedureName: ProcedureName
type ResponseHandler = {
procedureName: ProcedureName
@@
-24,11
+24,17
@@
export class UIClient {
private static instance: UIClient | null = null
private ws?: WebSocket
private static instance: UIClient | null = null
private ws?: WebSocket
- private responseHandlers: Map<string, ResponseHandler>
+ private responseHandlers: Map<
+ `${string}-${string}-${string}-${string}-${string}`,
+ ResponseHandler
+ >
private constructor(private uiServerConfiguration: UIServerConfigurationSection) {
this.openWS()
private constructor(private uiServerConfiguration: UIServerConfigurationSection) {
this.openWS()
- this.responseHandlers = new Map<string, ResponseHandler>()
+ this.responseHandlers = new Map<
+ `${string}-${string}-${string}-${string}-${string}`,
+ ResponseHandler
+ >()
}
public static getInstance(uiServerConfiguration?: UIServerConfigurationSection): UIClient {
}
public static getInstance(uiServerConfiguration?: UIServerConfigurationSection): UIClient {
@@
-99,7
+105,9
@@
export class UIClient {
}
public async deleteChargingStation(hashId: string): Promise<ResponsePayload> {
}
public async deleteChargingStation(hashId: string): Promise<ResponsePayload> {
- return this.sendRequest(ProcedureName.DELETE_CHARGING_STATIONS, { hashIds: [hashId] })
+ return this.sendRequest(ProcedureName.DELETE_CHARGING_STATIONS, {
+ hashIds: [hashId]
+ })
}
public async setSupervisionUrl(hashId: string, supervisionUrl: string): Promise<ResponsePayload> {
}
public async setSupervisionUrl(hashId: string, supervisionUrl: string): Promise<ResponsePayload> {
@@
-110,11
+118,15
@@
export class UIClient {
}
public async startChargingStation(hashId: string): Promise<ResponsePayload> {
}
public async startChargingStation(hashId: string): Promise<ResponsePayload> {
- return this.sendRequest(ProcedureName.START_CHARGING_STATION, { hashIds: [hashId] })
+ return this.sendRequest(ProcedureName.START_CHARGING_STATION, {
+ hashIds: [hashId]
+ })
}
public async stopChargingStation(hashId: string): Promise<ResponsePayload> {
}
public async stopChargingStation(hashId: string): Promise<ResponsePayload> {
- return this.sendRequest(ProcedureName.STOP_CHARGING_STATION, { hashIds: [hashId] })
+ return this.sendRequest(ProcedureName.STOP_CHARGING_STATION, {
+ hashIds: [hashId]
+ })
}
public async openConnection(hashId: string): Promise<ResponsePayload> {
}
public async openConnection(hashId: string): Promise<ResponsePayload> {
@@
-177,11
+189,17
@@
export class UIClient {
this.uiServerConfiguration.authentication?.type === AuthenticationType.PROTOCOL_BASIC_AUTH
? [
`${this.uiServerConfiguration.protocol}${this.uiServerConfiguration.version}`,
this.uiServerConfiguration.authentication?.type === AuthenticationType.PROTOCOL_BASIC_AUTH
? [
`${this.uiServerConfiguration.protocol}${this.uiServerConfiguration.version}`,
- `authorization.basic.${btoa(`${this.uiServerConfiguration.authentication.username}:${this.uiServerConfiguration.authentication.password}`).replace(/={1,2}$/, '')}`
+ `authorization.basic.${btoa(
+ `${this.uiServerConfiguration.authentication.username}:${this.uiServerConfiguration.authentication.password}`
+ ).replace(/={1,2}$/, '')}`
]
: `${this.uiServerConfiguration.protocol}${this.uiServerConfiguration.version}`
this.ws = new WebSocket(
]
: `${this.uiServerConfiguration.protocol}${this.uiServerConfiguration.version}`
this.ws = new WebSocket(
- `${this.uiServerConfiguration.secure === true ? ApplicationProtocol.WSS : ApplicationProtocol.WS}://${this.uiServerConfiguration.host}:${this.uiServerConfiguration.port}`,
+ `${
+ this.uiServerConfiguration.secure === true
+ ? ApplicationProtocol.WSS
+ : ApplicationProtocol.WS
+ }://${this.uiServerConfiguration.host}:${this.uiServerConfiguration.port}`,
protocols
)
this.ws.onopen = () => {
protocols
)
this.ws.onopen = () => {
@@
-230,15
+248,30
@@
export class UIClient {
}
private responseHandler(messageEvent: MessageEvent<string>): void {
}
private responseHandler(messageEvent: MessageEvent<string>): void {
- const response = JSON.parse(messageEvent.data) as ProtocolResponse
+ let response: ProtocolResponse
+ try {
+ response = JSON.parse(messageEvent.data)
+ } catch (error) {
+ useToast().error('Invalid response JSON format')
+ console.error('Invalid response JSON format', error)
+ return
+ }
- if (Array.isArray(response) === false) {
- throw new Error(`Response not an array: ${JSON.stringify(response, undefined, 2)}`)
+ if (!Array.isArray(response)) {
+ useToast().error('Response not an array')
+ console.error('Response not an array:', response)
+ return
}
const [uuid, responsePayload] = response
}
const [uuid, responsePayload] = response
- if (this.responseHandlers.has(uuid) === true) {
+ if (!validateUUID(uuid)) {
+ useToast().error('Response UUID field is invalid')
+ console.error('Response UUID field is invalid:', response)
+ return
+ }
+
+ if (this.responseHandlers.has(uuid)) {
const { procedureName, resolve, reject } = this.responseHandlers.get(uuid)!
switch (responsePayload.status) {
case ResponseStatus.SUCCESS:
const { procedureName, resolve, reject } = this.responseHandlers.get(uuid)!
switch (responsePayload.status) {
case ResponseStatus.SUCCESS: