Implement dummy data layer
Implement dummy domain layer
This commit is contained in:
parent
55b3ee8ee5
commit
328daeb684
6
data/src/main/java/com/nto/data/models/LoginData.kt
Normal file
6
data/src/main/java/com/nto/data/models/LoginData.kt
Normal file
@ -0,0 +1,6 @@
|
||||
package com.nto.data.models
|
||||
|
||||
data class LoginData(
|
||||
val successful: Boolean,
|
||||
val message: String?
|
||||
)
|
@ -0,0 +1,7 @@
|
||||
package com.nto.data.repository
|
||||
|
||||
import com.nto.data.models.LoginData
|
||||
|
||||
interface DataRepository {
|
||||
suspend fun login(email: String, password: String): LoginData
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package com.nto.data.repository
|
||||
|
||||
import com.nto.data.models.LoginData
|
||||
import com.nto.data.utils.Provider
|
||||
import javax.inject.Inject
|
||||
|
||||
class DataRepositoryImpl @Inject constructor() : DataRepository {
|
||||
override suspend fun login(email: String, password: String): LoginData {
|
||||
val result = Provider.provideRetrofit().login(
|
||||
email, password
|
||||
).execute()
|
||||
if (result.isSuccessful) {
|
||||
val body = result.body()
|
||||
if (body != null) {
|
||||
return body
|
||||
}
|
||||
}
|
||||
return LoginData(false, result.message())
|
||||
}
|
||||
|
||||
}
|
22
data/src/main/java/com/nto/data/utils/Provider.kt
Normal file
22
data/src/main/java/com/nto/data/utils/Provider.kt
Normal file
@ -0,0 +1,22 @@
|
||||
package com.nto.data.utils
|
||||
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
import retrofit2.Retrofit
|
||||
import retrofit2.converter.gson.GsonConverterFactory
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Module
|
||||
@InstallIn(SingletonComponent::class)
|
||||
object Provider {
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideRetrofit(): RetrofitApi {
|
||||
return Retrofit.Builder()
|
||||
.baseUrl("https://test.com/")
|
||||
.addConverterFactory(GsonConverterFactory.create())
|
||||
.build().create(RetrofitApi::class.java)
|
||||
}
|
||||
}
|
11
data/src/main/java/com/nto/data/utils/RetrofitApi.kt
Normal file
11
data/src/main/java/com/nto/data/utils/RetrofitApi.kt
Normal file
@ -0,0 +1,11 @@
|
||||
package com.nto.data.utils
|
||||
|
||||
import com.nto.data.models.LoginData
|
||||
import retrofit2.Call
|
||||
import retrofit2.http.GET
|
||||
import retrofit2.http.Query
|
||||
|
||||
interface RetrofitApi {
|
||||
@GET("login")
|
||||
fun login(@Query("email") email: String, @Query("password") password: String): Call<LoginData>
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package com.nto.domain.repository
|
||||
|
||||
import com.nto.data.models.LoginData
|
||||
|
||||
interface DomainRepository {
|
||||
suspend fun login(email: String, password: String): LoginData
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
package com.nto.domain.repository
|
||||
|
||||
import com.nto.data.models.LoginData
|
||||
import com.nto.data.repository.DataRepositoryImpl
|
||||
import java.io.IOException
|
||||
import java.security.MessageDigest
|
||||
import javax.inject.Inject
|
||||
|
||||
class DomainRepositoryImpl @Inject constructor(private val dataRepositoryImpl: DataRepositoryImpl) :
|
||||
DomainRepository {
|
||||
override suspend fun login(email: String, password: String): LoginData {
|
||||
return try {
|
||||
dataRepositoryImpl.login(
|
||||
email = email,
|
||||
password = MessageDigest.getInstance("SHA-256").digest(password.toByteArray())
|
||||
.toString()
|
||||
)
|
||||
} catch (e: IOException) {
|
||||
LoginData(false, "IO exception was thrown: ${e.message}")
|
||||
}
|
||||
}
|
||||
}
|
16
domain/src/main/java/com/nto/domain/usecase/LoginUseCase.kt
Normal file
16
domain/src/main/java/com/nto/domain/usecase/LoginUseCase.kt
Normal file
@ -0,0 +1,16 @@
|
||||
package com.nto.domain.usecase
|
||||
|
||||
import com.nto.data.models.LoginData
|
||||
import com.nto.domain.repository.DomainRepositoryImpl
|
||||
import javax.inject.Inject
|
||||
|
||||
class LoginUseCase @Inject constructor(private val domainRepositoryImpl: DomainRepositoryImpl) {
|
||||
fun checkCredentials(email: String, password: String): Boolean {
|
||||
val emailRegex = Regex("^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\$")
|
||||
return password.isNotBlank() && emailRegex.matches(email)
|
||||
}
|
||||
|
||||
suspend fun login(email: String, password: String): LoginData {
|
||||
return domainRepositoryImpl.login(email, password)
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user