mirror of
https://github.com/Tencent/Hippy.git
synced 2026-10-20 07:38:33 +08:00
117 lines
3.3 KiB
Objective-C
117 lines
3.3 KiB
Objective-C
/*!
|
|
* iOS SDK
|
|
*
|
|
* Tencent is pleased to support the open source community by making
|
|
* Hippy available.
|
|
*
|
|
* Copyright (C) 2019 THL A29 Limited, a Tencent company.
|
|
* All rights reserved.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#import "HippyBundleURLProvider.h"
|
|
|
|
NSString *const HippyBundleURLSchemeHttp = @"http";
|
|
NSString *const HippyBundleURLSchemetHttps = @"https";
|
|
|
|
@interface HippyBundleURLProvider ()
|
|
|
|
@property (nonatomic, copy) NSString *localhostIP;
|
|
@property (nonatomic, copy) NSString *localhostPort;
|
|
@property (nonatomic, copy) NSString *debugPathUrl;
|
|
@property (nonatomic, copy) NSString *versionId;
|
|
@property (nonatomic, copy) NSString *scheme;
|
|
@property (nonatomic, copy) NSString *wsURL;
|
|
|
|
@end
|
|
|
|
@implementation HippyBundleURLProvider
|
|
|
|
#pragma mark - Life cycle
|
|
|
|
+ (instancetype)sharedInstance {
|
|
static HippyBundleURLProvider *sharedInstance = nil;
|
|
static dispatch_once_t onceToken;
|
|
dispatch_once(&onceToken, ^{
|
|
sharedInstance = [[HippyBundleURLProvider alloc] init];
|
|
});
|
|
return sharedInstance;
|
|
}
|
|
|
|
+ (NSString *)parseVersionId:(NSString *)path {
|
|
if (path.length <= 0) {
|
|
return @"";
|
|
}
|
|
if ([path hasPrefix:@"/"]) {
|
|
path = [path substringFromIndex:1];
|
|
}
|
|
NSArray<NSString *> *pathArray = [path componentsSeparatedByString:@"/"];
|
|
if (pathArray.count <= 1) {
|
|
return @"";
|
|
}
|
|
return [pathArray firstObject];
|
|
}
|
|
|
|
- (instancetype)init {
|
|
self = [super init];
|
|
if (self) {
|
|
_scheme = HippyBundleURLSchemeHttp;
|
|
_localhostIP = @"localhost";
|
|
_localhostPort = @"38989";
|
|
self.debugPathUrl = @"/index.bundle?platform=ios&dev=true&minify=false";
|
|
// websocket url after url encode
|
|
//_wsURL = @"debugUrl=wss%3A%2F%2Fdevtools.hippy.myqcloud.com%3A443%2Fdebugger-proxy";
|
|
}
|
|
return self;
|
|
}
|
|
|
|
#pragma mark - Public
|
|
|
|
- (void)setLocalhostIP:(NSString *)localhostIP localhostPort:(NSString *)localhostPort {
|
|
if (localhostIP) {
|
|
_localhostIP = localhostIP;
|
|
}
|
|
if (localhostPort) {
|
|
_localhostPort = localhostPort;
|
|
}
|
|
}
|
|
|
|
- (void)setScheme:(NSString *)scheme {
|
|
if (scheme) {
|
|
_scheme = scheme;
|
|
}
|
|
}
|
|
|
|
- (void)setDebugPathUrl:(NSString *)debugPathUrl {
|
|
if (debugPathUrl) {
|
|
_debugPathUrl = debugPathUrl;
|
|
_versionId = [HippyBundleURLProvider parseVersionId:_debugPathUrl];
|
|
}
|
|
}
|
|
|
|
- (NSString *)localhost {
|
|
return [NSString stringWithFormat:@"%@:%@", _localhostIP, _localhostPort];
|
|
}
|
|
|
|
- (NSString *)bundleURLString {
|
|
NSString *scheme = _scheme.length > 0 ? _scheme : HippyBundleURLSchemeHttp;
|
|
NSString *debugPath = _debugPathUrl;
|
|
if (_wsURL.length > 0) {
|
|
debugPath = [NSString stringWithFormat:@"%@&%@", debugPath, _wsURL];
|
|
}
|
|
return [NSString stringWithFormat:@"%@://%@%@", scheme, self.localhost, debugPath];
|
|
}
|
|
|
|
@end
|