File tree Expand file tree Collapse file tree
api/src/main/kotlin/com/ninecraft/booket/core/data/api/repository
impl/src/main/kotlin/com/ninecraft/booket/core/data/impl
model/src/main/kotlin/com/ninecraft/booket/core/model
network/src/main/kotlin/com/ninecraft/booket/core/network Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ package com.ninecraft.booket.core.data.api.repository
2+
3+ import com.ninecraft.booket.core.model.UserProfileModel
4+
5+ interface UserRepository {
6+ suspend fun getUserProfile (): Result <UserProfileModel >
7+ }
Original file line number Diff line number Diff line change 11package com.ninecraft.booket.core.data.impl.di
22
33import com.ninecraft.booket.core.data.api.repository.AuthRepository
4+ import com.ninecraft.booket.core.data.api.repository.UserRepository
45import com.ninecraft.booket.core.data.impl.repository.DefaultAuthRepository
6+ import com.ninecraft.booket.core.data.impl.repository.DefaultUserRepository
57import dagger.Binds
68import dagger.Module
79import dagger.hilt.InstallIn
@@ -15,4 +17,8 @@ internal abstract class RepositoryModule {
1517 @Binds
1618 @Singleton
1719 abstract fun bindAuthRepository (defaultAuthRepository : DefaultAuthRepository ): AuthRepository
20+
21+ @Binds
22+ @Singleton
23+ abstract fun bindUserRepository (defaultUserRepository : DefaultUserRepository ): UserRepository
1824}
Original file line number Diff line number Diff line change 11package com.ninecraft.booket.core.data.impl.mapper
22
33import com.ninecraft.booket.core.model.LoginModel
4+ import com.ninecraft.booket.core.model.UserProfileModel
45import com.ninecraft.booket.core.network.response.LoginResponse
6+ import com.ninecraft.booket.core.network.response.UserProfileResponse
57
68internal fun LoginResponse.toModel (): LoginModel {
79 return LoginModel (
810 accessToken = accessToken,
911 refreshToken = refreshToken,
1012 )
1113}
14+
15+ internal fun UserProfileResponse.toModel (): UserProfileModel {
16+ return UserProfileModel (
17+ id = id,
18+ email = email,
19+ nickname = nickname,
20+ provider = provider,
21+ )
22+ }
Original file line number Diff line number Diff line change 1+ package com.ninecraft.booket.core.data.impl.repository
2+
3+ import com.ninecraft.booket.core.common.utils.runSuspendCatching
4+ import com.ninecraft.booket.core.data.api.repository.UserRepository
5+ import com.ninecraft.booket.core.data.impl.mapper.toModel
6+ import com.ninecraft.booket.core.network.service.AuthService
7+ import javax.inject.Inject
8+
9+ internal class DefaultUserRepository @Inject constructor(
10+ private val authService : AuthService ,
11+ ) : UserRepository {
12+ override suspend fun getUserProfile () = runSuspendCatching {
13+ authService.getUserProfile().toModel()
14+ }
15+ }
Original file line number Diff line number Diff line change 1+ package com.ninecraft.booket.core.model
2+
3+ data class UserProfileModel (
4+ val id : String ,
5+ val email : String ,
6+ val nickname : String ,
7+ val provider : String ,
8+ )
Original file line number Diff line number Diff line change 1+ package com.ninecraft.booket.core.network.response
2+
3+ import kotlinx.serialization.SerialName
4+ import kotlinx.serialization.Serializable
5+
6+ @Serializable
7+ data class UserProfileResponse (
8+ @SerialName(" id" )
9+ val id : String ,
10+ @SerialName(" email" )
11+ val email : String ,
12+ @SerialName(" nickname" )
13+ val nickname : String ,
14+ @SerialName(" provider" )
15+ val provider : String ,
16+ )
Original file line number Diff line number Diff line change 11package com.ninecraft.booket.core.network.service
22
3+ import com.ninecraft.booket.core.network.response.UserProfileResponse
4+ import retrofit2.http.GET
35import retrofit2.http.POST
46
57interface AuthService {
68 @POST(" api/v1/auth/signout" )
79 suspend fun logout ()
10+
11+ @GET(" api/v1/auth/me" )
12+ suspend fun getUserProfile (): UserProfileResponse
813}
You can’t perform that action at this time.
0 commit comments