Skip to content

Commit f165bba

Browse files
committed
Use +[RCTConvert NSURL:] everywhere instead of +[NSURL URLWithString:]
Summary: RCTConvert's URL: method gracefully handles unescaped urls, local file urls, urls containing unicode, etc. URLWithString doesn't.
1 parent 222594c commit f165bba

5 files changed

Lines changed: 13 additions & 10 deletions

File tree

Libraries/ActionSheetIOS/RCTActionSheetManager.m

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
#import "RCTActionSheetManager.h"
1111

12+
#import "RCTConvert.h"
1213
#import "RCTLog.h"
1314
#import "RCTUtils.h"
1415

@@ -72,13 +73,13 @@ - (dispatch_queue_t)methodQueue
7273
successCallback:(RCTResponseSenderBlock)successCallback)
7374
{
7475
NSMutableArray *items = [NSMutableArray array];
75-
id message = options[@"message"];
76-
id url = options[@"url"];
77-
if ([message isKindOfClass:[NSString class]]) {
76+
NSString *message = [RCTConvert NSString:options[@"message"]];
77+
if (message) {
7878
[items addObject:message];
7979
}
80-
if ([url isKindOfClass:[NSString class]]) {
81-
[items addObject:[NSURL URLWithString:url]];
80+
NSURL *URL = [RCTConvert NSURL:options[@"url"]];
81+
if (URL) {
82+
[items addObject:URL];
8283
}
8384
if ([items count] == 0) {
8485
failureCallback(@[@"No `url` or `message` to share"]);

Libraries/Image/RCTImageLoader.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ - (RCTImageLoaderCancellationBlock)loadImageWithTag:(NSString *)imageTag
127127
completionBlock:(RCTImageLoaderCompletionBlock)completionBlock
128128
{
129129
if ([imageTag hasPrefix:@"assets-library://"]) {
130-
[[self assetsLibrary] assetForURL:[NSURL URLWithString:imageTag] resultBlock:^(ALAsset *asset) {
130+
[[self assetsLibrary] assetForURL:[RCTConvert NSURL:imageTag] resultBlock:^(ALAsset *asset) {
131131
if (asset) {
132132
// ALAssetLibrary API is async and will be multi-threaded. Loading a few full
133133
// resolution images at once will spike the memory up to store the image data,
@@ -210,7 +210,7 @@ - (RCTImageLoaderCancellationBlock)loadImageWithTag:(NSString *)imageTag
210210
}];
211211
return ^{};
212212
} else if ([imageTag hasPrefix:@"http"]) {
213-
NSURL *url = [NSURL URLWithString:imageTag];
213+
NSURL *url = [RCTConvert NSURL:imageTag];
214214
if (!url) {
215215
NSString *errorMessage = [NSString stringWithFormat:@"Invalid URL: %@", imageTag];
216216
RCTDispatchCallbackOnMainQueue(completionBlock, RCTErrorWithMessage(errorMessage), nil);

Libraries/WebSocket/RCTWebSocketExecutor.m

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
#import "RCTWebSocketExecutor.h"
1515

16+
#import "RCTConvert.h"
1617
#import "RCTLog.h"
1718
#import "RCTSparseArray.h"
1819
#import "RCTUtils.h"
@@ -38,7 +39,7 @@ @implementation RCTWebSocketExecutor
3839

3940
- (instancetype)init
4041
{
41-
return [self initWithURL:[NSURL URLWithString:@"http://localhost:8081/debugger-proxy"]];
42+
return [self initWithURL:[RCTConvert NSURL:@"http://localhost:8081/debugger-proxy"]];
4243
}
4344

4445
- (instancetype)initWithURL:(NSURL *)URL

React/Base/RCTBatchedBridge.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -777,7 +777,7 @@ - (void)stopProfiling
777777
NSURL *bundleURL = _parentBridge.bundleURL;
778778
NSString *port = bundleURL.port ? [@":" stringByAppendingString:bundleURL.port.stringValue] : @"";
779779
NSString *URLString = [NSString stringWithFormat:@"%@://%@%@/profile", bundleURL.scheme, bundleURL.host, port];
780-
NSURL *URL = [NSURL URLWithString:URLString];
780+
NSURL *URL = [RCTConvert NSURL:URLString];
781781
NSMutableURLRequest *URLRequest = [NSMutableURLRequest requestWithURL:URL];
782782
URLRequest.HTTPMethod = @"POST";
783783
[URLRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

React/Base/RCTRedBox.m

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#import "RCTRedBox.h"
1111

1212
#import "RCTBridge.h"
13+
#import "RCTConvert.h"
1314
#import "RCTDefines.h"
1415
#import "RCTUtils.h"
1516

@@ -102,7 +103,7 @@ - (void)openStackFrameInEditor:(NSDictionary *)stackFrame
102103
NSData *stackFrameJSON = [RCTJSONStringify(stackFrame, nil) dataUsingEncoding:NSUTF8StringEncoding];
103104
NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[stackFrameJSON length]];
104105
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
105-
request.URL = [NSURL URLWithString:@"http://localhost:8081/open-stack-frame"];
106+
request.URL = [RCTConvert NSURL:@"http://localhost:8081/open-stack-frame"];
106107
request.HTTPMethod = @"POST";
107108
request.HTTPBody = stackFrameJSON;
108109
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];

0 commit comments

Comments
 (0)