Skip to content

Commit 8cd9686

Browse files
committed
[BOOK-92] feat: 유저 프로필 조회 API 연동
1 parent 9d45323 commit 8cd9686

7 files changed

Lines changed: 68 additions & 0 deletions

File tree

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
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+
}

core/data/impl/src/main/kotlin/com/ninecraft/booket/core/data/impl/di/RepositoryModule.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.ninecraft.booket.core.data.impl.di
22

33
import com.ninecraft.booket.core.data.api.repository.AuthRepository
4+
import com.ninecraft.booket.core.data.api.repository.UserRepository
45
import com.ninecraft.booket.core.data.impl.repository.DefaultAuthRepository
6+
import com.ninecraft.booket.core.data.impl.repository.DefaultUserRepository
57
import dagger.Binds
68
import dagger.Module
79
import 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
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,22 @@
11
package com.ninecraft.booket.core.data.impl.mapper
22

33
import com.ninecraft.booket.core.model.LoginModel
4+
import com.ninecraft.booket.core.model.UserProfileModel
45
import com.ninecraft.booket.core.network.response.LoginResponse
6+
import com.ninecraft.booket.core.network.response.UserProfileResponse
57

68
internal 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+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
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+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
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+
)
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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+
)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
package com.ninecraft.booket.core.network.service
22

3+
import com.ninecraft.booket.core.network.response.UserProfileResponse
4+
import retrofit2.http.GET
35
import retrofit2.http.POST
46

57
interface AuthService {
68
@POST("api/v1/auth/signout")
79
suspend fun logout()
10+
11+
@GET("api/v1/auth/me")
12+
suspend fun getUserProfile(): UserProfileResponse
813
}

0 commit comments

Comments
 (0)