PHP 7.4.33
Preview: RCTDataRequestHandler.mm Size: 2.21 KB
/var/www/uibuilder.cmshelp.dk/httpdocs/node_modules/react-native/Libraries/Network/RCTDataRequestHandler.mm
/*
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

#import <React/RCTDataRequestHandler.h>
#import <ReactCommon/RCTTurboModule.h>

#import "RCTNetworkPlugins.h"

@interface RCTDataRequestHandler () <RCTTurboModule>
@end

@implementation RCTDataRequestHandler {
  NSOperationQueue *_queue;
}

RCT_EXPORT_MODULE()

- (void)invalidate
{
  [_queue cancelAllOperations];
  _queue = nil;
}

- (BOOL)canHandleRequest:(NSURLRequest *)request
{
  return [request.URL.scheme caseInsensitiveCompare:@"data"] == NSOrderedSame;
}

- (NSOperation *)sendRequest:(NSURLRequest *)request withDelegate:(id<RCTURLRequestDelegate>)delegate
{
  // Lazy setup
  if (!_queue) {
    _queue = [NSOperationQueue new];
    _queue.maxConcurrentOperationCount = 2;
  }

  __weak __block NSBlockOperation *weakOp;
  __block NSBlockOperation *op = [NSBlockOperation blockOperationWithBlock:^{
    // Get mime type
    NSRange firstSemicolon = [request.URL.resourceSpecifier rangeOfString:@";"];
    NSString *mimeType =
        firstSemicolon.length ? [request.URL.resourceSpecifier substringToIndex:firstSemicolon.location] : nil;

    // Send response
    NSURLResponse *response = [[NSURLResponse alloc] initWithURL:request.URL
                                                        MIMEType:mimeType
                                           expectedContentLength:-1
                                                textEncodingName:nil];

    [delegate URLRequest:weakOp didReceiveResponse:response];

    // Load data
    NSError *error;
    NSData *data = [NSData dataWithContentsOfURL:request.URL options:NSDataReadingMappedIfSafe error:&error];
    if (data) {
      [delegate URLRequest:weakOp didReceiveData:data];
    }
    [delegate URLRequest:weakOp didCompleteWithError:error];
  }];

  weakOp = op;
  [_queue addOperation:op];
  return op;
}

- (void)cancelRequest:(NSOperation *)op
{
  [op cancel];
}

- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
    (const facebook::react::ObjCTurboModule::InitParams &)params
{
  return nullptr;
}

@end

Class RCTDataRequestHandlerCls(void)
{
  return RCTDataRequestHandler.class;
}

Directory Contents

Dirs: 0 × Files: 24
Name Size Perms Modified Actions
1.01 KB lrw-r--r-- 2025-03-28 11:04:42
Edit Download
447 B lrw-r--r-- 2025-03-28 11:04:42
Edit Download
3.08 KB lrw-r--r-- 2025-03-28 11:04:42
Edit Download
436 B lrw-r--r-- 2025-03-28 11:04:42
Edit Download
420 B lrw-r--r-- 2025-03-28 11:04:42
Edit Download
445 B lrw-r--r-- 2025-03-28 11:04:41
Edit Download
2.21 KB lrw-r--r-- 2025-03-28 11:04:43
Edit Download
441 B lrw-r--r-- 2025-03-28 11:04:41
Edit Download
2.87 KB lrw-r--r-- 2025-03-28 11:04:43
Edit Download
753 B lrw-r--r-- 2025-03-28 11:04:41
Edit Download
6.52 KB lrw-r--r-- 2025-03-28 11:04:43
Edit Download
3.23 KB lrw-r--r-- 2025-03-28 11:04:42
Edit Download
2.90 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
1.79 KB lrw-r--r-- 2025-03-28 11:04:42
Edit Download
1.20 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
29.93 KB lrw-r--r-- 2025-03-28 11:04:43
Edit Download
1.09 KB lrw-r--r-- 2025-03-28 11:04:42
Edit Download
1.04 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
1018 B lrw-r--r-- 2025-03-28 11:04:43
Edit Download
1.78 KB lrw-r--r-- 2025-03-28 11:04:41
Edit Download
5.63 KB lrw-r--r-- 2025-03-28 11:04:43
Edit Download
2.32 KB lrw-r--r-- 2025-03-28 11:04:43
Edit Download
6.31 KB lrw-r--r-- 2025-03-28 11:04:42
Edit Download
18.81 KB lrw-r--r-- 2025-03-28 11:04:42
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).