ConnectAPI
Kentin BRONGNIART 2 weeks ago
commit 694ccdab1e

@ -79,6 +79,6 @@ dependencies {
//Retrofit
implementation(libs.retrofit)
implementation(libs.converter.gson)
implementation(libs.gson)
}

@ -1,6 +1,31 @@
package com.example.what_the_fantasy.data.model
import com.google.gson.*
import java.lang.reflect.Type
enum class SrcLanguage(val code:Int) {
vf(1),
vo(0);
companion object {
fun fromCode(code: Int): SrcLanguage? = values().find { it.code == code }
}
}
class LangAdapter : JsonSerializer<SrcLanguage>, JsonDeserializer<SrcLanguage> {
override fun serialize(
src: SrcLanguage?,
typeOfSrc: Type?,
context: JsonSerializationContext?
): JsonElement = JsonPrimitive(src?.code)
override fun deserialize(
json: JsonElement?,
typeOfT: Type?,
context: JsonDeserializationContext?
): SrcLanguage {
val code = json?.asInt
return SrcLanguage.fromCode(code ?: throw JsonParseException("Code null"))
?: throw JsonParseException("Unknown Status code: $code")
}
enum class SrcLanguage {
vf,
vo
}

@ -14,5 +14,7 @@ class User(
val imgUrl: String,
var password: String,
@SerializedName("lang")
var langage : SrcLanguage
)

@ -1,9 +1,12 @@
package com.example.what_the_fantasy.data.retrofit
import com.example.what_the_fantasy.data.model.Image
import com.example.what_the_fantasy.data.model.LangAdapter
import com.example.what_the_fantasy.data.model.Quote
import com.example.what_the_fantasy.data.model.SrcLanguage
import com.example.what_the_fantasy.data.model.User
import com.google.gson.Gson
import com.google.gson.GsonBuilder
import retrofit2.Response
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
@ -77,10 +80,14 @@ interface ApiService {
object RetrofitInstance {
private const val BASE_URL = "https://codefirst.iut.uca.fr/containers/WhatTheFantasy-web-services/api/v1/"
private val gson: Gson = GsonBuilder()
.registerTypeAdapter(SrcLanguage::class.java, LangAdapter())
.create()
val api: ApiService by lazy {
Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create(gson))
.build()
.create(ApiService::class.java)
}

@ -20,7 +20,7 @@ interface IServices {
suspend fun EditUsername(username : String, index : Int, currentUserViewModel: CurrentUserViewModel) : Boolean
suspend fun EditEmail(email : String, index : Int,currentUserViewModel: CurrentUserViewModel) : Boolean
suspend fun EditPasswd(passwd : String, index : Int)
suspend fun EditPasswd(passwd : String, index : Int,currentUserViewModel : CurrentUserViewModel): Boolean
suspend fun EditImage(index : Int,currentUserViewModel : CurrentUserViewModel) : String
suspend fun ChangeLangage(index : Int, currentUserViewModel : CurrentUserViewModel): SrcLanguage
fun isUsernameExist(username : String) : Boolean

@ -95,6 +95,7 @@ class ServicesAPI : IServices {
val userExistsResponse = RetrofitInstance.api.checkIfEmailExists(email)
if (userExistsResponse) {
Log.d("EditEmail", "Exception occurred: The email alredy exist")
return false
}
@ -125,8 +126,34 @@ class ServicesAPI : IServices {
}
}
override suspend fun EditPasswd(passwd: String, index: Int) {
TODO()
override suspend fun EditPasswd(passwd: String, index: Int, currentUserViewModel: CurrentUserViewModel): Boolean {
try {
val responseUser = RetrofitInstance.api.getUserById(index)
val updatedUser = User(
id = index,
username = responseUser.username,
email = responseUser.username,
password = passwd,
//password = hashPassword(passwd),
imgUrl = responseUser.imgUrl,
langage = responseUser.langage,
date = responseUser.date
)
val response = RetrofitInstance.api.updateUsername(index, updatedUser)
if (response.isSuccessful) {
currentUserViewModel.setUser(updatedUser)
return true
} else {
return false
}
} catch (e: Exception) {
e.printStackTrace()
Log.d("EditPasswd", "Exception occurred: ${e.message}")
return false
}
}
override suspend fun EditImage(index: Int, currentUserViewModel : CurrentUserViewModel): String {

@ -64,11 +64,11 @@ class ServicesStub : IServices {
return false
}
override suspend fun EditPasswd(passwd: String, index : Int) {
override suspend fun EditPasswd(passwd: String, index: Int, currentUserViewModel: CurrentUserViewModel): Boolean {
val user = getUserById(index)
val passwordhash = hashPassword(passwd)
user?.password = passwordhash
return true
//Afficher tous les users en log
//logsUser.logDebugAllUsers(getAllUsers(), "PasswordUpdate")
}

@ -25,7 +25,7 @@ class CurrentUserViewModel : ViewModel(){
setUsername(it.username)
setEmail(it.email)
setPassword(it.password)
//setLangue(it.langage) // A rajouter quand on aura le langage
setLangue(it.langage) // A rajouter quand on aura le langage
setImage(it.imgUrl)
}
}
@ -94,7 +94,7 @@ class CurrentUserViewModel : ViewModel(){
suspend fun editPassword(password : String, index : Int){
services.EditPasswd(password, index)
services.EditPasswd(password, index, this)
}

@ -5,6 +5,7 @@ coilCompose = "2.2.1"
coilComposeVersion = "1.4.0"
converterGson = "2.9.0"
gson = "2.10.1"
kotlin = "1.9.0"
coreKtx = "1.10.1"
junit = "4.13.2"
@ -26,6 +27,7 @@ coil-compose = { module = "io.coil-kt:coil-compose", version.ref = "coilCompose"
coil-compose-v140 = { module = "io.coil-kt:coil-compose", version.ref = "coilComposeVersion" }
converter-gson = { module = "com.squareup.retrofit2:converter-gson", version.ref = "converterGson" }
gson = { module = "com.google.code.gson:gson", version.ref = "gson" }
junit = { group = "junit", name = "junit", version.ref = "junit" }
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }

Loading…
Cancel
Save