Skip to content

Commit 8c1db27

Browse files
committed
Apply fix to joltup#266
1 parent cafb7f2 commit 8c1db27

File tree

6 files changed

+222
-217
lines changed

6 files changed

+222
-217
lines changed

ios/RNFetchBlob/RNFetchBlob.m

Lines changed: 55 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,25 @@ - (NSDictionary *)constantsToExport
8080
callback:(RCTResponseSenderBlock)callback)
8181
{
8282

83-
[RNFetchBlobReqBuilder buildMultipartRequest:options taskId:taskId method:method url:url headers:headers form:form onComplete:^(__weak NSURLRequest *req, long bodyLength) {
83+
[RNFetchBlobReqBuilder buildMultipartRequest:options
84+
taskId:taskId
85+
method:method
86+
url:url
87+
headers:headers
88+
form:form
89+
onComplete:^(__weak NSURLRequest *req, long bodyLength)
90+
{
91+
// something went wrong when building the request body
92+
if(req == nil)
93+
{
94+
callback(@[@"RNFetchBlob.fetchBlobForm failed to create request body"]);
95+
}
8496
// send HTTP request
85-
RNFetchBlobNetwork * utils = [[RNFetchBlobNetwork alloc] init];
86-
[utils sendRequest:options contentLength:bodyLength bridge:self.bridge taskId:taskId withRequest:req callback:callback];
97+
else
98+
{
99+
RNFetchBlobNetwork * utils = [[RNFetchBlobNetwork alloc] init];
100+
[utils sendRequest:options contentLength:bodyLength bridge:self.bridge taskId:taskId withRequest:req callback:callback];
101+
}
87102
}];
88103

89104
}
@@ -97,10 +112,25 @@ - (NSDictionary *)constantsToExport
97112
headers:(NSDictionary *)headers
98113
body:(NSString *)body callback:(RCTResponseSenderBlock)callback)
99114
{
100-
[RNFetchBlobReqBuilder buildOctetRequest:options taskId:taskId method:method url:url headers:headers body:body onComplete:^(NSURLRequest *req, long bodyLength) {
115+
[RNFetchBlobReqBuilder buildOctetRequest:options
116+
taskId:taskId
117+
method:method
118+
url:url
119+
headers:headers
120+
body:body
121+
onComplete:^(NSURLRequest *req, long bodyLength)
122+
{
123+
// something went wrong when building the request body
124+
if(req == nil)
125+
{
126+
callback(@[@"RNFetchBlob.fetchBlob failed to create request body"]);
127+
}
101128
// send HTTP request
102-
__block RNFetchBlobNetwork * utils = [[RNFetchBlobNetwork alloc] init];
103-
[utils sendRequest:options contentLength:bodyLength bridge:self.bridge taskId:taskId withRequest:req callback:callback];
129+
else
130+
{
131+
__block RNFetchBlobNetwork * utils = [[RNFetchBlobNetwork alloc] init];
132+
[utils sendRequest:options contentLength:bodyLength bridge:self.bridge taskId:taskId withRequest:req callback:callback];
133+
}
104134
}];
105135
}
106136

@@ -394,10 +424,27 @@ - (NSDictionary *)constantsToExport
394424
}
395425

396426
#pragma mark - fs.readFile
397-
RCT_EXPORT_METHOD(readFile:(NSString *)path encoding:(NSString *)encoding resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
427+
RCT_EXPORT_METHOD(readFile:(NSString *)path
428+
encoding:(NSString *)encoding
429+
resolver:(RCTPromiseResolveBlock)resolve
430+
rejecter:(RCTPromiseRejectBlock)reject)
398431
{
399432

400-
[RNFetchBlobFS readFile:path encoding:encoding resolver:resolve rejecter:reject onComplete:nil];
433+
[RNFetchBlobFS readFile:path encoding:encoding onComplete:^(id content, NSString * err) {
434+
if(err != nil)
435+
{
436+
reject(@"RNFetchBlob failed to read file", err, nil);
437+
return;
438+
}
439+
if(encoding == @"ascii")
440+
{
441+
resolve((NSMutableArray *)content);
442+
}
443+
else
444+
{
445+
resolve((NSString *)content);
446+
}
447+
}];
401448
}
402449

403450
#pragma mark - fs.readStream
@@ -519,24 +566,11 @@ - (UIViewController *) documentInteractionControllerViewControllerForPreview: (U
519566
}
520567

521568
# pragma mark - getCookies
522-
523569
RCT_EXPORT_METHOD(getCookies:(NSString *)url resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
524570
{
525571
resolve([RNFetchBlobNetwork getCookies:url]);
526572
}
527573

528-
# pragma mark - removeCookie
529-
530-
RCT_EXPORT_METHOD(removeCookies:(NSString *)domain resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
531-
{
532-
NSError * err = nil;
533-
[RNFetchBlobNetwork removeCookies:domain error:&err];
534-
if(err)
535-
reject(@"RNFetchBlob failed to remove cookie", @"RNFetchBlob failed to remove cookie", nil);
536-
else
537-
resolve(@[[NSNull null]]);
538-
}
539-
540574
# pragma mark - check expired network events
541575

542576
RCT_EXPORT_METHOD(emitExpiredEvent:(RCTResponseSenderBlock)callback)
@@ -545,6 +579,4 @@ - (UIViewController *) documentInteractionControllerViewControllerForPreview: (U
545579
}
546580

547581

548-
549-
550582
@end

ios/RNFetchBlobFS.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
+ (void) exists:(NSString *) path callback:(RCTResponseSenderBlock)callback;
6262
+ (void) writeFileArray:(NSString *)path data:(NSArray *)data append:(BOOL)append resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject;
6363
+ (void) writeFile:(NSString *)path encoding:(NSString *)encoding data:(NSString *)data append:(BOOL)append resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject;
64-
+ (void) readFile:(NSString *)path encoding:(NSString *)encoding resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject onComplete:(void (^)(NSData * content))onComplete;
64+
+ (void) readFile:(NSString *)path encoding:(NSString *)encoding onComplete:(void (^)(NSData * content, NSString * errMsg))onComplete;
6565
+ (void) readAssetFile:(NSData *)assetUrl completionBlock:(void(^)(NSData * content))completionBlock failBlock:(void(^)(NSError * err))failBlock;
6666
+ (void) slice:(NSString *)path
6767
dest:(NSString *)dest

ios/RNFetchBlobFS.m

Lines changed: 46 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -418,73 +418,68 @@ + (void) writeFileArray:(NSString *)path data:(NSArray *)data append:(BOOL)appen
418418

419419
# pragma mark - read file
420420

421-
+ (void) readFile:(NSString *)path encoding:(NSString *)encoding
422-
resolver:(RCTPromiseResolveBlock)resolve
423-
rejecter:(RCTPromiseRejectBlock)reject
424-
onComplete:(void (^)(NSData * content))onComplete
421+
+ (void) readFile:(NSString *)path
422+
encoding:(NSString *)encoding
423+
onComplete:(void (^)(id content, NSString * errMsg))onComplete
425424
{
426-
@try
427-
{
428-
[[self class] getPathFromUri:path completionHandler:^(NSString *path, ALAssetRepresentation *asset) {
429-
__block NSData * fileContent;
430-
NSError * err;
431-
__block Byte * buffer;
432-
if(asset != nil)
425+
[[self class] getPathFromUri:path completionHandler:^(NSString *path, ALAssetRepresentation *asset) {
426+
__block NSData * fileContent;
427+
NSError * err;
428+
__block Byte * buffer;
429+
if(asset != nil)
430+
{
431+
buffer = malloc(asset.size);
432+
[asset getBytes:buffer fromOffset:0 length:asset.size error:&err];
433+
if(err != nil)
433434
{
434-
buffer = malloc(asset.size);
435-
[asset getBytes:buffer fromOffset:0 length:asset.size error:&err];
436-
if(err != nil)
437-
{
438-
reject(@"RNFetchBlobFS readFile error", @"failed to read asset", [err localizedDescription]);
439-
return;
440-
}
441-
fileContent = [NSData dataWithBytes:buffer length:asset.size];
435+
onComplete(nil, [err description]);
442436
free(buffer);
437+
return;
443438
}
444-
else
445-
{
446-
if(![[NSFileManager defaultManager] fileExistsAtPath:path]) {
447-
448-
reject(@"RNFetchBlobFS readFile error", @"file not exists", nil);
449-
return;
450-
}
451-
fileContent = [NSData dataWithContentsOfFile:path];
452-
439+
fileContent = [NSData dataWithBytes:buffer length:asset.size];
440+
free(buffer);
441+
}
442+
else
443+
{
444+
if(![[NSFileManager defaultManager] fileExistsAtPath:path]) {
445+
onComplete(nil, @"file not exists");
446+
return;
453447
}
454-
if(onComplete != nil)
455-
onComplete(fileContent);
456-
457-
if([[encoding lowercaseString] isEqualToString:@"utf8"]) {
458-
if(resolve != nil) {
459-
NSString * utf8 = [[NSString alloc] initWithData:fileContent encoding:NSUTF8StringEncoding];
460-
if(utf8 == nil)
461-
resolve([[NSString alloc] initWithData:fileContent encoding:NSISOLatin1StringEncoding]);
462-
else
463-
resolve(utf8);
464-
}
448+
fileContent = [NSData dataWithContentsOfFile:path];
449+
450+
}
451+
452+
if(encoding != nil)
453+
{
454+
if([[encoding lowercaseString] isEqualToString:@"utf8"])
455+
{
456+
NSString * utf8 = [[NSString alloc] initWithData:fileContent encoding:NSUTF8StringEncoding];
457+
if(utf8 == nil)
458+
onComplete([[NSString alloc] initWithData:fileContent encoding:NSISOLatin1StringEncoding], nil);
459+
else
460+
onComplete(utf8, nil);
465461
}
466462
else if ([[encoding lowercaseString] isEqualToString:@"base64"]) {
467-
if(resolve != nil)
468-
resolve([fileContent base64EncodedStringWithOptions:0]);
463+
onComplete([fileContent base64EncodedStringWithOptions:0], nil);
469464
}
470465
else if ([[encoding lowercaseString] isEqualToString:@"ascii"]) {
471466
NSMutableArray * resultArray = [NSMutableArray array];
472467
char * bytes = [fileContent bytes];
473468
for(int i=0;i<[fileContent length];i++) {
474469
[resultArray addObject:[NSNumber numberWithChar:bytes[i]]];
475470
}
476-
if(resolve != nil)
477-
resolve(resultArray);
471+
onComplete(resultArray, nil);
478472
}
479-
}];
480-
}
481-
@catch(NSException * e)
482-
{
483-
if(reject != nil)
484-
reject(@"RNFetchBlobFS readFile error", @"error", [e description]);
485-
}
473+
}
474+
else
475+
{
476+
onComplete(fileContent, nil);
477+
}
478+
479+
}];
486480
}
487481

482+
488483
# pragma mark - mkdir
489484

490485
+ (BOOL) mkdir:(NSString *) path {
@@ -516,7 +511,7 @@ + (NSDictionary *) stat:(NSString *) path error:(NSError **) error {
516511
@"size" : size,
517512
@"filename" : filename,
518513
@"path" : path,
519-
@"lastModified" : [NSString stringWithFormat:@"%@", [NSNumber numberWithLong:(time_t) [lastModified timeIntervalSince1970]*1000]],
514+
@"lastModified" : [NSNumber numberWithLong:(time_t) [lastModified timeIntervalSince1970]*1000],
520515
@"type" : isDir ? @"directory" : @"file"
521516
};
522517

ios/RNFetchBlobNetwork.h

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,6 @@
2323

2424
typedef void(^CompletionHander)(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error);
2525
typedef void(^DataTaskCompletionHander) (NSData * _Nullable resp, NSURLResponse * _Nullable response, NSError * _Nullable error);
26-
typedef NS_ENUM(NSUInteger, ResponseFormat) {
27-
UTF8,
28-
BASE64,
29-
AUTO
30-
};
3126

3227
@interface RNFetchBlobNetwork : NSObject <NSURLSessionDelegate, NSURLSessionTaskDelegate, NSURLSessionDataDelegate>
3328

@@ -43,19 +38,6 @@ typedef NS_ENUM(NSUInteger, ResponseFormat) {
4338
@property (strong, nonatomic) CompletionHander fileTaskCompletionHandler;
4439
@property (strong, nonatomic) DataTaskCompletionHander dataTaskCompletionHandler;
4540
@property (nullable, nonatomic) NSError * error;
46-
@property (nullable, nonatomic) NSMutableArray * redirects;
47-
48-
@property (nonatomic) BOOL respFile;
49-
@property (nonatomic) BOOL isNewPart;
50-
@property (nonatomic) BOOL isIncrement;
51-
@property (nullable, nonatomic) NSMutableData * partBuffer;
52-
@property (nullable, nonatomic) NSString * destPath;
53-
@property (nullable, nonatomic) NSOutputStream * writeStream;
54-
@property (nonatomic) long bodyLength;
55-
@property (nullable, nonatomic) NSMutableDictionary * respInfo;
56-
@property (nonatomic) NSInteger respStatus;
57-
@property (nonatomic) ResponseFormat responseFormat;
58-
@property ( nonatomic) BOOL followRedirect;
5941

6042

6143
+ (NSMutableDictionary * _Nullable ) normalizeHeaders:(NSDictionary * _Nullable)headers;
@@ -67,10 +49,9 @@ typedef NS_ENUM(NSUInteger, ResponseFormat) {
6749
- (nullable id) init;
6850
- (void) sendRequest;
6951
- (void) sendRequest:(NSDictionary * _Nullable )options contentLength:(long)contentLength bridge:(RCTBridge * _Nullable)bridgeRef taskId:(NSString * _Nullable)taskId withRequest:(NSURLRequest * _Nullable)req callback:(_Nullable RCTResponseSenderBlock) callback;
70-
+ (void) removeCookies:(NSString *) domain error:(NSError **)error;
7152
+ (void) enableProgressReport:(NSString *) taskId config:(RNFetchBlobProgress *)config;
7253
+ (void) enableUploadProgress:(NSString *) taskId config:(RNFetchBlobProgress *)config;
73-
+ (NSDictionary *) getCookies:(NSString *) url;
54+
+ (NSArray *) getCookies:(NSString *) url;
7455

7556

7657

0 commit comments

Comments
 (0)