
ResponseDetective هو إطار غير تابع لاعتراض أي طلبات صادرة والاستجابات الواردة بين تطبيقك والخادم الخاص بك لأغراض تصحيح الأخطاء.
تمت كتابة ResponseDetective في Swift 5.3 ويدعم iOS 9.0+ و MacOS 10.10+ و TVOS 9.0+ .
إن دمج RevieDetective في مشروعك أمر بسيط للغاية - كل ذلك يعود إلى خطوتين فقط:
لكي تعمل ResponseCtive ، يجب إضافتها كسيطور بين (NS)URLSession والإنترنت. يمكنك القيام بذلك عن طريق تسجيل فئة URLProtocol المقدمة في (NS)URLSessionConfiguration.protocolClasses .
// Objective-C
NSURLSessionConfiguration *configuration = [ NSURLSessionConfiguration defaultSessionConfiguration ];
[RDTResponseDetective enableInConfiguration: configuration];// Swift
let configuration = URLSessionConfiguration . default
ResponseDetective . enable ( inConfiguration : configuration ) بعد ذلك ، يجب عليك استخدام هذا التكوين باستخدام (NS)URLSession :
// Objective-C
NSURLSession *session = [[ NSURLSession alloc ] initWithConfiguration: configuration];// Swift
let session = URLSession ( configuration : configuration ) أو ، إذا كنت تستخدم AFNETWorking / Alamofire كإطار عمل الشبكات الخاص بك ، فإن دمج ResponseDetive يعود إلى تهيئة AFURLSessionManager / Manager مع (NS)URLSessionConfiguration :
// Objective-C (AFNetworking)
AFURLSessionManager *manager = [[AFURLSessionManager alloc ] initWithSessionConfiguration: configuration];// Swift (Alamofire)
let manager = Alamofire . SessionManager ( configuration : configuration )وهذا كل شيء!
الآن حان الوقت لأداء الطلب الفعلي:
// Objective-C
NSURLRequest *request = [[ NSURLRequest alloc ] initWithURL: [ NSURL URLWithString: @" http://httpbin.org/get " ]];
[[session dataTaskWithRequest: request] resume ];// Swift
let request = URLRequest ( URL : URL ( string : " http://httpbin.org/get " ) ! )
session . dataTask ( with : request ) . resume ( )فويلا! ؟ تحقق من إخراج وحدة التحكم الخاصة بك:
<0x000000000badf00d> [REQUEST] GET https://httpbin.org/get
├─ Headers
├─ Body
│ <none>
<0x000000000badf00d> [RESPONSE] 200 (NO ERROR) https://httpbin.org/get
├─ Headers
│ Server: nginx
│ Date: Thu, 01 Jan 1970 00:00:00 GMT
│ Content-Type: application/json
├─ Body
│ {
│ "args" : {
│ },
│ "headers" : {
│ "User-Agent" : "ResponseDetective/1 CFNetwork/758.3.15 Darwin/15.4.0",
│ "Accept-Encoding" : "gzip, deflate",
│ "Host" : "httpbin.org",
│ "Accept-Language" : "en-us",
│ "Accept" : "*/*"
│ },
│ "url" : "https://httpbin.org/get"
│ }
إذا كنت تستخدم قرطاج ، أضف التبعية التالية إلى Cartfile :
github "netguru/ResponseDetective" ~> {version}
إذا كنت تستخدم Cocoapods ، فأضف التبعية التالية إلى Podfile :
use_frameworks!
pod 'ResponseDetective', '~> {version}'
إذا كنت تستخدم Swift Package Manager ، فأضف هذا المستودع إلى الحزم السريعة في إعدادات المشروع.
لتثبيت تبعيات الاختبار أو لبناء ResponseDeticive نفسها ، لا تقم بتشغيل carthage مباشرة. لا يمكنه التعامل مع بنيات Apple Silicon التي تم تقديمها في Xcode 12. بدلاً من ذلك ، قم بتشغيلها من خلال نص carthage.sh :
$ ./carthage.sh bootstrapبدلاً من ذلك ، يمكنك تشغيل الاختبارات محليًا باستخدام Swift Package Manager مع الأمر التالي:
$ swift test تم صنع هذا المشروع مع ♡ بواسطة Netguru.
بدءًا من الإصدار 1.0.0 ، تتم تسمية إصدارات ResponseDetective على اسم قصص شيرلوك هولمز ، بترتيب زمني. ماذا يحدث إذا وصلنا إلى 60 إصدارًا ولم تعد هناك قصص؟ لا نعرف ، ربما سنبدأ في تسميةهم بعد القطط أو شيء من هذا القبيل.
هذا المشروع مرخص بموجب ترخيص معهد ماساتشوستس للتكنولوجيا . انظر الترخيص. MD لمزيد من المعلومات.