SDK React Native - Intercepter le réseau
Intercepter le réseau
Section titled Intercepter le réseauORTracker exporte NetworkListener, qui accepte à la fois les tâches et les requêtes ; voici comment procéder :
import ORTracker
func fetchPokemonData(for name: String) {
let networkListener = NetworkListener()
let url = URL(string: "https://pokeapi.co/api/v2/pokemon/ditto")!
var request = URLRequest(url: url)
request.httpMethod = "GET" // This is the default, so it's optional in this case.
// Start the network listener with the request
networkListener.start(request: request)
// Create a data task
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error.localizedDescription)")
return
}
if let data = data {
do {
let json = try JSONSerialization.jsonObject(with: data, options: [])
print(json)
} catch {
print("Error deserializing JSON: \(error)")
}
}
networkListener.finish(response: response, data: data)
}
task.resume()
}
Assainir la requête
Section titled Assainir la requêteDeux clés sont exportées pour rogner automatiquement les données de la requête/réponse : ignoredKeys pour le corps et ignoredHeaders pour les en-têtes. La requête et la réponse seront toutes deux assainies, mais le corps ne sera affecté que s’il s’agit d’un JSON valide.
Il suffit d’attribuer une liste de chaînes que vous souhaitez assainir :
let networkListener = NetworkListener()
networkListener.ignoredHeaders = ["mySecretToken"]
networkListener.ignoredKeys = ["password"]
Il est également possible de modifier les données de la réponse avant de les transmettre au listener :
// ... request
var sanitizedData
if let data = data {
do {
let json = try JSONSerialization.jsonObject(with: data, options: [])
sanitizedData = customSanitizeFunction(data)
print(json)
} catch {
print("Error deserializing JSON: \(error)")
}
}
networkListener.finish(response: response, data: sanitizedData)