tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

ARDJoinResponse.m (3016B)


      1 /*
      2 *  Copyright 2014 The WebRTC Project Authors. All rights reserved.
      3 *
      4 *  Use of this source code is governed by a BSD-style license
      5 *  that can be found in the LICENSE file in the root of the source
      6 *  tree. An additional intellectual property rights grant can be found
      7 *  in the file PATENTS.  All contributing project authors may
      8 *  be found in the AUTHORS file in the root of the source tree.
      9 */
     10 
     11 #import "ARDJoinResponse+Internal.h"
     12 
     13 #import "ARDSignalingMessage.h"
     14 #import "ARDUtilities.h"
     15 #import "RTCIceServer+JSON.h"
     16 
     17 static NSString const *kARDJoinResultKey = @"result";
     18 static NSString const *kARDJoinResultParamsKey = @"params";
     19 static NSString const *kARDJoinInitiatorKey = @"is_initiator";
     20 static NSString const *kARDJoinRoomIdKey = @"room_id";
     21 static NSString const *kARDJoinClientIdKey = @"client_id";
     22 static NSString const *kARDJoinMessagesKey = @"messages";
     23 static NSString const *kARDJoinWebSocketURLKey = @"wss_url";
     24 static NSString const *kARDJoinWebSocketRestURLKey = @"wss_post_url";
     25 
     26 @implementation ARDJoinResponse
     27 
     28 @synthesize result = _result;
     29 @synthesize isInitiator = _isInitiator;
     30 @synthesize roomId = _roomId;
     31 @synthesize clientId = _clientId;
     32 @synthesize messages = _messages;
     33 @synthesize webSocketURL = _webSocketURL;
     34 @synthesize webSocketRestURL = _webSocketRestURL;
     35 
     36 + (ARDJoinResponse *)responseFromJSONData:(NSData *)data {
     37  NSDictionary *responseJSON = [NSDictionary dictionaryWithJSONData:data];
     38  if (!responseJSON) {
     39    return nil;
     40  }
     41  ARDJoinResponse *response = [[ARDJoinResponse alloc] init];
     42  NSString *resultString = responseJSON[kARDJoinResultKey];
     43  response.result = [[self class] resultTypeFromString:resultString];
     44  NSDictionary *params = responseJSON[kARDJoinResultParamsKey];
     45 
     46  response.isInitiator = [params[kARDJoinInitiatorKey] boolValue];
     47  response.roomId = params[kARDJoinRoomIdKey];
     48  response.clientId = params[kARDJoinClientIdKey];
     49 
     50  // Parse messages.
     51  NSArray *messages = params[kARDJoinMessagesKey];
     52  NSMutableArray *signalingMessages =
     53      [NSMutableArray arrayWithCapacity:messages.count];
     54  for (NSString *message in messages) {
     55    ARDSignalingMessage *signalingMessage =
     56        [ARDSignalingMessage messageFromJSONString:message];
     57    [signalingMessages addObject:signalingMessage];
     58  }
     59  response.messages = signalingMessages;
     60 
     61  // Parse websocket urls.
     62  NSString *webSocketURLString = params[kARDJoinWebSocketURLKey];
     63  response.webSocketURL = [NSURL URLWithString:webSocketURLString];
     64  NSString *webSocketRestURLString = params[kARDJoinWebSocketRestURLKey];
     65  response.webSocketRestURL = [NSURL URLWithString:webSocketRestURLString];
     66 
     67  return response;
     68 }
     69 
     70 #pragma mark - Private
     71 
     72 + (ARDJoinResultType)resultTypeFromString:(NSString *)resultString {
     73  ARDJoinResultType result = kARDJoinResultTypeUnknown;
     74  if ([resultString isEqualToString:@"SUCCESS"]) {
     75    result = kARDJoinResultTypeSuccess;
     76  } else if ([resultString isEqualToString:@"FULL"]) {
     77    result = kARDJoinResultTypeFull;
     78  }
     79  return result;
     80 }
     81 
     82 @end