Я хочу иметь обобщенную функцию для моего метода репозитория, которая выполняет вызов API.Вот код -
RemoteInterface.java
interface RemoteInterface {
@GET("...")
suspend fun getRandomImage(): MyModel
@GET(".../{id}/...")
suspend fun getRandomImageById(@Path("id") id: String): MyModel
}
Теперь мой класс репозитория выглядит так -
override suspend fun getImageFromRemote(): MyResult {
if (util.checkDeviceInternet()) {
try {
val result = remoteInterface.getRandomImage()
if (result.status == "200") {
return MyResult.Content(result)
} else {
return MyResult.Error(MyResult.ErrorType.API_ERROR)
}
} catch (e: Exception) {
return MyResult.Error(MyResult.ErrorType.API_ERROR)
}
} else {
return MyResult.Error(MyResult.ErrorType.NO_INTERNET)
}
}
override suspend fun getImageByIdFromRemote(id: String): MyResult {
if (util.checkDeviceInternet()) {
try {
val result = remoteInterface.getRandomImageById(id)
if (result.status == "200") {
return MyResult.Content(result)
} else {
return MyResult.Error(MyResult.ErrorType.API_ERROR)
}
} catch (e: Exception) {
return MyResult.Error(MyResult.ErrorType.API_ERROR)
}
} else {
return MyResult.Error(MyResult.ErrorType.NO_INTERNET)
}
}
Как видите, мои 2 метода в репозитории повторяютсяфункция тела.Можно ли как-нибудь написать обобщенную функцию, которая выполняет те же функции, что и эти две функции?