appium-mac2-driver 4.2.0 → 4.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/WebDriverAgentMac/IntegrationTests/AMW3CActionsTests.m +7 -9
  3. package/WebDriverAgentMac/WebDriverAgentLib/Routing/AMHTTPServer.h +84 -0
  4. package/WebDriverAgentMac/WebDriverAgentLib/Routing/AMHTTPServer.m +493 -0
  5. package/WebDriverAgentMac/WebDriverAgentLib/Routing/AMTCPSocket.h +109 -0
  6. package/WebDriverAgentMac/WebDriverAgentLib/Routing/AMTCPSocket.m +235 -0
  7. package/WebDriverAgentMac/WebDriverAgentLib/Routing/FBWebServer.h +1 -1
  8. package/WebDriverAgentMac/WebDriverAgentLib/Routing/FBWebServer.m +9 -21
  9. package/WebDriverAgentMac/WebDriverAgentLib/Routing/RouteRequest.h +36 -0
  10. package/WebDriverAgentMac/WebDriverAgentLib/Routing/RouteRequest.m +33 -0
  11. package/WebDriverAgentMac/WebDriverAgentLib/Routing/RouteResponse.h +37 -0
  12. package/WebDriverAgentMac/WebDriverAgentLib/Routing/RouteResponse.m +62 -0
  13. package/WebDriverAgentMac/WebDriverAgentMac.xcodeproj/project.pbxproj +32 -176
  14. package/npm-shrinkwrap.json +107 -167
  15. package/package.json +3 -2
  16. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncSocket.h +0 -1226
  17. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncSocket.m +0 -8513
  18. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncUdpSocket.h +0 -1036
  19. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/CocoaAsyncSocket/GCDAsyncUdpSocket.m +0 -5632
  20. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/CocoaHTTPServer/Categories/DDNumber.h +0 -12
  21. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/CocoaHTTPServer/Categories/DDNumber.m +0 -88
  22. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/CocoaHTTPServer/Categories/DDRange.h +0 -56
  23. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/CocoaHTTPServer/Categories/DDRange.m +0 -106
  24. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPConnection.h +0 -107
  25. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPConnection.m +0 -2238
  26. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPLogging.h +0 -122
  27. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPMessage.h +0 -48
  28. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPMessage.m +0 -114
  29. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPResponse.h +0 -149
  30. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPServer.h +0 -200
  31. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/CocoaHTTPServer/HTTPServer.m +0 -720
  32. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/CocoaHTTPServer/Responses/HTTPDataResponse.h +0 -13
  33. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/CocoaHTTPServer/Responses/HTTPDataResponse.m +0 -83
  34. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/CocoaHTTPServer/Responses/HTTPErrorResponse.h +0 -9
  35. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/CocoaHTTPServer/Responses/HTTPErrorResponse.m +0 -40
  36. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/RoutingHTTPServer/HTTPResponseProxy.h +0 -13
  37. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/RoutingHTTPServer/HTTPResponseProxy.m +0 -84
  38. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/RoutingHTTPServer/Route.h +0 -18
  39. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/RoutingHTTPServer/Route.m +0 -11
  40. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/RoutingHTTPServer/RouteRequest.h +0 -16
  41. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/RoutingHTTPServer/RouteRequest.m +0 -50
  42. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/RoutingHTTPServer/RouteResponse.h +0 -20
  43. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/RoutingHTTPServer/RouteResponse.m +0 -66
  44. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingConnection.h +0 -5
  45. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingConnection.m +0 -142
  46. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingHTTPServer.h +0 -55
  47. package/WebDriverAgentMac/WebDriverAgentLib/Vendor/RoutingHTTPServer/RoutingHTTPServer.m +0 -288
@@ -1,288 +0,0 @@
1
- #import "RoutingHTTPServer.h"
2
- #import "RoutingConnection.h"
3
- #import "Route.h"
4
-
5
- #pragma clang diagnostic ignored "-Wdirect-ivar-access"
6
- #pragma clang diagnostic ignored "-Widiomatic-parentheses"
7
-
8
- @implementation RoutingHTTPServer {
9
- NSMutableDictionary *routes;
10
- NSMutableDictionary *defaultHeaders;
11
- NSMutableDictionary *mimeTypes;
12
- dispatch_queue_t routeQueue;
13
- }
14
-
15
- @synthesize defaultHeaders;
16
-
17
- - (id)init {
18
- if (self = [super init]) {
19
- connectionClass = [RoutingConnection self];
20
- routes = [[NSMutableDictionary alloc] init];
21
- defaultHeaders = [[NSMutableDictionary alloc] init];
22
- [self setupMIMETypes];
23
- }
24
- return self;
25
- }
26
-
27
- #if !OS_OBJECT_USE_OBJC_RETAIN_RELEASE
28
- - (void)dealloc {
29
- if (routeQueue)
30
- dispatch_release(routeQueue);
31
- }
32
- #endif
33
-
34
- - (void)setDefaultHeaders:(NSDictionary *)headers {
35
- if (headers) {
36
- defaultHeaders = [headers mutableCopy];
37
- } else {
38
- defaultHeaders = [[NSMutableDictionary alloc] init];
39
- }
40
- }
41
-
42
- - (void)setDefaultHeader:(NSString *)field value:(NSString *)value {
43
- [defaultHeaders setObject:value forKey:field];
44
- }
45
-
46
- - (dispatch_queue_t)routeQueue {
47
- return routeQueue;
48
- }
49
-
50
- - (void)setRouteQueue:(dispatch_queue_t)queue {
51
- #if !OS_OBJECT_USE_OBJC_RETAIN_RELEASE
52
- if (queue)
53
- dispatch_retain(queue);
54
-
55
- if (routeQueue)
56
- dispatch_release(routeQueue);
57
- #endif
58
-
59
- routeQueue = queue;
60
- }
61
-
62
- - (NSDictionary *)mimeTypes {
63
- return mimeTypes;
64
- }
65
-
66
- - (void)setMIMETypes:(NSDictionary *)types {
67
- NSMutableDictionary *newTypes;
68
- if (types) {
69
- newTypes = [types mutableCopy];
70
- } else {
71
- newTypes = [[NSMutableDictionary alloc] init];
72
- }
73
-
74
- mimeTypes = newTypes;
75
- }
76
-
77
- - (void)setMIMEType:(NSString *)theType forExtension:(NSString *)ext {
78
- [mimeTypes setObject:theType forKey:ext];
79
- }
80
-
81
- - (NSString *)mimeTypeForPath:(NSString *)path {
82
- NSString *ext = [[path pathExtension] lowercaseString];
83
- if (!ext || [ext length] < 1)
84
- return nil;
85
-
86
- return [mimeTypes objectForKey:ext];
87
- }
88
-
89
- - (void)get:(NSString *)path withBlock:(RequestHandler)block {
90
- [self handleMethod:@"GET" withPath:path block:block];
91
- }
92
-
93
- - (void)post:(NSString *)path withBlock:(RequestHandler)block {
94
- [self handleMethod:@"POST" withPath:path block:block];
95
- }
96
-
97
- - (void)put:(NSString *)path withBlock:(RequestHandler)block {
98
- [self handleMethod:@"PUT" withPath:path block:block];
99
- }
100
-
101
- - (void)delete:(NSString *)path withBlock:(RequestHandler)block {
102
- [self handleMethod:@"DELETE" withPath:path block:block];
103
- }
104
-
105
- - (void)handleMethod:(NSString *)method withPath:(NSString *)path block:(RequestHandler)block {
106
- Route *route = [self routeWithPath:path];
107
- route.handler = block;
108
-
109
- [self addRoute:route forMethod:method];
110
- }
111
-
112
- - (void)handleMethod:(NSString *)method withPath:(NSString *)path target:(id)target selector:(SEL)selector {
113
- Route *route = [self routeWithPath:path];
114
- route.target = target;
115
- route.selector = selector;
116
-
117
- [self addRoute:route forMethod:method];
118
- }
119
-
120
- - (void)addRoute:(Route *)route forMethod:(NSString *)method {
121
- method = [method uppercaseString];
122
- NSMutableArray *methodRoutes = [routes objectForKey:method];
123
- if (methodRoutes == nil) {
124
- methodRoutes = [NSMutableArray array];
125
- [routes setObject:methodRoutes forKey:method];
126
- }
127
-
128
- [methodRoutes addObject:route];
129
-
130
- // Define a HEAD route for all GET routes
131
- if ([method isEqualToString:@"GET"]) {
132
- [self addRoute:route forMethod:@"HEAD"];
133
- }
134
- }
135
-
136
- - (Route *)routeWithPath:(NSString *)path {
137
- Route *route = [[Route alloc] init];
138
- NSMutableArray *keys = [NSMutableArray array];
139
-
140
- if ([path length] > 2 && [path characterAtIndex:0] == '{') {
141
- // This is a custom regular expression, just remove the {}
142
- path = [path substringWithRange:NSMakeRange(1, [path length] - 2)];
143
- } else {
144
- NSRegularExpression *regex = nil;
145
-
146
- // Escape regex characters
147
- regex = [NSRegularExpression regularExpressionWithPattern:@"[.+()]" options:0 error:nil];
148
- path = [regex stringByReplacingMatchesInString:path options:0 range:NSMakeRange(0, path.length) withTemplate:@"\\\\$0"];
149
-
150
- // Parse any :parameters and * in the path
151
- regex = [NSRegularExpression regularExpressionWithPattern:@"(:(\\w+)|\\*)"
152
- options:0
153
- error:nil];
154
- NSMutableString *regexPath = [NSMutableString stringWithString:path];
155
- __block NSInteger diff = 0;
156
- [regex enumerateMatchesInString:path options:0 range:NSMakeRange(0, path.length)
157
- usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
158
- NSRange replacementRange = NSMakeRange(diff + result.range.location, result.range.length);
159
- NSString *replacementString;
160
-
161
- NSString *capturedString = [path substringWithRange:result.range];
162
- if ([capturedString isEqualToString:@"*"]) {
163
- [keys addObject:@"wildcards"];
164
- replacementString = @"(.*?)";
165
- } else {
166
- NSString *keyString = [path substringWithRange:[result rangeAtIndex:2]];
167
- [keys addObject:keyString];
168
- replacementString = @"([^/]+)";
169
- }
170
-
171
- [regexPath replaceCharactersInRange:replacementRange withString:replacementString];
172
- diff += replacementString.length - result.range.length;
173
- }];
174
-
175
- path = [NSString stringWithFormat:@"^%@$", regexPath];
176
- }
177
-
178
- route.regex = [NSRegularExpression regularExpressionWithPattern:path options:NSRegularExpressionCaseInsensitive error:nil];
179
- if ([keys count] > 0) {
180
- route.keys = keys;
181
- }
182
-
183
- return route;
184
- }
185
-
186
- - (BOOL)supportsMethod:(NSString *)method {
187
- return ([routes objectForKey:method] != nil);
188
- }
189
-
190
- - (void)handleRoute:(Route *)route withRequest:(RouteRequest *)request response:(RouteResponse *)response {
191
- if (route.handler) {
192
- route.handler(request, response);
193
- } else {
194
- #pragma clang diagnostic push
195
- #pragma clang diagnostic ignored "-Warc-performSelector-leaks"
196
- [route.target performSelector:route.selector withObject:request withObject:response];
197
- #pragma clang diagnostic pop
198
- }
199
- }
200
-
201
- - (RouteResponse *)routeMethod:(NSString *)method withPath:(NSString *)path parameters:(NSDictionary *)params request:(HTTPMessage *)httpMessage connection:(HTTPConnection *)connection {
202
- NSMutableArray *methodRoutes = [routes objectForKey:method];
203
- if (methodRoutes == nil)
204
- return nil;
205
-
206
- for (Route *route in methodRoutes) {
207
- NSTextCheckingResult *result = [route.regex firstMatchInString:path options:0 range:NSMakeRange(0, path.length)];
208
- if (!result)
209
- continue;
210
-
211
- // The first range is all of the text matched by the regex.
212
- NSUInteger captureCount = [result numberOfRanges];
213
-
214
- if (route.keys) {
215
- // Add the route's parameters to the parameter dictionary, accounting for
216
- // the first range containing the matched text.
217
- if (captureCount == [route.keys count] + 1) {
218
- NSMutableDictionary *newParams = [params mutableCopy];
219
- NSUInteger index = 1;
220
- BOOL firstWildcard = YES;
221
- for (NSString *key in route.keys) {
222
- NSString *capture = [path substringWithRange:[result rangeAtIndex:index]];
223
- if ([key isEqualToString:@"wildcards"]) {
224
- NSMutableArray *wildcards = [newParams objectForKey:key];
225
- if (firstWildcard) {
226
- // Create a new array and replace any existing object with the same key
227
- wildcards = [NSMutableArray array];
228
- [newParams setObject:wildcards forKey:key];
229
- firstWildcard = NO;
230
- }
231
- [wildcards addObject:capture];
232
- } else {
233
- [newParams setObject:capture forKey:key];
234
- }
235
- index++;
236
- }
237
- params = newParams;
238
- }
239
- } else if (captureCount > 1) {
240
- // For custom regular expressions place the anonymous captures in the captures parameter
241
- NSMutableDictionary *newParams = [params mutableCopy];
242
- NSMutableArray *captures = [NSMutableArray array];
243
- for (NSUInteger i = 1; i < captureCount; i++) {
244
- [captures addObject:[path substringWithRange:[result rangeAtIndex:i]]];
245
- }
246
- [newParams setObject:captures forKey:@"captures"];
247
- params = newParams;
248
- }
249
-
250
- RouteRequest *request = [[RouteRequest alloc] initWithHTTPMessage:httpMessage parameters:params];
251
- RouteResponse *response = [[RouteResponse alloc] initWithConnection:connection];
252
- if (!routeQueue) {
253
- [self handleRoute:route withRequest:request response:response];
254
- } else {
255
- // Process the route on the specified queue
256
- dispatch_sync(routeQueue, ^{
257
- @autoreleasepool {
258
- [self handleRoute:route withRequest:request response:response];
259
- }
260
- });
261
- }
262
- return response;
263
- }
264
-
265
- return nil;
266
- }
267
-
268
- - (void)setupMIMETypes {
269
- mimeTypes = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
270
- @"application/x-javascript", @"js",
271
- @"image/gif", @"gif",
272
- @"image/jpeg", @"jpg",
273
- @"image/jpeg", @"jpeg",
274
- @"image/png", @"png",
275
- @"image/svg+xml", @"svg",
276
- @"image/tiff", @"tif",
277
- @"image/tiff", @"tiff",
278
- @"image/x-icon", @"ico",
279
- @"image/x-ms-bmp", @"bmp",
280
- @"text/css", @"css",
281
- @"text/html", @"html",
282
- @"text/html", @"htm",
283
- @"text/plain", @"txt",
284
- @"text/xml", @"xml",
285
- nil];
286
- }
287
-
288
- @end