Skip to content

Commit 85ab417

Browse files
authored
SWF Filtering implementation (#32)
1 parent 5ddabd8 commit 85ab417

File tree

4 files changed

+23
-1
lines changed

4 files changed

+23
-1
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
buildscript {
22
ext {
3-
appVersion = "0.3.0"
3+
appVersion = "0.3.1"
44
minSdk = 26
55
targetSdk = 33
66
}

data/src/main/java/com/shifthackz/aisdv1/data/remote/StableDiffusionGenerationRemoteDataSource.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import com.shifthackz.aisdv1.domain.entity.TextToImagePayload
99
import com.shifthackz.aisdv1.network.api.StableDiffusionWebUiAutomaticRestApi
1010
import com.shifthackz.aisdv1.network.api.StableDiffusionWebUiAutomaticRestApi.Companion.PATH_IMG_TO_IMG
1111
import com.shifthackz.aisdv1.network.api.StableDiffusionWebUiAutomaticRestApi.Companion.PATH_TXT_TO_IMG
12+
import com.shifthackz.aisdv1.network.extensions.withExceptionMapper
1213
import com.shifthackz.aisdv1.network.response.SdGenerationResponse
1314

1415
internal 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
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.shifthackz.aisdv1.network.exception
2+
3+
class BadKeywordException(val keyword: String) : Throwable("Keyword '$keyword' is not allowed")
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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+
}

0 commit comments

Comments
 (0)