diff --git a/js/src/main/scala/cs214/webapp/client/Pages.scala b/js/src/main/scala/cs214/webapp/client/Pages.scala index 2cc7a02eeda5b97e7487fb54f666da518cd53c3c..797deed4c442c765bfd9d22b5776eb8725fdbd8c 100644 --- a/js/src/main/scala/cs214/webapp/client/Pages.scala +++ b/js/src/main/scala/cs214/webapp/client/Pages.scala @@ -262,16 +262,12 @@ case class AppPage(appId: AppId, uiId: UIId, instanceId: InstanceId, userId: Use ) maybeApp.get - enum ProtocolInfo(secure: String, insecure: String): - case WebSocket extends ProtocolInfo("wss", "ws") - case Http extends ProtocolInfo("https", "http") - def proto: String = if dom.window.location.protocol.startsWith("https") then secure else insecure - def substituteInstanceInfo(endpointTemplate: String, protocolInfo: ProtocolInfo): String = val port = dom.window.location.port val hostname = dom.window.location.hostname + val tls = dom.window.location.protocol.startsWith("https") endpointTemplate - .replace("{{protocol}}", protocolInfo.proto) + .replace("{{protocol}}", protocolInfo.proto(tls)) .replace("{{authority}}", hostname + (if port.nonEmpty then f":$port" else "")) .replace("{{userId}}", URLEncoder.encode(userId, "UTF-8")) diff --git a/shared/src/main/scala/cs214/webapp/Common.scala b/shared/src/main/scala/cs214/webapp/Common.scala index 75a6a81ec84045cb9751540fd78df8e037a1f41d..abf60dbff535d44f6f77460d0fc462c8bf44b6a8 100644 --- a/shared/src/main/scala/cs214/webapp/Common.scala +++ b/shared/src/main/scala/cs214/webapp/Common.scala @@ -45,3 +45,8 @@ object Endpoints: val App = "/app" val WebSocket = "/ws" +/** Known protocols */ +enum ProtocolInfo(secure: String, insecure: String): + case WebSocket extends ProtocolInfo("wss", "ws") + case Http extends ProtocolInfo("https", "http") + def proto(tls: Boolean): String = if tls then secure else insecure