Sample code for 30+ languages & platforms
SQL Server

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 SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    DECLARE @iTmp0 int
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    -- This example assumes the Chilkat API to have been previously unlocked.
    -- See Global Unlock Sample for sample code.

    DECLARE @mySecurityKey nvarchar(4000)
    SELECT @mySecurityKey = 'e7ea8d73-8fa0-44ef-a2cc-91526f7df5ed'

    DECLARE @url nvarchar(4000)
    SELECT @url = 'https://test.b-cdn.net/sample-pdf-with-images.pdf'

    -- Extract the URL components.
    DECLARE @urlObj int
    EXEC @hr = sp_OACreate 'Chilkat.Url', @urlObj OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    EXEC sp_OAMethod @urlObj, 'ParseUrl', @success OUT, @url

    DECLARE @url_scheme nvarchar(4000)
    SELECT @url_scheme = 'https'
    EXEC sp_OAGetProperty @urlObj, 'Ssl', @iTmp0 OUT
    IF @iTmp0 = 0
      BEGIN
        SELECT @url_scheme = 'http'
      END

    DECLARE @url_host nvarchar(4000)
    EXEC sp_OAGetProperty @urlObj, 'Host', @url_host OUT
    DECLARE @url_path nvarchar(4000)
    EXEC sp_OAGetProperty @urlObj, 'Path', @url_path OUT

    -- Calculate an expiration time 1 hour from the current date/time.
    DECLARE @expTime int
    EXEC @hr = sp_OACreate 'Chilkat.CkDateTime', @expTime OUT

    EXEC sp_OAMethod @expTime, 'SetFromCurrentSystemTime', @success OUT
    EXEC sp_OAMethod @expTime, 'AddSeconds', @success OUT, 3600
    DECLARE @expires nvarchar(4000)
    EXEC sp_OAMethod @expTime, 'GetAsUnixTimeStr', @expires OUT, 0


    PRINT 'Expires = ' + @expires

    -- Create the string to hash
    DECLARE @sbToHash int
    EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbToHash OUT

    EXEC sp_OAMethod @sbToHash, 'Append', @success OUT, @mySecurityKey
    EXEC sp_OAMethod @sbToHash, 'Append', @success OUT, @url_path
    EXEC sp_OAMethod @sbToHash, 'Append', @success OUT, @expires

    -- Base64Url encoding is the same as base64, except "-" is used instead of "+",
    -- "_" is used instead of "/", and no "=" padding is added.
    DECLARE @token nvarchar(4000)
    EXEC sp_OAMethod @sbToHash, 'GetHash', @token OUT, 'sha256', 'base64Url', 'utf-8'

    DECLARE @sbSignedUrl int
    EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbSignedUrl OUT

    EXEC sp_OAMethod @sbSignedUrl, 'Append', @success OUT, @url_scheme
    EXEC sp_OAMethod @sbSignedUrl, 'Append', @success OUT, '://'
    EXEC sp_OAMethod @sbSignedUrl, 'Append', @success OUT, @url_host
    EXEC sp_OAMethod @sbSignedUrl, 'Append', @success OUT, @url_path
    EXEC sp_OAMethod @sbSignedUrl, 'Append', @success OUT, '?token='
    EXEC sp_OAMethod @sbSignedUrl, 'Append', @success OUT, @token
    EXEC sp_OAMethod @sbSignedUrl, 'Append', @success OUT, '&expires='
    EXEC sp_OAMethod @sbSignedUrl, 'Append', @success OUT, @expires

    DECLARE @signedUrl nvarchar(4000)
    EXEC sp_OAMethod @sbSignedUrl, 'GetAsString', @signedUrl OUT

    PRINT 'Signed URL: ' + @signedUrl

    -- Use the signed URL to download the file.
    DECLARE @http int
    EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT

    EXEC sp_OAMethod @http, 'Download', @success OUT, @signedUrl, 'c:/aaworkarea/sample.pdf'
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
      END
    ELSE
      BEGIN

        PRINT 'Success.'
      END

    EXEC @hr = sp_OADestroy @urlObj
    EXEC @hr = sp_OADestroy @expTime
    EXEC @hr = sp_OADestroy @sbToHash
    EXEC @hr = sp_OADestroy @sbSignedUrl
    EXEC @hr = sp_OADestroy @http


END
GO