public override async Task DeleteAsync(CancellationToken ct, StorageDeleteOption options) { var intent = NSFileAccessIntent.CreateWritingIntent(_nsUrl, NSFileCoordinatorWritingOptions.ForDeleting); using var coordinator = new NSFileCoordinator(); await coordinator.CoordinateAsync(new[] { intent }, new NSOperationQueue(), () => { using var _ = _nsUrl.BeginSecurityScopedAccess(); NSError deleteError; NSFileManager.DefaultManager.Remove(_nsUrl, out deleteError); if (deleteError != null) { throw new UnauthorizedAccessException($"Can't delete file. {deleteError}"); } }); }
internal SecurityScopeStreamWrapper(NSUrl url, Func <Stream> streamBuilder) { _url = url; _securityScope = _url.BeginSecurityScopedAccess(); _innerStream = streamBuilder(); }
public override Task <BasicProperties> GetBasicPropertiesAsync(CancellationToken ct) { using var _ = _nsUrl.BeginSecurityScopedAccess(); var directoryInfo = new DirectoryInfo(Path); return(Task.FromResult(new BasicProperties(0UL, directoryInfo.LastWriteTimeUtc))); }