LunaVulpo
LunaVulpo

Reputation: 3221

How to fix: "Unresolved reference: buffer" or "Using 'buffer(Source): BufferedSource' is an error. moved to extension function"?

I had 3 line code to get body from OkHttp3 source:

val responseBody = response.peekBody(response.body()!!.contentLength())
val source = GzipSource(responseBody.source())
val body = Okio.buffer(source).readUtf8() //issue is that line

on another computer I get error: "Using 'buffer(Source): BufferedSource' is an error. moved to extension function"

So fix it by replacing last line by:

val body = source.buffer().readUtf8()

bun now on the fist computer I have error: "Unresolved reference: buffer" so I need to revert that change.

What is wrong? base on error message I cannot figure out. It seems that it's issue with gradle configuration. But what? How to have compiling code on both computers.

Upvotes: 12

Views: 4579

Answers (2)

Henrique Vasconcellos
Henrique Vasconcellos

Reputation: 1183

I had trouble figuring it out, so I will describe what I did to "fix it".

They changed Okio to work with kotlin extension, in this URL you can find the change log with all changes. https://square.github.io/okio/changelog/#version-200-rc1

In my case I was trying to make a unit test pass.

The old way was:

val inputStream = javaClass.classLoader.getResourceAsStream("api-response/$fileName")
val source = Okio.buffer(Okio.source(inputStream))

and the new way is:

val inputStream = javaClass.classLoader!!
.getResourceAsStream("api-response/$fileName")
.source()
.buffer()

Upvotes: 9

MikeRzDev
MikeRzDev

Reputation: 126

add implementation "com.squareup.okio:okio:2.3.0" to your build.gradle

Upvotes: 11

Related Questions