aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Jaros <rjaros@finn.pl>2020-05-18 21:45:01 +0200
committerRobert Jaros <rjaros@finn.pl>2020-05-18 21:45:01 +0200
commit432ce23431a77d76c48ca9abe464efeb4f0885bb (patch)
treec4d73d074fe6c4f6adbc6c3492f3795356882763
parentb625a03f661e9f082b80d827a680acd162ffb080 (diff)
downloadkvision-432ce23431a77d76c48ca9abe464efeb4f0885bb.tar.gz
kvision-432ce23431a77d76c48ca9abe464efeb4f0885bb.tar.bz2
kvision-432ce23431a77d76c48ca9abe464efeb4f0885bb.zip
Support relative links for remote endpoints
-rw-r--r--kvision-modules/kvision-common-remote/src/jsMain/kotlin/pl/treksoft/kvision/remote/CallAgent.kt6
-rw-r--r--kvision-modules/kvision-common-remote/src/jsMain/kotlin/pl/treksoft/kvision/remote/KVRemoteAgent.kt10
2 files changed, 11 insertions, 5 deletions
diff --git a/kvision-modules/kvision-common-remote/src/jsMain/kotlin/pl/treksoft/kvision/remote/CallAgent.kt b/kvision-modules/kvision-common-remote/src/jsMain/kotlin/pl/treksoft/kvision/remote/CallAgent.kt
index 6c1e629c..3d865f04 100644
--- a/kvision-modules/kvision-common-remote/src/jsMain/kotlin/pl/treksoft/kvision/remote/CallAgent.kt
+++ b/kvision-modules/kvision-common-remote/src/jsMain/kotlin/pl/treksoft/kvision/remote/CallAgent.kt
@@ -42,7 +42,7 @@ const val HTTP_UNAUTHORIZED = 401
open class CallAgent {
private val kvUrlPrefix = window["kv_remote_url_prefix"]
- private val urlPrefix: String = if (kvUrlPrefix != undefined) kvUrlPrefix else ""
+ private val urlPrefix: String = if (kvUrlPrefix != undefined) "$kvUrlPrefix/" else ""
private var counter = 1
/**
@@ -66,7 +66,7 @@ open class CallAgent {
JSON.plain.stringify(jsonRpcRequest)
}
return Promise { resolve, reject ->
- jQuery.ajax(urlPrefix + url, obj {
+ jQuery.ajax(urlPrefix + url.drop(1), obj {
this.contentType = "application/json"
this.data = jsonData
this.method = method.name
@@ -125,7 +125,7 @@ open class CallAgent {
beforeSend: ((JQueryXHR, JQueryAjaxSettings) -> Boolean)? = null
): Promise<dynamic> {
return Promise { resolve, reject ->
- jQuery.ajax(urlPrefix + url, obj {
+ jQuery.ajax(urlPrefix + url.drop(1), obj {
this.contentType = if (contentType != "multipart/form-data") contentType else false
this.data = data
this.method = method.name
diff --git a/kvision-modules/kvision-common-remote/src/jsMain/kotlin/pl/treksoft/kvision/remote/KVRemoteAgent.kt b/kvision-modules/kvision-common-remote/src/jsMain/kotlin/pl/treksoft/kvision/remote/KVRemoteAgent.kt
index 24cea176..8836c7f1 100644
--- a/kvision-modules/kvision-common-remote/src/jsMain/kotlin/pl/treksoft/kvision/remote/KVRemoteAgent.kt
+++ b/kvision-modules/kvision-common-remote/src/jsMain/kotlin/pl/treksoft/kvision/remote/KVRemoteAgent.kt
@@ -33,6 +33,8 @@ import kotlinx.serialization.ImplicitReflectionSerializer
import kotlinx.serialization.builtins.list
import kotlinx.serialization.serializer
import kotlinx.serialization.stringify
+import org.w3c.dom.get
+import kotlin.browser.window
import kotlin.reflect.KClass
/**
@@ -456,6 +458,8 @@ open class KVRemoteAgent<T : Any>(val serviceManager: KVServiceMgr<T>) :
noinline function: suspend T.(ReceiveChannel<PAR1>, SendChannel<PAR2>) -> Unit,
noinline handler: suspend (SendChannel<PAR1>, ReceiveChannel<PAR2>) -> Unit
) {
+ val kvUrlPrefix = window["kv_remote_url_prefix"]
+ val urlPrefix: String = if (kvUrlPrefix != undefined) "$kvUrlPrefix/" else ""
val (url, _) =
serviceManager.getCalls()[function.toString().replace("\\s".toRegex(), "")]
?: throw IllegalStateException("Function not specified!")
@@ -464,7 +468,7 @@ open class KVRemoteAgent<T : Any>(val serviceManager: KVServiceMgr<T>) :
val responseChannel = Channel<PAR2>()
try {
coroutineScope {
- socket.connect(getWebSocketUrl(url))
+ socket.connect(getWebSocketUrl(urlPrefix + url.drop(1)))
lateinit var responseJob: Job
lateinit var handlerJob: Job
val requestJob = launch {
@@ -532,6 +536,8 @@ open class KVRemoteAgent<T : Any>(val serviceManager: KVServiceMgr<T>) :
noinline function: suspend T.(ReceiveChannel<PAR1>, SendChannel<List<PAR2>>) -> Unit,
noinline handler: suspend (SendChannel<PAR1>, ReceiveChannel<List<PAR2>>) -> Unit
) {
+ val kvUrlPrefix = window["kv_remote_url_prefix"]
+ val urlPrefix: String = if (kvUrlPrefix != undefined) "$kvUrlPrefix/" else ""
val (url, _) =
serviceManager.getCalls()[function.toString().replace("\\s".toRegex(), "")]
?: throw IllegalStateException("Function not specified!")
@@ -540,7 +546,7 @@ open class KVRemoteAgent<T : Any>(val serviceManager: KVServiceMgr<T>) :
val responseChannel = Channel<List<PAR2>>()
try {
coroutineScope {
- socket.connect(getWebSocketUrl(url))
+ socket.connect(getWebSocketUrl(urlPrefix + url.drop(1)))
lateinit var responseJob: Job
lateinit var handlerJob: Job
val requestJob = launch {