Files
cypress/packages/https-proxy/lib/util/parse.js
2020-02-20 13:09:40 -05:00

50 lines
978 B
JavaScript

const url = require('url')
module.exports = {
parseHost (hostString, defaultPort) {
let m
m = hostString.match(/^http:\/\/(.*)/)
if (m) {
const parsedUrl = url.parse(hostString)
return {
host: parsedUrl.hostname,
port: parsedUrl.port,
}
}
const hostPort = hostString.split(':')
const host = hostPort[0]
const port = hostPort.length === 2 ? +hostPort[1] : defaultPort
return {
host,
port,
}
},
hostAndPort (reqUrl, headers, defaultPort) {
let m
const {
host,
} = headers
const hostPort = this.parseHost(host, defaultPort)
// this handles paths which include the full url. This could happen if it's a proxy
m = reqUrl.match(/^http:\/\/([^\/]*)\/?(.*)$/)
if (m) {
const parsedUrl = url.parse(reqUrl)
hostPort.host = parsedUrl.hostname
hostPort.port = parsedUrl.port
reqUrl = parsedUrl.path
}
return hostPort
},
}