Skip to content

Commit 63f2b2d

Browse files
author
Hlib Kulykovskyi
committed
Fix UrlParser for encoded url queries
When the initial url is html-encoded, it becomes decoded after wrapping it to java.net.URI object. This leads to incorrect query determination
1 parent 33d5eab commit 63f2b2d

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

common/src/main/java/com/pedro/common/UrlParser.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ class UrlParser private constructor(
4848
port = if (uri.port < 0) null else uri.port
4949
path = uri.path.removePrefix("/")
5050
if (uri.query != null) {
51-
val i = url.indexOf(uri.query)
52-
query = url.substring(if (i < 0) 0 else i)
51+
val i = url.indexOf("?")
52+
query = url.substring(i + 1)
5353
}
5454
auth = uri.userInfo
5555
}

common/src/test/java/com/pedro/common/UrlParserTest.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,15 @@ class UrlParserTest {
122122
assertEquals("live/test?asd", urlParser9.getAppName())
123123
assertEquals("asd/streamName", urlParser9.getStreamName())
124124
assertEquals("rtmp://192.168.0.1:1935/live/test?asd", urlParser9.getTcUrl())
125+
126+
val url10 = "rtmps://192.168.0.1:1935/live/streamName?queryParam1=value1&queryParam2=YudWE%3d"
127+
val urlParser10 = UrlParser.parse(url10, arrayOf("rtmps"))
128+
assertEquals("rtmps", urlParser10.scheme)
129+
assertEquals("192.168.0.1", urlParser10.host)
130+
assertEquals(1935, urlParser10.port)
131+
assertEquals("live", urlParser10.getAppName())
132+
assertEquals("streamName?queryParam1=value1&queryParam2=YudWE%3d", urlParser10.getStreamName())
133+
assertEquals("rtmps://192.168.0.1:1935/live", urlParser10.getTcUrl())
125134
} catch (_: URISyntaxException) {
126135
assert(false)
127136
}

0 commit comments

Comments
 (0)