Skip to content

Instantly share code, notes, and snippets.

View murattuzel's full-sized avatar

Murat Tüzel murattuzel

  • Istanbul, Turkey
View GitHub Profile
class FetchMoviesUseCase(
private val dataSource: MovieRemoteDataSource
) {
suspend operator fun invoke(): Result<MoviesResponse> =
withContext(Dispatchers.IO) {
try {
Result.success(dataSource.fetchMovies())
} catch (exception: IOException) {
Result.failure(exception)
@murattuzel
murattuzel / Failure.kt
Created November 14, 2021 20:16
Error types.
sealed class Failure : IOException()
object JsonError : Failure()
object UnknownHostError : Failure()
object NoConnectivityError : Failure()
data class TimeOutError(
override val message: String?
) : Failure()
data class UnknownError(
@murattuzel
murattuzel / ErrorHandlingInterceptor.kt
Created November 14, 2021 18:58
Error interceptor catches if an exception is thrown.
class ErrorHandlingInterceptor(
private val networkHandler: NetworkHandler
) : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
if (!networkHandler.isConnected) {
throw NoConnectivityError
}
return try {
@murattuzel
murattuzel / MockRequestType.kt
Last active November 6, 2021 20:02
Attaching a tag for GET method.
enum class MockRequestType(val filePath: String) {
MOVIES(MovieService.MOVIES)
}
@murattuzel
murattuzel / MockRequestInterceptor.kt
Created November 6, 2021 19:21
Mock interceptor reads local json file and returns the file as a response.
class MockRequestInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
return with(chain.request()) {
when (val mockRequestType = findMockTag()) {
is MockRequestType -> createLocalResponse(
request = this,
filePath = mockRequestType.filePath
)
else -> chain.proceed(this)
private int shortestSubstring(String s) { // "dabbcabcd", "bcaacbc", "bab"
// for 'dabbcabcd' there is 4 unique letters, so shortest substring can be minimum 4 letter length. if not,
// we need to increase that length and keep searching.
List<String> letters = new ArrayList<>();
for (char each : s.toCharArray()){
String letter = String.valueOf(each);
if (!letters.contains(letter)) {
letters.add(letter);
}
}
https://askubuntu.com/questions/182587/build-32-bit-on-64-bit-ubuntu-installing-ia32-libs-does-not-include-libstdc/182677#182677
https://stackoverflow.com/questions/35911302/cannot-launch-emulator-on-linux-ubuntu-15-10/43091301#43091301