diff options
Diffstat (limited to 'third_party/libwebrtc/examples/objc/AppRTCMobile/ARDJoinResponse.m')
-rw-r--r-- | third_party/libwebrtc/examples/objc/AppRTCMobile/ARDJoinResponse.m | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/third_party/libwebrtc/examples/objc/AppRTCMobile/ARDJoinResponse.m b/third_party/libwebrtc/examples/objc/AppRTCMobile/ARDJoinResponse.m new file mode 100644 index 0000000000..87d58e0db1 --- /dev/null +++ b/third_party/libwebrtc/examples/objc/AppRTCMobile/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 |