| /* |
| * Licensed to the Software Freedom Conservancy (SFC) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The SFC licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| import Capabilities from './capabilities' |
| |
| interface SessionData { |
| id: string |
| capabilities: string |
| browserName: string |
| browserVersion: string |
| platformName: string |
| startTime: string |
| uri: string |
| nodeId: string |
| nodeUri: string |
| sessionDurationMillis: number |
| slot: any |
| vnc: string |
| name: string |
| [key: string]: any |
| } |
| |
| export function createSessionData ( |
| id: string, |
| capabilities: string, |
| startTime: string, |
| uri: string, |
| nodeId: string, |
| nodeUri: string, |
| sessionDurationMillis: number, |
| slot: any, |
| origin: string |
| ): SessionData { |
| const parsed = JSON.parse(capabilities) as Capabilities |
| const browserName = parsed.browserName |
| const browserVersion = parsed.browserVersion ?? parsed.version |
| const platformName = parsed.platformName ?? parsed.platform |
| let vnc: string = parsed['se:vnc'] ?? '' |
| if (vnc.length > 0) { |
| try { |
| const url = new URL(origin) |
| const vncUrl = new URL(vnc) |
| url.pathname = vncUrl.pathname |
| url.protocol = url.protocol === 'https:' ? 'wss:' : 'ws:' |
| vnc = url.href |
| } catch (error) { |
| console.log(error) |
| } |
| } |
| const name: string = parsed['se:name'] ?? id |
| return { |
| id, |
| capabilities, |
| browserName, |
| browserVersion, |
| platformName, |
| startTime, |
| uri, |
| nodeId, |
| nodeUri, |
| sessionDurationMillis, |
| slot, |
| vnc, |
| name |
| } |
| } |
| |
| export default SessionData |