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