// // BloggenSandboxUtilities.m // Bloggen // // Created by Davis Remmel on 2/15/14. // Copyright (c) 2014 Davis Remmel. All rights reserved. // #import "BloggenSandboxUtilities.h" #include #include #include #include @implementation BloggenSandboxUtilities + (NSData *)bookmarkForURL:(NSURL *)url { NSError *error = nil; NSData *bookmark = [url bookmarkDataWithOptions:NSURLBookmarkCreationMinimalBookmark includingResourceValuesForKeys:nil relativeToURL:nil error:&error ]; if (error || !bookmark) { NSLog(@"Error creating bookmark for URL: %@", [error localizedDescription]); return nil; } return bookmark; } + (NSURL *)urlForBookmark:(NSData *)bookmark { BOOL bookmarkIsStale = NO; NSError *error = nil; NSURL *url = [NSURL URLByResolvingBookmarkData:bookmark options:NSURLBookmarkResolutionWithoutUI relativeToURL:nil bookmarkDataIsStale:&bookmarkIsStale error:&error ]; if (bookmarkIsStale) { return url; } else if (error) { NSLog(@"Error creating URL from bookmark: %@", [error localizedDescription]); return nil; } return url; } + (NSData *)ssBookmarkForURL:(NSURL *)url { NSError *error = nil; NSData *ssBookmark = [url bookmarkDataWithOptions:NSURLBookmarkCreationWithSecurityScope | NSURLBookmarkCreationSecurityScopeAllowOnlyReadAccess includingResourceValuesForKeys:nil relativeToURL:nil error:&error ]; if (error || !ssBookmark) { NSLog(@"Error creating security-scoped bookmark from URL: %@", [error localizedDescription]); return nil; } return ssBookmark; } + (NSURL *)ssURLForSSBookmark:(NSData *)bookmark { BOOL bookmarkIsStale = NO; NSError *error = nil; NSURL *ssURL = [NSURL URLByResolvingBookmarkData:bookmark options:NSURLBookmarkResolutionWithSecurityScope relativeToURL:nil bookmarkDataIsStale:&bookmarkIsStale error:&error]; if (bookmarkIsStale) { return ssURL; // Non-stale version of bookmark } else if (error) { NSLog(@"Error creating security-scoped URL from bookmark: %@", [error localizedDescription]); return nil; } return ssURL; } + (NSURL *)ssURLForURL:(NSURL *)url { NSData *ssBookmark = [self ssBookmarkForURL:url]; NSURL *ssURL = [self ssURLForSSBookmark:ssBookmark]; return ssURL; } + (NSURL *)ssURLForBookmark:(NSData *)bookmark { NSURL *url = [self urlForBookmark:bookmark]; NSURL *ssURL = [self ssURLForURL:url]; return ssURL; } @end