浏览代码

Extract check whether a URL requires SSL for WebSocket/HTTP into a separate function.

Nikita Lutsenko 9 年之前
父节点
当前提交
1218028be5

+ 1 - 6
SocketRocket/Internal/Proxy/SRProxyConnect.m

@@ -50,12 +50,7 @@ typedef void (^SRProxyConnectionCompletion)(NSError *error, NSInputStream *readS
     if (!self) return self;
     
     _url = url;
-        
-    NSString *scheme = url.scheme.lowercaseString;
-        
-    if ([scheme isEqualToString:@"wss"] || [scheme isEqualToString:@"https"]) {
-        _secure = YES;
-    }
+    _connectionRequiresSSL = SRURLRequiresSSL(url);
     
     _writeQueue =  [[NSOperationQueue alloc] init];
     _inputQueue = [NSMutableArray arrayWithCapacity:2];

+ 2 - 0
SocketRocket/Internal/Utilities/SRURLUtilities.h

@@ -15,6 +15,8 @@ NS_ASSUME_NONNULL_BEGIN
 // So instead, just map ws -> http and wss -> https.
 extern NSString *SRURLOrigin(NSURL *url);
 
+extern BOOL SRURLRequiresSSL(NSURL *url);
+
 // Extracts `user` and `password` from url (if available) into `Basic base64(user:password)`.
 extern NSString *_Nullable SRBasicAuthorizationHeaderFromURL(NSURL *url);
 

+ 6 - 0
SocketRocket/Internal/Utilities/SRURLUtilities.m

@@ -33,6 +33,12 @@ NSString *SRURLOrigin(NSURL *url)
     return origin;
 }
 
+extern BOOL SRURLRequiresSSL(NSURL *url)
+{
+    NSString *scheme = url.scheme.lowercaseString;
+    return ([scheme isEqualToString:@"wss"] || [scheme isEqualToString:@"https"]);
+}
+
 extern NSString *_Nullable SRBasicAuthorizationHeaderFromURL(NSURL *url)
 {
     NSData *data = [[NSString stringWithFormat:@"%@:%@", url.user, url.password] dataUsingEncoding:NSUTF8StringEncoding];

+ 1 - 6
SocketRocket/SRWebSocket.m

@@ -163,12 +163,7 @@ NSString *const SRHTTPResponseErrorKey = @"HTTPResponseStatusCode";
 
     _requestedProtocols = [protocols copy];
 
-    NSString *scheme = _url.scheme.lowercaseString;
-    assert([scheme isEqualToString:@"ws"] || [scheme isEqualToString:@"http"] || [scheme isEqualToString:@"wss"] || [scheme isEqualToString:@"https"]);
-
-    if ([scheme isEqualToString:@"wss"] || [scheme isEqualToString:@"https"]) {
-        _secure = YES;
-    }
+    _secure = SRURLRequiresSSL(_url);
 
     _readyState = SR_CONNECTING;