Skip to content

Commit

Permalink
[feat] detail_image / 사진 정보 가져오기 api repository까지 완료 (#90)
Browse files Browse the repository at this point in the history
  • Loading branch information
2chang5 committed Jul 22, 2022
1 parent 1d100fa commit 0d3122a
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 8 deletions.
14 changes: 6 additions & 8 deletions app/src/main/java/com/photosurfer/android/di/RepositoryModule.kt
Original file line number Diff line number Diff line change
@@ -1,14 +1,8 @@
package com.photosurfer.android.di


import com.photosurfer.android.data.repository.AlarmListRepositoryImpl
import com.photosurfer.android.data.repository.ChooseTagRepositoryImpl
import com.photosurfer.android.data.repository.PushSettingRepositoryImpl
import com.photosurfer.android.data.repository.TagListRepositoryImpl
import com.photosurfer.android.domain.repository.AlarmListRepository
import com.photosurfer.android.domain.repository.ChooseTagRepository
import com.photosurfer.android.domain.repository.PushSettingRepository
import com.photosurfer.android.domain.repository.TagListRepository
import com.photosurfer.android.data.repository.*
import com.photosurfer.android.domain.repository.*
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
Expand All @@ -35,4 +29,8 @@ interface RepositoryModule {
@Singleton
fun bindsTagListRepository(repository: TagListRepositoryImpl): TagListRepository

@Binds
@Singleton
fun bindsImageRepository(repository: ImageRepositoryImpl): ImageRepository

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.photosurfer.android.data.remote.mapper

import com.photosurfer.android.data.remote.model.response.DetailImageResponse
import com.photosurfer.android.domain.entity.DetailImageInfo
import javax.inject.Inject

class ImageMapper @Inject constructor() {

fun toDetailImageInfo(detailImageResponse: DetailImageResponse): DetailImageInfo =
DetailImageInfo(
photoId = detailImageResponse.id,
imageUrl = detailImageResponse.imageUrl,
tagList = detailImageResponse.tags
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.photosurfer.android.data.repository

import com.photosurfer.android.core.exception.RetrofitFailureStateException
import com.photosurfer.android.data.remote.calladapter.NetworkState
import com.photosurfer.android.data.remote.datasource.RemoteImageDataSource
import com.photosurfer.android.data.remote.mapper.ImageMapper
import com.photosurfer.android.data.remote.model.request.ChooseTagRequest
import com.photosurfer.android.domain.entity.DetailImageInfo
import com.photosurfer.android.domain.repository.ImageRepository
import timber.log.Timber
import javax.inject.Inject

class ImageRepositoryImpl @Inject constructor(
private val remoteImageDataSource: RemoteImageDataSource,
private val imageMapper: ImageMapper
) : ImageRepository {

override suspend fun getDetailImageInfo(photoId: Int): Result<DetailImageInfo> {
when (
val response = remoteImageDataSource.getDetailImageInfo(photoId)
) {
is NetworkState.Success -> return Result.success(
imageMapper.toDetailImageInfo(response.body.data)
)
is NetworkState.Failure -> return Result.failure(
RetrofitFailureStateException(
response.error,
response.code
)
)
is NetworkState.NetworkError -> Timber.d(
response.error,
"${this.javaClass.name}_getDetailImageInfo"
)
is NetworkState.UnknownError -> Timber.d(
response.t,
"${this.javaClass.name}_getDetailImageInfo"
)
}
return Result.failure(IllegalStateException("NetworkError or UnKnownError please check timber"))
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.photosurfer.android.domain.entity

data class DetailImageInfo(
val photoId: Int,
val imageUrl: String,
val tagList: List<TagInfo>
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.photosurfer.android.domain.repository

import com.photosurfer.android.domain.entity.DetailImageInfo

interface ImageRepository {

suspend fun getDetailImageInfo(photoId: Int): Result<DetailImageInfo>
}

0 comments on commit 0d3122a

Please sign in to comment.