implementAsBlocking static method

NSURLProtocolClient implementAsBlocking({
  1. required void URLProtocol_wasRedirectedToRequest_redirectResponse_(
    1. NSURLProtocol,
    2. NSURLRequest,
    3. NSURLResponse
    ),
  2. required void URLProtocol_cachedResponseIsValid_(
    1. NSURLProtocol,
    2. NSCachedURLResponse
    ),
  3. required void URLProtocol_didReceiveResponse_cacheStoragePolicy_(
    1. NSURLProtocol,
    2. NSURLResponse,
    3. NSURLCacheStoragePolicy
    ),
  4. required void URLProtocol_didLoadData_(
    1. NSURLProtocol,
    2. NSData
    ),
  5. required void URLProtocolDidFinishLoading_(
    1. NSURLProtocol
    ),
  6. required void URLProtocol_didFailWithError_(
    1. NSURLProtocol,
    2. NSError
    ),
  7. required void URLProtocol_didReceiveAuthenticationChallenge_(
    1. NSURLProtocol,
    2. NSURLAuthenticationChallenge
    ),
  8. required void URLProtocol_didCancelAuthenticationChallenge_(
    1. NSURLProtocol,
    2. NSURLAuthenticationChallenge
    ),
  9. bool $keepIsolateAlive = true,
})

Builds an object that implements the NSURLProtocolClient protocol. To implement multiple protocols, use addToBuilder or objc.ObjCProtocolBuilder directly. All methods that can be implemented as blocking listeners will be.

If $keepIsolateAlive is true, this protocol will keep this isolate alive until it is garbage collected by both Dart and ObjC.

Implementation

static NSURLProtocolClient implementAsBlocking({
  required void Function(NSURLProtocol, NSURLRequest, NSURLResponse)
  URLProtocol_wasRedirectedToRequest_redirectResponse_,
  required void Function(NSURLProtocol, NSCachedURLResponse)
  URLProtocol_cachedResponseIsValid_,
  required void Function(
    NSURLProtocol,
    NSURLResponse,
    NSURLCacheStoragePolicy,
  )
  URLProtocol_didReceiveResponse_cacheStoragePolicy_,
  required void Function(NSURLProtocol, objc.NSData) URLProtocol_didLoadData_,
  required void Function(NSURLProtocol) URLProtocolDidFinishLoading_,
  required void Function(NSURLProtocol, objc.NSError)
  URLProtocol_didFailWithError_,
  required void Function(NSURLProtocol, NSURLAuthenticationChallenge)
  URLProtocol_didReceiveAuthenticationChallenge_,
  required void Function(NSURLProtocol, NSURLAuthenticationChallenge)
  URLProtocol_didCancelAuthenticationChallenge_,
  bool $keepIsolateAlive = true,
}) {
  final builder = objc.ObjCProtocolBuilder(debugName: 'NSURLProtocolClient');
  NSURLProtocolClient
      .URLProtocol_wasRedirectedToRequest_redirectResponse_.implementAsBlocking(
    builder,
    URLProtocol_wasRedirectedToRequest_redirectResponse_,
  );
  NSURLProtocolClient.URLProtocol_cachedResponseIsValid_.implementAsBlocking(
    builder,
    URLProtocol_cachedResponseIsValid_,
  );
  NSURLProtocolClient
      .URLProtocol_didReceiveResponse_cacheStoragePolicy_.implementAsBlocking(
    builder,
    URLProtocol_didReceiveResponse_cacheStoragePolicy_,
  );
  NSURLProtocolClient.URLProtocol_didLoadData_.implementAsBlocking(
    builder,
    URLProtocol_didLoadData_,
  );
  NSURLProtocolClient.URLProtocolDidFinishLoading_.implementAsBlocking(
    builder,
    URLProtocolDidFinishLoading_,
  );
  NSURLProtocolClient.URLProtocol_didFailWithError_.implementAsBlocking(
    builder,
    URLProtocol_didFailWithError_,
  );
  NSURLProtocolClient
      .URLProtocol_didReceiveAuthenticationChallenge_.implementAsBlocking(
    builder,
    URLProtocol_didReceiveAuthenticationChallenge_,
  );
  NSURLProtocolClient
      .URLProtocol_didCancelAuthenticationChallenge_.implementAsBlocking(
    builder,
    URLProtocol_didCancelAuthenticationChallenge_,
  );
  builder.addProtocol($protocol);
  return NSURLProtocolClient.castFrom(
    builder.build(keepIsolateAlive: $keepIsolateAlive),
  );
}