munge-zoom-uri() {
local uri="$1"
if [[ $uri =~ ^zoommtg://[^/]+/join ]]; then
echo "$uri"
return
fi
if [[ $uri =~ ^https?://([^/.]+\.)?zoom\.us/j/([0-9]+)$ ]]; then
echo "zoommtg://zoom.us/join?confno=${BASH_REMATCH[2]}"
return
fi
if [[ $uri =~ ^https?://([^/.]+\.)?zoom\.us/j/([0-9]+)\?pwd=(.+)$ ]]; then
echo "zoommtg://zoom.us/join?confno=${BASH_REMATCH[2]}&pwd=${BASH_REMATCH[3]}"
return
fi
if [[ $uri =~ ^https?://([^/.]+\.)?zoom\.us/w/([0-9]+)\?pwd=(.+)$ ]]; then
echo "zoommtg://zoom.us/join?confno=${BASH_REMATCH[2]}&pwd=${BASH_REMATCH[3]}"
return
fi
if [[ $uri =~ ^https?://([^/.]+\.)?zoom\.us/w/([0-9]+)\?tk=(.+)$ ]]; then
echo "zoommtg://zoom.us/join?confno=${BASH_REMATCH[2]}&tk=${BASH_REMATCH[3]}"
return
fi
if [[ $uri =~ ^https?://([^/.]+\.)?zoom\.us/my/([a-zA-Z0-9]+)\?pwd=(.+)$ ]]; then
echo "zoommtg://zoom.us/join?confno=${BASH_REMATCH[2]}&pwd=${BASH_REMATCH[3]}"
return
fi
>&2 echo "can't parse <$uri>, ignoring";
return
}
declare -a args
if [[ -n "$1" ]]; then
args+=("$(munge-zoom-uri "$1")")
fi
exec /opt/zoom/ZoomLauncher "${args[@]}"