Skip to content

Commit 3be4dc4

Browse files
kasiaMarektgodzik
authored andcommitted
fix: correctly decode project name from build target uri
1 parent 4e99ab6 commit 3be4dc4

File tree

1 file changed

+7
-14
lines changed

1 file changed

+7
-14
lines changed

frontend/src/main/scala/bloop/bsp/ProjectUris.scala

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package bloop.bsp
22

33
import java.net.URI
4-
import java.net.URLDecoder
5-
import java.nio.charset.StandardCharsets
64
import java.nio.file.Path
75

86
import scala.util.Try
@@ -14,21 +12,16 @@ import bloop.engine.State
1412
import bloop.io.AbsolutePath
1513

1614
object ProjectUris {
15+
private val queryPrefix = "id="
1716
def getProjectDagFromUri(projectUri: String, state: State): Either[String, Option[Project]] = {
1817
if (projectUri.isEmpty) Left("URI cannot be empty.")
1918
else {
20-
val query = Try(new URI(projectUri).getRawQuery().split("&").map(_.split("="))).toEither
21-
query match {
22-
case Left(_) =>
19+
Try(new URI(projectUri).getQuery()).toEither match {
20+
case Right(query) if query.startsWith(queryPrefix) =>
21+
val projectName = query.stripPrefix(queryPrefix)
22+
Right(state.build.getProjectFor(projectName))
23+
case _ =>
2324
Left(s"URI '${projectUri}' has invalid format. Example: ${ProjectUris.Example}")
24-
case Right(parsed) =>
25-
parsed.headOption match {
26-
case Some(Array("id", projectName)) =>
27-
val name = URLDecoder.decode(projectName, StandardCharsets.UTF_8)
28-
Right(state.build.getProjectFor(name))
29-
case _ =>
30-
Left(s"URI '${projectUri}' has invalid format. Example: ${ProjectUris.Example}")
31-
}
3225
}
3326
}
3427
}
@@ -43,7 +36,7 @@ object ProjectUris {
4336
existingUri.getHost,
4437
existingUri.getPort,
4538
existingUri.getPath,
46-
s"id=${id}",
39+
s"$queryPrefix${id}",
4740
existingUri.getFragment
4841
)
4942
}

0 commit comments

Comments
 (0)