Ktorfit icon indicating copy to clipboard operation
Ktorfit copied to clipboard

Generated code produces Kotlin warnings when using @Query

Open ricardorlg opened this issue 8 months ago • 4 comments

Ktorfit version

1.8.1

What happened and how can we reproduce this issue?

I use @Query in some of my API interfaces, but unfortunately, the generated code produces Kotlin warnings. I had to turn off warningsAsErrors in our Gradle build, but ideally, I would like to have it enabled.

API Example:

 @GET("/oauth2/default/v1/authorize")
    fun getToken(
        @Query("response_type") responseType: String,
        @Query("scope") scope: String,
        @Query("state") state: String,
        @Query("nonce") nonce: String,
        @Query("client_id") clientId: String,
        @Query("sessionToken") sessionToken: String,
        @Query("redirect_uri") redirectUri: String,
    ): Response<OktaResponse>

Warning:

Unnecessary safe call on a non-null receiver of type String

Generated code:

  override fun getToken(
    responseType: String,
    scope: String,
    state: String,
    nonce: String,
    clientId: String,
    sessionToken: String,
    redirectUri: String,
  ): Response<OktaResponse> {
    val _ext: HttpRequestBuilder.() -> Unit = {
        method = HttpMethod.parse("GET")
        url{
        takeFrom(ktorfitClient.baseUrl + "/oauth2/default/v1/authorize")
        responseType?.let{ parameter("response_type", "$it") }
        scope?.let{ parameter("scope", "$it") }
        state?.let{ parameter("state", "$it") }
        nonce?.let{ parameter("nonce", "$it") }
        clientId?.let{ parameter("client_id", "$it") }
        sessionToken?.let{ parameter("sessionToken", "$it") }
        redirectUri?.let{ parameter("redirect_uri", "$it") }
        } 
        }
    val _requestData = RequestData(ktorfitRequestBuilder = _ext,
        returnTypeName = "de.jensklingenberg.ktorfit.Response<OktaResponse>",
        returnTypeInfo = typeInfo<Response<OktaResponse>>()) 

    return ktorfitClient.request<Response<OktaResponse>, OktaResponse>(_requestData)!!
  }

What did you expect to happen?

I would expect no warnings, if possible or at least generated code with suppress warnings annotations.

Is there anything else we need to know about?

Is related to #460

ricardorlg avatar Oct 19 '23 07:10 ricardorlg

This will be fixed in the next version

Foso avatar Oct 19 '23 14:10 Foso

Hi, with Ktorfit 1.9.1 the warnings are suppressed. It's still planned to optimize the code, but that will come later.

Foso avatar Oct 23 '23 15:10 Foso

Perfect, I can contribute with a better code for Query parameters, I will see if I can open a PR this week.

ricardorlg avatar Oct 23 '23 15:10 ricardorlg

Great :)

Foso avatar Oct 23 '23 16:10 Foso