blob: bbc576d11c3b406fb3b35c541a1f56c074d5d94b [file] [log] [blame] [edit]
/*
* 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