Objective-C
Objective-C
Bunny Sign URL and then Download using Signed URL
See more Bunny CDN Examples
Shows how to sign a URL for BunnyCDN Token Authentication and then use it to download.Chilkat Objective-C Downloads
#import <NSString.h>
#import <CkoUrl.h>
#import <CkoDateTime.h>
#import <CkoStringBuilder.h>
#import <CkoHttp.h>
BOOL success = NO;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
NSString *mySecurityKey = @"e7ea8d73-8fa0-44ef-a2cc-91526f7df5ed";
NSString *url = @"https://test.b-cdn.net/sample-pdf-with-images.pdf";
// Extract the URL components.
CkoUrl *urlObj = [[CkoUrl alloc] init];
[urlObj ParseUrl: url];
NSString *url_scheme = @"https";
if (urlObj.Ssl == NO) {
url_scheme = @"http";
}
NSString *url_host = urlObj.Host;
NSString *url_path = urlObj.Path;
// Calculate an expiration time 1 hour from the current date/time.
CkoDateTime *expTime = [[CkoDateTime alloc] init];
[expTime SetFromCurrentSystemTime];
[expTime AddSeconds: [NSNumber numberWithInt: 3600]];
NSString *expires = [expTime GetAsUnixTimeStr: NO];
NSLog(@"%@%@",@"Expires = ",expires);
// Create the string to hash
CkoStringBuilder *sbToHash = [[CkoStringBuilder alloc] init];
[sbToHash Append: mySecurityKey];
[sbToHash Append: url_path];
[sbToHash Append: expires];
// Base64Url encoding is the same as base64, except "-" is used instead of "+",
// "_" is used instead of "/", and no "=" padding is added.
NSString *token = [sbToHash GetHash: @"sha256" encoding: @"base64Url" charset: @"utf-8"];
CkoStringBuilder *sbSignedUrl = [[CkoStringBuilder alloc] init];
[sbSignedUrl Append: url_scheme];
[sbSignedUrl Append: @"://"];
[sbSignedUrl Append: url_host];
[sbSignedUrl Append: url_path];
[sbSignedUrl Append: @"?token="];
[sbSignedUrl Append: token];
[sbSignedUrl Append: @"&expires="];
[sbSignedUrl Append: expires];
NSString *signedUrl = [sbSignedUrl GetAsString];
NSLog(@"%@%@",@"Signed URL: ",signedUrl);
// Use the signed URL to download the file.
CkoHttp *http = [[CkoHttp alloc] init];
success = [http Download: signedUrl saveToPath: @"c:/aaworkarea/sample.pdf"];
if (success == NO) {
NSLog(@"%@",http.LastErrorText);
}
else {
NSLog(@"%@",@"Success.");
}