-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
My problem is that when doing a lot of requests, opensileClientToolsR is creating a new connection for each request.
For instance
opensilexClientToolsR::connectToOpenSILEX(PHIS_user,PHIS_password,PHIS_api_url)
DataApi$new()
print(get("TOKEN_VALUE",opensilexWSClientR:::configWS))
DataApi$new()
print(get("TOKEN_VALUE",opensilexWSClientR:::configWS))
So i tried to use the ClientApi object to pass to each Api Call, so that we keep the open connection :
opensilexClientToolsR::connectToOpenSILEX(PHIS_user,PHIS_password,PHIS_api_url)
apiclient <- ApiClient$new()
DataApi$new(apiclient)
print(get("TOKEN_VALUE",opensilexWSClientR:::configWS))
DataApi$new(apiclient)
print(get("TOKEN_VALUE",opensilexWSClientR:::configWS))
But it still generates a new token !
The problem seems to come from https://github.com/OpenSILEX/opensilexClientToolsR/blob/master/R/ApiClient.r#L80
It does not check if a connection exists and it try to create a new one as soon as IDENTIFIER, PASSWORD and BASE_PATH are valid.
I think that this should be modified to
checkAuthorization <-function(){
if(!get("USER_VALID",opensilexWSClientR:::configWS)) {
stop("You must first connect to an OpenSILEX Instance using connectToOpenSILEXWS() function")
}
if(!get("TOKEN_VALID",opensilexWSClientR:::configWS)
&& !is.null(get("IDENTIFIER",opensilexWSClientR:::configWS))
&& !is.null(get("PASSWORD",opensilexWSClientR:::configWS))
&& !is.null(get("BASE_PATH",opensilexWSClientR:::configWS))){
connectToOpenSILEXWS(get("IDENTIFIER",opensilexWSClientR:::configWS),get("PASSWORD",opensilexWSClientR:::configWS),get("BASE_PATH",opensilexWSClientR:::configWS))
}
}
A workaround is to disconnect after each call to Api function but it's cumbersome.
Metadata
Metadata
Assignees
Labels
No labels