@@ -6,19 +6,21 @@ import okhttp3.MediaType.Companion.toMediaType
66import okhttp3.RequestBody
77import okhttp3.RequestBody.Companion.toRequestBody
88import java.net.URL
9+ import java.net.URI
910
1011data class ScriptConfig (
11- val scriptId : String ,
12- val url : URL ,
13- val query : String? ,
14- val fetch : Boolean ,
15- val absolute : Boolean ,
16- val method : String ,
17- val body : RequestBody ? ,
18- val timeout : Int ,
19- val headers : Headers ,
20- val verifyScriptSignature : String ,
21- val uniqueId : String
12+ val scriptId : String ,
13+ val url : URL ,
14+ val query : String? ,
15+ val fetch : Boolean ,
16+ val absolute : Boolean ,
17+ val method : String ,
18+ val body : RequestBody ? ,
19+ val timeout : Int ,
20+ val headers : Headers ,
21+ val verifyScriptSignature : String ,
22+ val uniqueId : String ,
23+ val sourceUrl : String
2224) {
2325 companion object {
2426 fun fromReadableMap (scriptId : String , value : ReadableMap ): ScriptConfig {
@@ -33,13 +35,25 @@ data class ScriptConfig(
3335 val verifyScriptSignature = requireNotNull(value.getString(" verifyScriptSignature" ))
3436 val uniqueId = requireNotNull(value.getString(" uniqueId" ))
3537
36- val url = URL (
37- if (query != null ) {
38- " $urlString ?$query "
39- } else {
40- urlString
41- }
42- )
38+ val initialUrl = URL (urlString)
39+ val uri = initialUrl.toURI()
40+
41+ val sourceUrl = initialUrl.toString()
42+
43+ // overrides any existing query in the URL with config.query
44+ val finalUri = if (query != null ) {
45+ URI (
46+ uri.scheme,
47+ uri.authority,
48+ uri.path,
49+ query,
50+ uri.fragment
51+ )
52+ } else {
53+ uri
54+ }
55+
56+ val url = finalUri.toURL()
4357
4458 val headers = Headers .Builder ()
4559 val keyIterator = headersMap?.keySetIterator()
@@ -55,17 +69,18 @@ data class ScriptConfig(
5569 val body = bodyString?.toRequestBody(contentType)
5670
5771 return ScriptConfig (
58- scriptId,
59- url,
60- query,
61- fetch,
62- absolute,
63- method,
64- body,
65- timeout,
66- headers.build(),
67- verifyScriptSignature,
68- uniqueId
72+ scriptId,
73+ url,
74+ query,
75+ fetch,
76+ absolute,
77+ method,
78+ body,
79+ timeout,
80+ headers.build(),
81+ verifyScriptSignature,
82+ uniqueId,
83+ sourceUrl
6984 )
7085 }
7186 }
0 commit comments