Sample code for 30+ languages & platforms
Tcl

Adobe Analytics Reporting API (1.4)

See more HTTP Misc Examples

Demonstrates a simple POST of JSON to the Adobe Analytics Reporting API (v1.4)

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

# This requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

# In this example, replace "rsid" with your report suite id, and update the URL to use the correct endpoint
set url "https://api.omniture.com/admin/1.4/rest/?method=Report.Queue"

set json [new_CkJsonObject]

CkJsonObject_UpdateString $json "reportDescription.reportSuiteID" "rsid"
CkJsonObject_UpdateString $json "reportDescription.dateGranularity" "hour"

set http [new_CkHttp]

set dt [new_CkDateTime]

CkDateTime_SetFromCurrentSystemTime $dt
set timecreated [CkDateTime_getAsTimestamp $dt 0]

set prng [new_CkPrng]

set nonce [CkPrng_genRandom $prng 12 "hex"]

set secret "SECRET"

set sb [new_CkStringBuilder]

CkStringBuilder_Append $sb $nonce
CkStringBuilder_Append $sb $timecreated
CkStringBuilder_Append $sb $secret

set crypt [new_CkCrypt2]

CkCrypt2_put_HashAlgorithm $crypt "sha1"
CkCrypt2_put_EncodingMode $crypt "base64"
set digest [CkCrypt2_hashStringENC $crypt [CkStringBuilder_getAsString $sb]]

set sbNonce [new_CkStringBuilder]

CkStringBuilder_Append $sbNonce $nonce
CkStringBuilder_Encode $sbNonce "base64"

CkStringBuilder_Clear $sb
CkStringBuilder_Append $sb "UsernameToken Username=\"USERNAME\", PasswordDigest=\""
CkStringBuilder_Append $sb $digest
CkStringBuilder_Append $sb "\", Nonce=\""
CkStringBuilder_Append $sb [CkStringBuilder_getAsString $sbNonce]
CkStringBuilder_Append $sb "\", Created=\""
CkStringBuilder_Append $sb $timecreated
CkStringBuilder_Append $sb "\""

puts [CkStringBuilder_getAsString $sb]

CkHttp_SetRequestHeader $http "X-WSSE" [CkStringBuilder_getAsString $sb]

set resp [new_CkHttpResponse]

set success [CkHttp_HttpJson $http "POST" $url $json "text/json" $resp]
if {$success == 0} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkJsonObject $json
    delete_CkHttp $http
    delete_CkDateTime $dt
    delete_CkPrng $prng
    delete_CkStringBuilder $sb
    delete_CkCrypt2 $crypt
    delete_CkStringBuilder $sbNonce
    delete_CkHttpResponse $resp
    exit
}

puts "Http Status code: [CkHttpResponse_get_StatusCode $resp]"
puts "JSON response:"
puts [CkHttpResponse_bodyStr $resp]

delete_CkJsonObject $json
delete_CkHttp $http
delete_CkDateTime $dt
delete_CkPrng $prng
delete_CkStringBuilder $sb
delete_CkCrypt2 $crypt
delete_CkStringBuilder $sbNonce
delete_CkHttpResponse $resp