1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- //
- // Copyright (c) 2016-present, Facebook, Inc.
- // All rights reserved.
- //
- // This source code is licensed under the BSD-style license found in the
- // LICENSE file in the root directory of this source tree. An additional grant
- // of patent rights can be found in the PATENTS file in the same directory.
- //
- #import "SRURLUtilities.h"
- #import "SRHash.h"
- NS_ASSUME_NONNULL_BEGIN
- NSString *SRURLOrigin(NSURL *url)
- {
- NSMutableString *origin = [NSMutableString string];
- NSString *scheme = url.scheme.lowercaseString;
- if ([scheme isEqualToString:@"wss"]) {
- scheme = @"https";
- } else if ([scheme isEqualToString:@"ws"]) {
- scheme = @"http";
- }
- [origin appendFormat:@"%@://%@", scheme, url.host];
- NSNumber *port = url.port;
- BOOL portIsDefault = (!port ||
- ([scheme isEqualToString:@"http"] && port.integerValue == 80) ||
- ([scheme isEqualToString:@"https"] && port.integerValue == 443));
- if (!portIsDefault) {
- [origin appendFormat:@":%@", port.stringValue];
- }
- 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];
- return [NSString stringWithFormat:@"Basic %@", SRBase64EncodedStringFromData(data)];
- }
- extern NSString *_Nullable SRStreamNetworkServiceTypeFromURLRequest(NSURLRequest *request)
- {
- NSString *networkServiceType = nil;
- switch (request.networkServiceType) {
- case NSURLNetworkServiceTypeDefault:
- break;
- case NSURLNetworkServiceTypeVoIP:
- networkServiceType = NSStreamNetworkServiceTypeVoIP;
- break;
- case NSURLNetworkServiceTypeVideo:
- networkServiceType = NSStreamNetworkServiceTypeVideo;
- break;
- case NSURLNetworkServiceTypeBackground:
- networkServiceType = NSStreamNetworkServiceTypeBackground;
- break;
- case NSURLNetworkServiceTypeVoice:
- networkServiceType = NSStreamNetworkServiceTypeVoice;
- break;
- #if (__MAC_OS_X_VERSION_MAX_ALLOWED >= 101200 || __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000 || __TV_OS_VERSION_MAX_ALLOWED >= 100000 || __WATCH_OS_VERSION_MAX_ALLOWED >= 30000)
- case NSURLNetworkServiceTypeCallSignaling:
- networkServiceType = NSStreamNetworkServiceTypeCallSignaling;
- break;
- #endif
- }
- return networkServiceType;
- }
- NS_ASSUME_NONNULL_END
|