File tree Expand file tree Collapse file tree 4 files changed +23
-1
lines changed
data/src/main/java/com/shifthackz/aisdv1/data/remote
network/src/main/java/com/shifthackz/aisdv1/network Expand file tree Collapse file tree 4 files changed +23
-1
lines changed Original file line number Diff line number Diff line change 11buildscript {
22 ext {
3- appVersion = " 0.3.0 "
3+ appVersion = " 0.3.1 "
44 minSdk = 26
55 targetSdk = 33
66 }
Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ import com.shifthackz.aisdv1.domain.entity.TextToImagePayload
99import com.shifthackz.aisdv1.network.api.StableDiffusionWebUiAutomaticRestApi
1010import com.shifthackz.aisdv1.network.api.StableDiffusionWebUiAutomaticRestApi.Companion.PATH_IMG_TO_IMG
1111import com.shifthackz.aisdv1.network.api.StableDiffusionWebUiAutomaticRestApi.Companion.PATH_TXT_TO_IMG
12+ import com.shifthackz.aisdv1.network.extensions.withExceptionMapper
1213import com.shifthackz.aisdv1.network.response.SdGenerationResponse
1314
1415internal class StableDiffusionGenerationRemoteDataSource (
@@ -25,9 +26,11 @@ internal class StableDiffusionGenerationRemoteDataSource(
2526 .flatMap { url -> api.textToImage(url, payload.mapToRequest()) }
2627 .map { response -> payload to response }
2728 .map(Pair <TextToImagePayload , SdGenerationResponse >::mapToAiGenResult)
29+ .withExceptionMapper()
2830
2931 override fun imageToImage (payload : ImageToImagePayload ) = serverUrlProvider(PATH_IMG_TO_IMG )
3032 .flatMap { url -> api.imageToImage(url, payload.mapToRequest()) }
3133 .map { response -> payload to response }
3234 .map(Pair <ImageToImagePayload , SdGenerationResponse >::mapToAiGenResult)
35+ .withExceptionMapper()
3336}
Original file line number Diff line number Diff line change 1+ package com.shifthackz.aisdv1.network.exception
2+
3+ class BadKeywordException (val keyword : String ) : Throwable(" Keyword '$keyword ' is not allowed" )
Original file line number Diff line number Diff line change 1+ package com.shifthackz.aisdv1.network.extensions
2+
3+ import com.shifthackz.aisdv1.network.exception.BadKeywordException
4+ import io.reactivex.rxjava3.core.Single
5+ import retrofit2.HttpException
6+
7+ fun <T : Any > Single<T>.withExceptionMapper (): Single <T > =
8+ onErrorResumeNext { t -> Single .error(t.mapException()) }
9+
10+ private fun Throwable.mapException (): Throwable {
11+ if (this is HttpException && code() == 400 ) {
12+ val keyword = response()?.errorBody()?.string()
13+ return keyword?.let (::BadKeywordException ) ? : this
14+ }
15+ return this
16+ }
You can’t perform that action at this time.
0 commit comments