Skip to content

Fredbellano/android-network-library

Repository files navigation

Network Android Library

Installation

Ajouter le repository Maven (JitPack) dans votre settings.gradle.kts:

dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
        maven("https://jitpack.io")
    }
}

Puis ajouter la librairie dans votre build.gradle.kts:

dependencies {
    implementation("com.github.Fredbellano:android-network-library:<latest-version>")
}

Utilisation

Pour pouvoir faire des requêtes HTTP, il faut utiliser le client dans le fichier RemoteDataSource.kt:

RemoteDataSource.client

Objet Result

Le client retourne un objet de type Result<T> pour chaques types de requetes. Ce type permet de savoir si la requête a été un succès ou un échec. Pour accéder à la valeur de la requête, il faut utiliser la méthode getOrNull de l'objet Result<T>:

val result: Result<T> = RemoteDataSource.client.get("{URL}")
val value: T = result.getOrNull() // or getOrThrow() pour obtenir la valeur ou lancer une exception
val exception: Throwable? = result.exceptionOrNull()

Methode GET

Pour faire une requête GET, il faut utiliser la méthode get du client:

val result: Result<MyDataClass> = RemoteDataSource.client.get("{URL}")

// Avec des paramètres et headers
val result: Result<MyDataClass> =
    RemoteDataSource.client.get("{URL}",
        params = mapOf("param1" to "value1", "param2" to "value2"),
        headers = mapOf("header1" to "value1", "header2" to "value2")
    )

Methode POST

Pour faire une requête POST, il faut utiliser la méthode post du client:

val result: Result<MyDataClass> = RemoteDataSource.client.post("{URL}", body = MyDataClass())

Methode PUT

Pour faire une requête PUT, il faut utiliser la méthode put du client:

val result: Result<MyDataClass> = RemoteDataSource.client.put("{URL}", body = MyDataClass())

Methode DELETE

Pour faire une requête DELETE, il faut utiliser la méthode delete du client:

val result: Result<MyDataClass> = RemoteDataSource.client.delete("{URL}")

Exemple d'utilisation dans un ViewModel

class ExampleViewModel : ViewModel() {
    fun fetchPosts() {
        // ViewModelScope est une CoroutineScope liée au ViewModel (i.e : annulée lorsque le ViewModel est détruit)
        viewModelScope.launch {
            val result: Result<List<Post>> = RemoteDataSource.client.get(
                "https://jsonplaceholder.typicode.com/posts",
                queryParams = mapOf("userId" to "1"),
                headers = mapOf("Authorization" to "Bearer token")
            )

            // Vérifier si la requête a réussi
            when {
                result.isSuccess -> {
                    val posts = result.getOrThrow()
                }
                result.isFailure -> {
                    val exception = result.exceptionOrNull()
                    Log.e("ExampleViewModel", "Erreur: ${exception?.message}")
                }
            }
        }
    }
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages