@@ -47,6 +47,35 @@ SSL/TLS security policy wrapper that implements Alamofire's `ServerTrustEvaluati
4747- 1 = PublicKey (pin to public keys)
4848- 2 = Certificate (pin to certificates)
4949
50+ ### EventMonitorWrapper.swift
51+ Wrapper for Alamofire's EventMonitor protocol to enable network event tracking from TypeScript.
52+
53+ ** Key Features:**
54+ - Request lifecycle tracking (resume, suspend, cancel, finish)
55+ - Data reception monitoring
56+ - Request completion tracking with response/error
57+ - @objc-compatible callback-based API
58+
59+ ** Available Callbacks:**
60+ - ` setRequestDidResume ` - Called when request starts
61+ - ` setRequestDidSuspend ` - Called when request is paused
62+ - ` setRequestDidCancel ` - Called when request is cancelled
63+ - ` setRequestDidFinish ` - Called when request finishes
64+ - ` setRequestDidComplete ` - Called with response/error
65+ - ` setDataTaskDidReceiveData ` - Called as data is received
66+
67+ ### RequestInterceptorWrapper.swift
68+ Wrapper for Alamofire's RequestInterceptor protocol to enable request modification and retry logic from TypeScript.
69+
70+ ** Key Features:**
71+ - Request adaptation (modify requests before sending)
72+ - Automatic retry logic with custom conditions
73+ - @objc-compatible callback-based API
74+
75+ ** Available Callbacks:**
76+ - ` setAdapt ` - Modify URLRequest before sending
77+ - ` setRetry ` - Return true to retry failed requests
78+
5079### MultipartFormDataWrapper.swift
5180Wrapper for building multipart form data requests.
5281
@@ -95,6 +124,45 @@ task.resume();
95124// User can then call toFile(), toArrayBuffer(), etc. on the response
96125```
97126
127+ ### Using Interceptors and Event Monitors
128+
129+ ``` typescript
130+ // Create an event monitor to track network events
131+ const eventMonitor = EventMonitorWrapper .alloc ().init ();
132+ eventMonitor .setRequestDidResume ((request ) => {
133+ console .log (' Request started:' , request .URL .absoluteString );
134+ });
135+ eventMonitor .setDataTaskDidReceiveData ((request , data ) => {
136+ console .log (' Received data:' , data .length , ' bytes' );
137+ });
138+ eventMonitor .setRequestDidComplete ((request , response , error ) => {
139+ if (error ) {
140+ console .log (' Request failed:' , error .localizedDescription );
141+ } else {
142+ console .log (' Request completed:' , response .statusCode );
143+ }
144+ });
145+ manager .addEventMonitor (eventMonitor );
146+
147+ // Create a request interceptor to modify requests and retry logic
148+ const interceptor = RequestInterceptorWrapper .alloc ().init ();
149+ interceptor .setAdapt ((request ) => {
150+ // Add custom headers to all requests
151+ const mutableRequest = request .mutableCopy ();
152+ mutableRequest .setValueForHTTPHeaderField (' CustomToken' , ' Authorization' );
153+ return mutableRequest ;
154+ });
155+ interceptor .setRetry ((request , error , retryCount ) => {
156+ // Retry up to 3 times on network errors
157+ if (retryCount < 3 ) {
158+ console .log (` Retrying request (attempt ${retryCount + 1 })... ` );
159+ return true ;
160+ }
161+ return false ;
162+ });
163+ manager .addInterceptor (interceptor );
164+ ```
165+
98166## Design Decisions
99167
100168### Why Wrappers?
0 commit comments