Index: webrtc/examples/objc/AppRTCDemo/ARDJoinResponse.m |
diff --git a/webrtc/examples/objc/AppRTCDemo/ARDJoinResponse.m b/webrtc/examples/objc/AppRTCDemo/ARDJoinResponse.m |
new file mode 100644 |
index 0000000000000000000000000000000000000000..87d58e0db1d6e2781b28e9051e18ab96aef6eefa |
--- /dev/null |
+++ b/webrtc/examples/objc/AppRTCDemo/ARDJoinResponse.m |
@@ -0,0 +1,82 @@ |
+/* |
+ * Copyright 2014 The WebRTC Project Authors. All rights reserved. |
+ * |
+ * Use of this source code is governed by a BSD-style license |
+ * that can be found in the LICENSE file in the root of the source |
+ * tree. An additional intellectual property rights grant can be found |
+ * in the file PATENTS. All contributing project authors may |
+ * be found in the AUTHORS file in the root of the source tree. |
+ */ |
+ |
+#import "ARDJoinResponse+Internal.h" |
+ |
+#import "ARDSignalingMessage.h" |
+#import "ARDUtilities.h" |
+#import "RTCIceServer+JSON.h" |
+ |
+static NSString const *kARDJoinResultKey = @"result"; |
+static NSString const *kARDJoinResultParamsKey = @"params"; |
+static NSString const *kARDJoinInitiatorKey = @"is_initiator"; |
+static NSString const *kARDJoinRoomIdKey = @"room_id"; |
+static NSString const *kARDJoinClientIdKey = @"client_id"; |
+static NSString const *kARDJoinMessagesKey = @"messages"; |
+static NSString const *kARDJoinWebSocketURLKey = @"wss_url"; |
+static NSString const *kARDJoinWebSocketRestURLKey = @"wss_post_url"; |
+ |
+@implementation ARDJoinResponse |
+ |
+@synthesize result = _result; |
+@synthesize isInitiator = _isInitiator; |
+@synthesize roomId = _roomId; |
+@synthesize clientId = _clientId; |
+@synthesize messages = _messages; |
+@synthesize webSocketURL = _webSocketURL; |
+@synthesize webSocketRestURL = _webSocketRestURL; |
+ |
++ (ARDJoinResponse *)responseFromJSONData:(NSData *)data { |
+ NSDictionary *responseJSON = [NSDictionary dictionaryWithJSONData:data]; |
+ if (!responseJSON) { |
+ return nil; |
+ } |
+ ARDJoinResponse *response = [[ARDJoinResponse alloc] init]; |
+ NSString *resultString = responseJSON[kARDJoinResultKey]; |
+ response.result = [[self class] resultTypeFromString:resultString]; |
+ NSDictionary *params = responseJSON[kARDJoinResultParamsKey]; |
+ |
+ response.isInitiator = [params[kARDJoinInitiatorKey] boolValue]; |
+ response.roomId = params[kARDJoinRoomIdKey]; |
+ response.clientId = params[kARDJoinClientIdKey]; |
+ |
+ // Parse messages. |
+ NSArray *messages = params[kARDJoinMessagesKey]; |
+ NSMutableArray *signalingMessages = |
+ [NSMutableArray arrayWithCapacity:messages.count]; |
+ for (NSString *message in messages) { |
+ ARDSignalingMessage *signalingMessage = |
+ [ARDSignalingMessage messageFromJSONString:message]; |
+ [signalingMessages addObject:signalingMessage]; |
+ } |
+ response.messages = signalingMessages; |
+ |
+ // Parse websocket urls. |
+ NSString *webSocketURLString = params[kARDJoinWebSocketURLKey]; |
+ response.webSocketURL = [NSURL URLWithString:webSocketURLString]; |
+ NSString *webSocketRestURLString = params[kARDJoinWebSocketRestURLKey]; |
+ response.webSocketRestURL = [NSURL URLWithString:webSocketRestURLString]; |
+ |
+ return response; |
+} |
+ |
+#pragma mark - Private |
+ |
++ (ARDJoinResultType)resultTypeFromString:(NSString *)resultString { |
+ ARDJoinResultType result = kARDJoinResultTypeUnknown; |
+ if ([resultString isEqualToString:@"SUCCESS"]) { |
+ result = kARDJoinResultTypeSuccess; |
+ } else if ([resultString isEqualToString:@"FULL"]) { |
+ result = kARDJoinResultTypeFull; |
+ } |
+ return result; |
+} |
+ |
+@end |