PowerBuilder
PowerBuilder
effectconnect Create or Replace Product Catalog
See more effectconnect Examples
Use this call to create or replace a product catalog in EffectConnect. This is always a purge and replace action for the entire catalog.Chilkat PowerBuilder Downloads
integer li_rc
integer li_Success
string ls_Uri
string ls_ApiVersion
oleobject loo_Http
oleobject loo_Req
oleobject loo_Dt
string ls_Timestamp
oleobject loo_SbXml
oleobject loo_SbStringToSign
oleobject loo_Crypt
oleobject loo_Resp
oleobject loo_XmlResp
string ls_TagPath
string ls_RequestType
string ls_RequestAction
string ls_RequestVersion
string ls_ProcessedAt
string ls_Result
string ls_ProcessID
li_Success = 0
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
ls_Uri = "/products"
ls_ApiVersion = "2.0"
loo_Http = create oleobject
li_rc = loo_Http.ConnectToNewObject("Chilkat.Http")
if li_rc < 0 then
destroy loo_Http
MessageBox("Error","Connecting to COM object failed")
return
end if
loo_Req = create oleobject
li_rc = loo_Req.ConnectToNewObject("Chilkat.HttpRequest")
// Use your effectconnect public key here...
loo_Req.AddHeader("KEY","PUBLIC_KEY")
loo_Req.AddHeader("VERSION",ls_ApiVersion)
loo_Req.AddHeader("URI",ls_Uri)
loo_Req.AddHeader("RESPONSETYPE","XML")
loo_Req.AddHeader("RESPONSELANGUAGE","en")
// Get the current date/time in timestamp format.
loo_Dt = create oleobject
li_rc = loo_Dt.ConnectToNewObject("Chilkat.CkDateTime")
loo_Dt.SetFromCurrentSystemTime()
ls_Timestamp = loo_Dt.GetAsTimestamp(1)
loo_Req.AddHeader("TIME",ls_Timestamp)
Write-Debug "timestamp = " + ls_Timestamp
loo_SbXml = create oleobject
li_rc = loo_SbXml.ConnectToNewObject("Chilkat.StringBuilder")
li_Success = loo_SbXml.LoadFile("qa_data/xml/effectconnect/effconCreate.xml","utf-8")
Write-Debug "length = " + string(loo_SbXml.Length)
loo_Req.HttpVerb = "POST"
loo_Req.Path = ls_Uri
loo_Req.ContentType = "multipart/form-data"
li_Success = loo_Req.AddStringForUpload("payload","effcon.xml",loo_SbXml.GetAsString(),"utf-8")
if li_Success = 0 then
Write-Debug loo_Req.LastErrorText
destroy loo_Http
destroy loo_Req
destroy loo_Dt
destroy loo_SbXml
return
end if
// Build a string-to-sign and sign it using our effectconnect private key
loo_SbStringToSign = create oleobject
li_rc = loo_SbStringToSign.ConnectToNewObject("Chilkat.StringBuilder")
loo_SbStringToSign.AppendInt(loo_SbXml.Length)
loo_SbStringToSign.Append("POST")
loo_SbStringToSign.Append(ls_Uri)
loo_SbStringToSign.Append(ls_ApiVersion)
loo_SbStringToSign.Append(ls_Timestamp)
loo_Crypt = create oleobject
li_rc = loo_Crypt.ConnectToNewObject("Chilkat.Crypt2")
loo_Crypt.MacAlgorithm = "hmac"
loo_Crypt.HashAlgorithm = "sha512"
loo_Crypt.EncodingMode = "base64"
// Use your effectconnect private key here:
loo_Crypt.SetMacKeyString("PRIVATE_KEY")
loo_Req.AddHeader("SIGNATURE",loo_Crypt.MacStringENC(loo_SbStringToSign.GetAsString()))
loo_Resp = create oleobject
li_rc = loo_Resp.ConnectToNewObject("Chilkat.HttpResponse")
li_Success = loo_Http.HttpSReq("submit.effectconnect.com",443,1,loo_Req,loo_Resp)
if li_Success = 0 then
Write-Debug loo_Http.LastErrorText
destroy loo_Http
destroy loo_Req
destroy loo_Dt
destroy loo_SbXml
destroy loo_SbStringToSign
destroy loo_Crypt
destroy loo_Resp
return
end if
Write-Debug "response status code = " + string(loo_Resp.StatusCode)
// Examine the response. The response status code can be 200 for both errors and success.
// The success or error is based on the XML returned in the response body.
loo_XmlResp = create oleobject
li_rc = loo_XmlResp.ConnectToNewObject("Chilkat.Xml")
loo_XmlResp.LoadXml(loo_Resp.BodyStr)
Write-Debug "response body:"
Write-Debug loo_XmlResp.GetXml()
// A sample response:
// <?xml version="1.0" encoding="utf-8"?>
// <ApiResponseContainer>
// <Request>
// <RequestType>Products</RequestType>
// <RequestAction>Create</RequestAction>
// <RequestVersion>2.0</RequestVersion>
// <RequestIdentifier/>
// <ProcessedAt>2019-04-18T15:28:55+02:00</ProcessedAt>
// </Request>
// <Response>
// <Result>Success</Result>
// <ProductsCreateResponseContainer>
// <ProcessID><![CDATA[J048hgS4OkNn0JnH]]></ProcessID>
// </ProductsCreateResponseContainer>
// </Response>
// </ApiResponseContainer>
// Parsing the response...
ls_RequestType = loo_XmlResp.GetChildContent("Request|RequestType")
ls_RequestAction = loo_XmlResp.GetChildContent("Request|RequestAction")
ls_RequestVersion = loo_XmlResp.GetChildContent("Request|RequestVersion")
ls_ProcessedAt = loo_XmlResp.GetChildContent("Request|ProcessedAt")
ls_Result = loo_XmlResp.GetChildContent("Response|Result")
ls_ProcessID = loo_XmlResp.GetChildContent("Response|ProductsCreateResponseContainer|ProcessID")
destroy loo_Http
destroy loo_Req
destroy loo_Dt
destroy loo_SbXml
destroy loo_SbStringToSign
destroy loo_Crypt
destroy loo_Resp
destroy loo_XmlResp