Tcl
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
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