React Native SDK - اعتراض الشبكة
اعتراض الشبكة
Section titled اعتراض الشبكةيصدّر ORTracker الكائن NetworkListener الذي يقبل المهام والطلبات على حدٍّ سواء، وإليك كيفية القيام بذلك:
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()
}
تطهير الطلب
Section titled تطهير الطلبيتم تصدير مفتاحين لاقتطاع بيانات الطلب/الاستجابة تلقائيًا: ignoredKeys للجسم وignoredHeaders للترويسات. سيتم تطهير كلٍّ من الطلب والاستجابة، لكن الجسم لن يتأثر إلا إذا كان بصيغة JSON صالحة.
ما عليك سوى تعيين قائمة من السلاسل النصية التي ترغب في تطهيرها:
let networkListener = NetworkListener()
networkListener.ignoredHeaders = ["mySecretToken"]
networkListener.ignoredKeys = ["password"]
من الممكن أيضًا تعديل بيانات الاستجابة قبل تمريرها إلى المستمع:
// ... 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)