44#import " USRVWebViewApp.h"
55#import " USRVWebRequestError.h"
66#import " USRVWebRequestEvent.h"
7+ #import " UADSServiceProviderProxy.h"
8+ #import " NSMutableDictionary+SafeOperations.h"
9+ #import " UADSServiceProviderProxy.h"
10+ #import " UADSBaseOptions.h"
11+ #import " UADSCommonNetworkErrorProxy.h"
12+ #import " UADSCorePresenceChecker.h"
13+ #import " NSDictionary+Headers.h"
714
815@implementation USRVApiRequest
9-
1016static NSString *webRequestEventCategory = @" REQUEST" ;
1117
18+ + (USRVWebViewApp *)eventSender {
19+ return [USRVWebViewApp getCurrentApp ];
20+ }
21+
22+ + (void )WebViewExposed_supportsURLSession : (USRVWebViewCallback *)callback {
23+ [callback invoke: [NSNumber numberWithBool: UADSCorePresenceChecker.isPresent], nil ];
24+ }
25+
1226+ (void )WebViewExposed_get : (NSString *)requestId url : (NSString *)url headers : (NSArray *)headers connectTimeout : (NSNumber *)connectTimeout callback : (USRVWebViewCallback *)callback {
1327 if (headers && headers.count == 0 ) {
1428 headers = NULL ;
@@ -28,7 +42,7 @@ + (void)WebViewExposed_get: (NSString *)requestId url: (NSString *)url headers:
2842 }
2943 };
3044
31- NSDictionary *mappedHeaders = [USRVApiRequest getHeadersMap : headers];
45+ NSDictionary *mappedHeaders = [NSDictionary uads_getHeadersMap : headers];
3246
3347 if (!mappedHeaders) {
3448 [callback error: USRVNSStringFromWebRequestError (kUnityServicesWebRequestErrorMappingHeadersFailed )
@@ -63,7 +77,7 @@ + (void)WebViewExposed_head: (NSString *)requestId url: (NSString *)url headers:
6377 }
6478 };
6579
66- NSDictionary *mappedHeaders = [USRVApiRequest getHeadersMap : headers];
80+ NSDictionary *mappedHeaders = [NSDictionary uads_getHeadersMap : headers];
6781
6882 if (!mappedHeaders) {
6983 [callback error: USRVNSStringFromWebRequestError (kUnityServicesWebRequestErrorMappingHeadersFailed )
@@ -98,7 +112,7 @@ + (void)WebViewExposed_post: (NSString *)requestId url: (NSString *)url body: (N
98112 }
99113 };
100114
101- NSDictionary *mappedHeaders = [USRVApiRequest getHeadersMap : headers];
115+ NSDictionary *mappedHeaders = [NSDictionary uads_getHeadersMap : headers];
102116
103117 if (!mappedHeaders) {
104118 [callback error: USRVNSStringFromWebRequestError (kUnityServicesWebRequestErrorMappingHeadersFailed )
@@ -120,54 +134,8 @@ + (void)WebViewExposed_setConcurrentRequestCount: (NSNumber *)count callback: (U
120134 [callback invoke: nil ];
121135}
122136
123- + (NSDictionary <NSString *, NSArray *> *)getHeadersMap : (NSArray *)headers {
124- NSMutableDictionary *mappedHeaders = [[NSMutableDictionary alloc ] init ];
125-
126- if (headers && headers.count > 0 ) {
127- for (int idx = 0 ; idx < headers.count ; idx++) {
128- if (![[headers objectAtIndex: idx] isKindOfClass: [NSArray class ]]) return NULL ;
129-
130- NSArray *header = [headers objectAtIndex: idx];
131-
132- if ([header count ] != 2 ) return NULL ;
133-
134- if (![[header objectAtIndex: 0 ] isKindOfClass: [NSString class ]] || ![[header objectAtIndex: 1 ] isKindOfClass: [NSString class ]]) {
135- return NULL ;
136- }
137-
138- NSString *headerKey = [header objectAtIndex: 0 ];
139- NSString *headerValue = [header objectAtIndex: 1 ];
140-
141- if (headerKey.length < 1 ) return NULL ;
142-
143- NSMutableArray *valueList = [[NSMutableArray alloc ] initWithArray: [mappedHeaders objectForKey: headerKey]];
144- [valueList addObject: headerValue];
145- [mappedHeaders setObject: valueList
146- forKey: headerKey];
147- }
148- }
149-
150- return mappedHeaders;
151- } /* getHeadersMap */
152-
153- + (NSArray <NSArray<NSString *> *> *)getHeadersArray : (NSDictionary <NSString *, NSString *> *)headersMap {
154- __block NSArray *headersArray = [NSArray array ];
155-
156- if (headersMap && headersMap.count > 0 ) {
157- @try {
158- [headersMap enumerateKeysAndObjectsUsingBlock: ^(NSString *_Nonnull key, NSString *_Nonnull obj, BOOL *_Nonnull stop) {
159- headersArray = [headersArray arrayByAddingObject: @[key, obj]];
160- }];
161- } @catch (id exception) {
162- return NULL ;
163- }
164- }
165-
166- return headersArray;
167- }
168-
169137+ (void )sendSuccess : (NSString *)requestId url : (NSString *)url response : (NSString *)response responseCode : (long )responseCode headers : (NSDictionary <NSString *, NSString *> *)headers {
170- NSArray <NSArray <NSString *> *> *responseHeaders = [USRVApiRequest getHeadersArray : headers];
138+ NSArray <NSArray <NSString *> *> *responseHeaders = [NSDictionary uads_getHeadersArray : headers];
171139
172140 if (!responseHeaders) {
173141 NSError *error = [NSError errorWithDomain: @" com.unity3d.ads.UnityServices.Error"
@@ -211,4 +179,35 @@ + (void)sendFailed: (NSString *)requestId url: (NSString *)url error: (NSError *
211179 nil ];
212180} /* sendFailed */
213181
182+ + (void )sendResponseToWebView : (NSDictionary *)dictionary
183+ category : (UnityServicesWebRequestEvent)event {
184+ [self .eventSender sendEvent: USRVNSStringFromWebRequestEvent (event)
185+ category: webRequestEventCategory
186+ param1: dictionary, nil ];
187+ }
188+
189+ + (void )WebViewExposed_sendRequest : (NSDictionary *)requestDictionary
190+ callback : (USRVWebViewCallback *)callback {
191+ id errorCompletion = ^(NSDictionary *_Nonnull error) {
192+ [self sendResponseToWebView: error
193+ category: kUnityServicesWebRequestEventFailed ];
194+ };
195+
196+ id successCompletion = ^(NSDictionary *_Nonnull response) {
197+ [self sendResponseToWebView: response
198+ category: kUnityServicesWebRequestEventComplete ];
199+ };
200+
201+
202+ [self .network sendRequestUsing: requestDictionary
203+ successCompletion: successCompletion
204+ andErrorCompletion: errorCompletion];
205+
206+ [callback invoke: requestDictionary[@" id" ] ? : @" " , nil ];
207+ }
208+
209+ + (UADSCommonNetworkProxy *)network {
210+ return [UADSServiceProviderProxy shared ].mainNetworkLayer ;
211+ }
212+
214213@end
0 commit comments