DataFlex
DataFlex
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 DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
String sMySecurityKey
String sUrl
Handle hoUrlObj
String sUrl_scheme
String sUrl_host
String sUrl_path
Handle hoExpTime
String sExpires
Handle hoSbToHash
String sToken
Handle hoSbSignedUrl
String sSignedUrl
Handle hoHttp
String sTemp1
Boolean bTemp1
Move False To iSuccess
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Move "e7ea8d73-8fa0-44ef-a2cc-91526f7df5ed" To sMySecurityKey
Move "https://test.b-cdn.net/sample-pdf-with-images.pdf" To sUrl
// Extract the URL components.
Get Create (RefClass(cComChilkatUrl)) To hoUrlObj
If (Not(IsComObjectCreated(hoUrlObj))) Begin
Send CreateComObject of hoUrlObj
End
Get ComParseUrl Of hoUrlObj sUrl To iSuccess
Move "https" To sUrl_scheme
Get ComSsl Of hoUrlObj To bTemp1
If (bTemp1 = False) Begin
Move "http" To sUrl_scheme
End
Get ComHost Of hoUrlObj To sUrl_host
Get ComPath Of hoUrlObj To sUrl_path
// Calculate an expiration time 1 hour from the current date/time.
Get Create (RefClass(cComCkDateTime)) To hoExpTime
If (Not(IsComObjectCreated(hoExpTime))) Begin
Send CreateComObject of hoExpTime
End
Get ComSetFromCurrentSystemTime Of hoExpTime To iSuccess
Get ComAddSeconds Of hoExpTime 3600 To iSuccess
Get ComGetAsUnixTimeStr Of hoExpTime False To sExpires
Showln "Expires = " sExpires
// Create the string to hash
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbToHash
If (Not(IsComObjectCreated(hoSbToHash))) Begin
Send CreateComObject of hoSbToHash
End
Get ComAppend Of hoSbToHash sMySecurityKey To iSuccess
Get ComAppend Of hoSbToHash sUrl_path To iSuccess
Get ComAppend Of hoSbToHash sExpires To iSuccess
// Base64Url encoding is the same as base64, except "-" is used instead of "+",
// "_" is used instead of "/", and no "=" padding is added.
Get ComGetHash Of hoSbToHash "sha256" "base64Url" "utf-8" To sToken
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbSignedUrl
If (Not(IsComObjectCreated(hoSbSignedUrl))) Begin
Send CreateComObject of hoSbSignedUrl
End
Get ComAppend Of hoSbSignedUrl sUrl_scheme To iSuccess
Get ComAppend Of hoSbSignedUrl "://" To iSuccess
Get ComAppend Of hoSbSignedUrl sUrl_host To iSuccess
Get ComAppend Of hoSbSignedUrl sUrl_path To iSuccess
Get ComAppend Of hoSbSignedUrl "?token=" To iSuccess
Get ComAppend Of hoSbSignedUrl sToken To iSuccess
Get ComAppend Of hoSbSignedUrl "&expires=" To iSuccess
Get ComAppend Of hoSbSignedUrl sExpires To iSuccess
Get ComGetAsString Of hoSbSignedUrl To sSignedUrl
Showln "Signed URL: " sSignedUrl
// Use the signed URL to download the file.
Get Create (RefClass(cComChilkatHttp)) To hoHttp
If (Not(IsComObjectCreated(hoHttp))) Begin
Send CreateComObject of hoHttp
End
Get ComDownload Of hoHttp sSignedUrl "c:/aaworkarea/sample.pdf" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoHttp To sTemp1
Showln sTemp1
End
Else Begin
Showln "Success."
End
End_Procedure