Sample code for 30+ languages & platforms
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

Objective-C
#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.");
}