Créer Retrofit CallAdapter pour Coroutines pour gérer la réponse en tant qu’états
La prochaine étape consiste à créer notre CallAdapter.Factory
CallAdapter.Factory
n’a qu’une seule méthode abstraite que nous devrions mettre en œuvre qui est get
.
get
méthode dans le CallAdapter.Factory
devrait renvoyer un adaptateur de rappel pour les méthodes d’interface qu’il pourrait gérer ou annuler s’il ne peut pas être géré par cette usine.
Donc simplement notre get
méthode dans notre coutume CallAdapter.Factory
devrait vérifier si le returnType
est notre classe scellée pour les appels de réponse API, puis gérez-la.
Si l’appelant ne demande pas notre classe scellée, renvoyez null, ce n’est pas le bon adaptateur.
Qu’est-ce que ça veut dire?
Mais nous devons d’abord savoir comment suspend
les fonctions fonctionnent avec Retrofit.
@GET("users/{id}")
suspend fun user(@Path("id") id: Long): User
Dans les coulisses, cela se comporte comme défini comme fun user(...): Call
puis invoqué avec Call.enqueue
Cela signifie donc que lorsque nous avons une fonction de suspension comme celle-ci
suspend fun user(): ApiResponse
C’est en fait
fun user(): Call>
Donc, après avoir retiré le Call
tapez, nous devons nous assurer que le type interne est ApiResponse
Maintenant, nous avons atteint un point, où nous avons la réponse ApiResponse
Ensuite, nous devons extraire les types de réussite et d’erreur du ApiResponse
type paramétré.
La base CallAdapter.Factory
dans Retrofit a une fonction nommée getParameterUpperBound
ce qui devrait nous aider à obtenir les types de réussite / erreur du type paramétré ApiResponse
Ensuite, récupérez le convertisseur d’erreur et retournez