Skip to content

Commit

Permalink
#219 feature:aws모듈에 있던 모든 파일 core:network모듈 내 sign패키지로 이동, SignDataSo…
Browse files Browse the repository at this point in the history
…urce를 aws에 맞게 수정
  • Loading branch information
pknujsp committed Mar 10, 2024
1 parent 783b1cb commit c0d80b5
Show file tree
Hide file tree
Showing 23 changed files with 60 additions and 227 deletions.
4 changes: 3 additions & 1 deletion core/common/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ android {
buildConfigField("String", "DATA_GO_KR_SERVICE_KEY", "\"${properties["dataGoKrServiceKey"]}\"")
buildConfigField("String", "DATA_GO_KR_BASE_URL", "\"${properties["dataGoKrBaseUrl"]}\"")
buildConfigField("String", "AWS_BASE_URL", "\"${properties["awsUrl"]}\"")
buildConfigField("String", "VERTEX_ENDPOINT_URL", "\"${properties["vertexEndpointUrl"]}\"")
buildConfigField("String", "AWS_USER_POOL", "\"${properties["AWS_USER_POOL"]}\"")
buildConfigField("String", "AWS_USER_CLIENT_ID", "\"${properties["AWS_USER_CLIENT_ID"]}\"")
buildConfigField("String", "AWS_USER_CLIENT_SECRET", "\"${properties["AWS_USER_CLIENT_SECRET"]}\"")
}

hilt {
Expand Down
1 change: 1 addition & 0 deletions core/data/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,5 @@ dependencies {
implementation(libs.kotlinx.serialization.json)
implementation(libs.kotlinx.coroutines.android)
implementation(libs.androidx.paging.runtime)
implementation(libs.aws.android.sdk.cognito)
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import com.android.mediproject.core.model.requestparameters.LoginParameter
import com.android.mediproject.core.model.requestparameters.SignUpParameter

interface SignRepository {
fun login(loginParameter: LoginParameter): Result<Boolean>
suspend fun login(loginParameter: LoginParameter): Result<Boolean>

fun signUp(signUpParameter: SignUpParameter): Result<Boolean>
suspend fun signUp(signUpParameter: SignUpParameter): Result<Boolean>

fun signOut()
suspend fun signOut()
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,24 +17,20 @@ class SignRepositoryImpl(
private val userInfoRepository: UserInfoRepository,
) : SignRepository {

override fun login(loginParameter: LoginParameter): Result<Boolean> {
signDataSource.logIn(loginParameter).collect { signInResult ->
if (signInResult.isFailure) {
trySend(Result.failure(signInResult.exceptionOrNull() ?: Exception("로그인 실패")))
} else {
appDataStore.apply {
saveSkipIntro(true)
signInResult.onSuccess {
userInfoRepository.updateMyAccountInfo(AccountState.SignedIn(it._userId!!.toLong(), it._nickName!!, it._email!!))
saveMyAccountInfo(it._email!!, it._nickName!!, it._userId!!.toLong())
}
}
trySend(Result.success(Unit))
override suspend fun login(loginParameter: LoginParameter): Result<Boolean> {
val result = signDataSource.logIn(loginParameter)
if (result.isSuccess) {
appDataStore.run {
saveSkipIntro(true)
userInfoRepository.updateMyAccountInfo(AccountState.SignedIn(it._userId!!.toLong(), it._nickName!!, it._email!!))
saveMyAccountInfo(it._email!!, it._nickName!!, it._userId!!.toLong())
}
}

return Result.success(true)
}

override fun signUp(signUpParameter: SignUpParameter): Flow<Result<Unit>> = channelFlow {
override suspend fun signUp(signUpParameter: SignUpParameter): Flow<Result<Unit>> = channelFlow {
signDataSource.signUp(signUpParameter).collect { signUpResult ->
if (signUpResult.isFailure) {
trySend(Result.failure(signUpResult.exceptionOrNull() ?: Exception("로그인 실패")))
Expand All @@ -58,6 +54,6 @@ class SignRepositoryImpl(
*
* 저장된 토큰 정보를 삭제한다.
*/
override fun signOut() = signDataSource.signOut()
override suspend fun signOut() = signDataSource.signOut()

}

This file was deleted.

This file was deleted.

1 change: 1 addition & 0 deletions core/network/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,5 @@ dependencies {

ksp(libs.ksealedbinding.compiler)
implementation(libs.ksealedbinding.annotation)
implementation(libs.aws.android.sdk.cognito)
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.android.mediproject.feature.aws
package com.android.mediproject.core.network.datasource.sign

import com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUserPool

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
package com.android.mediproject.core.network.datasource.sign

import com.android.mediproject.core.model.sign.SignInResponse
import com.android.mediproject.core.model.sign.SignUpResponse
import com.android.mediproject.core.model.requestparameters.LoginParameter
import com.android.mediproject.core.model.requestparameters.SignUpParameter
import kotlinx.coroutines.flow.Flow

interface SignDataSource {
fun logIn(loginParameter: LoginParameter): Flow<Result<SignInResponse>>
fun signUp(signUpParameter: SignUpParameter): Flow<Result<SignUpResponse>>
fun signOut()
suspend fun logIn(loginParameter: LoginParameter): Result<SignInOutAWS.SignInResponse>
suspend fun signUp(signUpParameter: SignUpParameter): Result<SignUpAWS.SignUpResponse>
suspend fun signOut()
}
Original file line number Diff line number Diff line change
@@ -1,66 +1,32 @@
package com.android.mediproject.core.network.datasource.sign

import com.android.mediproject.core.common.util.AesCoder
import com.android.mediproject.core.model.sign.SignInResponse
import com.android.mediproject.core.model.sign.SignUpResponse
import com.android.mediproject.core.model.token.RequestBehavior
import com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUserAttributes
import com.android.mediproject.core.model.requestparameters.LoginParameter

import com.android.mediproject.core.model.requestparameters.SignUpParameter
import com.android.mediproject.core.network.datasource.tokens.onResponseWithTokens
import com.android.mediproject.core.network.module.AwsNetworkApi
import com.android.mediproject.core.network.parameter.LoginRequestParameter
import com.android.mediproject.core.network.parameter.SignUpRequestParameter
import com.android.mediproject.core.network.tokens.TokenServer
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.channelFlow
import java.lang.ref.WeakReference
import javax.inject.Inject

class SignDataSourceImpl @Inject constructor(
private val awsNetworkApi: AwsNetworkApi, private val tokenServer: TokenServer, private val aesCoder: AesCoder,
class SignDataSourceImpl(
private val signInOutAWS: SignInOutAWS,
private val signUpAWS: SignUpAWS,
) : SignDataSource {


/**
* 로그인
*/
override fun logIn(loginParameter: LoginParameter): Flow<Result<SignInResponse>> = channelFlow {
awsNetworkApi.login(
LoginRequestParameter(
WeakReference(loginParameter.email.joinToString("")).get()!!,
WeakReference(aesCoder.encodePassword(loginParameter.email, loginParameter.password)).get()!!,
),
).onResponseWithTokens(RequestBehavior.NewTokens, tokenServer).fold(
onSuccess = {
Result.success(it)
},
onFailure = {
Result.failure(it)
},
).also {
trySend(it)
}
}

override fun signUp(signUpParameter: SignUpParameter): Flow<Result<SignUpResponse>> = channelFlow {
awsNetworkApi.signUp(
SignUpRequestParameter(
WeakReference(signUpParameter.email.joinToString("")).get()!!,
WeakReference(aesCoder.encodePassword(signUpParameter.email, signUpParameter.password)).get()!!, signUpParameter.nickName,
),
).onResponseWithTokens(RequestBehavior.NewTokens, tokenServer).fold(
onSuccess = {
Result.success(it)

override suspend fun logIn(loginParameter: LoginParameter): Result<SignInOutAWS.SignInResponse> = signInOutAWS.signIn(
SignInOutAWS.SignInRequest(
loginParameter.email.contentToString(),
loginParameter.password.map { it.code.toByte() }.toByteArray(),
),
)

override suspend fun signUp(signUpParameter: SignUpParameter): Result<SignUpAWS.SignUpResponse> = signUpAWS.signUp(
SignUpAWS.SignUpRequest(
signUpParameter.email.contentToString(),
signUpParameter.password.map { it.code.toByte() }.toByteArray(),
CognitoUserAttributes().apply {
addAttribute("user_name", signUpParameter.nickName)
},
onFailure = { Result.failure(it) },
).also {
trySend(it)
}
}
),
)

override fun signOut() {
tokenServer.removeTokens()
override suspend fun signOut() {
signInOutAWS.signOut()
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.android.mediproject.feature.aws
package com.android.mediproject.core.network.datasource.sign

import com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoDevice
import com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUserPool
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.android.mediproject.feature.aws
package com.android.mediproject.core.network.datasource.sign

import com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser
import com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUserAttributes
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.android.mediproject.core.network.module

import android.content.Context
import com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUserPool
import com.amazonaws.regions.Regions
import com.android.mediproject.core.common.BuildConfig
import com.android.mediproject.core.common.util.AesCoder
import com.android.mediproject.core.model.comments.CommentChangedResponse
Expand Down Expand Up @@ -30,6 +33,8 @@ import com.android.mediproject.core.network.datasource.medicineid.MedicineIdData
import com.android.mediproject.core.network.datasource.medicineid.MedicineIdDataSourceImpl
import com.android.mediproject.core.network.datasource.sign.SignDataSource
import com.android.mediproject.core.network.datasource.sign.SignDataSourceImpl
import com.android.mediproject.core.network.datasource.sign.SignInOutAWSImpl
import com.android.mediproject.core.network.datasource.sign.SignUpAWSImpl
import com.android.mediproject.core.network.datasource.tokens.TokenDataSource
import com.android.mediproject.core.network.datasource.tokens.TokenDataSourceImpl
import com.android.mediproject.core.network.datasource.user.UserDataSource
Expand All @@ -41,6 +46,7 @@ import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFact
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import kotlinx.serialization.json.Json
import okhttp3.MediaType.Companion.toMediaType
Expand Down Expand Up @@ -87,8 +93,14 @@ object ServerNetwork {

@Provides
fun providesSignDataSource(
awsNetworkApi: AwsNetworkApi, tokenServer: TokenServer, aesCoder: AesCoder,
): SignDataSource = SignDataSourceImpl(awsNetworkApi, tokenServer, aesCoder)
@ApplicationContext context: Context,
): SignDataSource {
val userPool = CognitoUserPool(
context, BuildConfig.AWS_USER_POOL, BuildConfig.AWS_USER_CLIENT_ID, BuildConfig.AWS_USER_CLIENT_SECRET,
Regions.US_EAST_2,
)
return SignDataSourceImpl(SignInOutAWSImpl(userPool), SignUpAWSImpl(userPool))
}

@Provides
@Singleton
Expand Down
1 change: 0 additions & 1 deletion feature/aws/.gitignore

This file was deleted.

14 changes: 0 additions & 14 deletions feature/aws/build.gradle.kts

This file was deleted.

Empty file removed feature/aws/consumer-rules.pro
Empty file.
21 changes: 0 additions & 21 deletions feature/aws/proguard-rules.pro

This file was deleted.

This file was deleted.

4 changes: 0 additions & 4 deletions feature/aws/src/main/AndroidManifest.xml

This file was deleted.

This file was deleted.

This file was deleted.

Loading

0 comments on commit c0d80b5

Please sign in to comment.