blob: 933739f58f2e95f62c2ebe60048a1dea610cb687 [file] [log] [blame]
hjonaa32c3e2015-12-13 19:58:11 -08001/*
2 * Copyright 2015 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
tkchin9eeb6242016-04-27 01:54:20 -070011#import "RTCIceServer+Private.h"
hjonaa32c3e2015-12-13 19:58:11 -080012
tkchin9eeb6242016-04-27 01:54:20 -070013#import "NSString+StdString.h"
hjonaa32c3e2015-12-13 19:58:11 -080014
15@implementation RTCIceServer
16
17@synthesize urlStrings = _urlStrings;
18@synthesize username = _username;
19@synthesize credential = _credential;
hnsl67415162017-02-02 13:04:27 -080020@synthesize tlsCertPolicy = _tlsCertPolicy;
hjonaa32c3e2015-12-13 19:58:11 -080021
Jon Hjelle32e0c012016-03-08 16:04:46 -080022- (instancetype)initWithURLStrings:(NSArray<NSString *> *)urlStrings {
hjonaa32c3e2015-12-13 19:58:11 -080023 return [self initWithURLStrings:urlStrings
24 username:nil
25 credential:nil];
26}
27
Jon Hjelle32e0c012016-03-08 16:04:46 -080028- (instancetype)initWithURLStrings:(NSArray<NSString *> *)urlStrings
hjonaa32c3e2015-12-13 19:58:11 -080029 username:(NSString *)username
30 credential:(NSString *)credential {
hnsl67415162017-02-02 13:04:27 -080031 return [self initWithURLStrings:urlStrings
32 username:username
33 credential:credential
34 tlsCertPolicy:RTCTlsCertPolicySecure];
35}
36
37- (instancetype)initWithURLStrings:(NSArray<NSString *> *)urlStrings
38 username:(NSString *)username
39 credential:(NSString *)credential
40 tlsCertPolicy:(RTCTlsCertPolicy)tlsCertPolicy {
hjonaa32c3e2015-12-13 19:58:11 -080041 NSParameterAssert(urlStrings.count);
42 if (self = [super init]) {
43 _urlStrings = [[NSArray alloc] initWithArray:urlStrings copyItems:YES];
44 _username = [username copy];
45 _credential = [credential copy];
hnsl67415162017-02-02 13:04:27 -080046 _tlsCertPolicy = tlsCertPolicy;
hjonaa32c3e2015-12-13 19:58:11 -080047 }
48 return self;
49}
50
51- (NSString *)description {
hnsl67415162017-02-02 13:04:27 -080052 return
53 [NSString stringWithFormat:@"RTCIceServer:\n%@\n%@\n%@\n%@", _urlStrings,
54 _username, _credential,
55 [self stringForTlsCertPolicy:_tlsCertPolicy]];
hjonaa32c3e2015-12-13 19:58:11 -080056}
57
58#pragma mark - Private
59
hnsl67415162017-02-02 13:04:27 -080060- (NSString *)stringForTlsCertPolicy:(RTCTlsCertPolicy)tlsCertPolicy {
61 switch (tlsCertPolicy) {
62 case RTCTlsCertPolicySecure:
63 return @"RTCTlsCertPolicySecure";
64 case RTCTlsCertPolicyInsecureNoCheck:
65 return @"RTCTlsCertPolicyInsecureNoCheck";
66 }
67}
68
hjona2f77982016-03-04 07:09:09 -080069- (webrtc::PeerConnectionInterface::IceServer)nativeServer {
hjonaa32c3e2015-12-13 19:58:11 -080070 __block webrtc::PeerConnectionInterface::IceServer iceServer;
71
72 iceServer.username = [NSString stdStringForString:_username];
73 iceServer.password = [NSString stdStringForString:_credential];
74
75 [_urlStrings enumerateObjectsUsingBlock:^(NSString *url,
76 NSUInteger idx,
77 BOOL *stop) {
78 iceServer.urls.push_back(url.stdString);
79 }];
hnsl67415162017-02-02 13:04:27 -080080
81 switch (_tlsCertPolicy) {
82 case RTCTlsCertPolicySecure:
83 iceServer.tls_cert_policy =
84 webrtc::PeerConnectionInterface::kTlsCertPolicySecure;
85 break;
86 case RTCTlsCertPolicyInsecureNoCheck:
87 iceServer.tls_cert_policy =
88 webrtc::PeerConnectionInterface::kTlsCertPolicyInsecureNoCheck;
89 break;
90 }
hjonaa32c3e2015-12-13 19:58:11 -080091 return iceServer;
92}
93
hjon6d49a8e2016-01-26 13:06:42 -080094- (instancetype)initWithNativeServer:
95 (webrtc::PeerConnectionInterface::IceServer)nativeServer {
96 NSMutableArray *urls =
97 [NSMutableArray arrayWithCapacity:nativeServer.urls.size()];
98 for (auto const &url : nativeServer.urls) {
99 [urls addObject:[NSString stringForStdString:url]];
100 }
101 NSString *username = [NSString stringForStdString:nativeServer.username];
102 NSString *credential = [NSString stringForStdString:nativeServer.password];
hnsl67415162017-02-02 13:04:27 -0800103 RTCTlsCertPolicy tlsCertPolicy;
104
105 switch (nativeServer.tls_cert_policy) {
106 case webrtc::PeerConnectionInterface::kTlsCertPolicySecure:
107 tlsCertPolicy = RTCTlsCertPolicySecure;
108 break;
109 case webrtc::PeerConnectionInterface::kTlsCertPolicyInsecureNoCheck:
110 tlsCertPolicy = RTCTlsCertPolicyInsecureNoCheck;
111 break;
112 }
113
hjon6d49a8e2016-01-26 13:06:42 -0800114 self = [self initWithURLStrings:urls
115 username:username
hnsl67415162017-02-02 13:04:27 -0800116 credential:credential
117 tlsCertPolicy:tlsCertPolicy];
hjon6d49a8e2016-01-26 13:06:42 -0800118 return self;
119}
120
hjonaa32c3e2015-12-13 19:58:11 -0800121@end