PowerShell
PowerShell
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 PowerShell Downloads
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"
$success = $false
# This example assumes the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
$uri = "/products"
$apiVersion = "2.0"
$http = New-Object Chilkat.Http
$req = New-Object Chilkat.HttpRequest
# Use your effectconnect public key here...
$req.AddHeader("KEY","PUBLIC_KEY")
$req.AddHeader("VERSION",$apiVersion)
$req.AddHeader("URI",$uri)
$req.AddHeader("RESPONSETYPE","XML")
$req.AddHeader("RESPONSELANGUAGE","en")
# Get the current date/time in timestamp format.
$dt = New-Object Chilkat.CkDateTime
$dt.SetFromCurrentSystemTime()
$timestamp = $dt.GetAsTimestamp($true)
$req.AddHeader("TIME",$timestamp)
$("timestamp = " + $timestamp)
$sbXml = New-Object Chilkat.StringBuilder
$success = $sbXml.LoadFile("qa_data/xml/effectconnect/effconCreate.xml","utf-8")
$("length = " + $sbXml.Length)
$req.HttpVerb = "POST"
$req.Path = $uri
$req.ContentType = "multipart/form-data"
$success = $req.AddStringForUpload("payload","effcon.xml",$sbXml.GetAsString(),"utf-8")
if ($success -eq $false) {
$($req.LastErrorText)
exit
}
# Build a string-to-sign and sign it using our effectconnect private key
$sbStringToSign = New-Object Chilkat.StringBuilder
$sbStringToSign.AppendInt($sbXml.Length)
$sbStringToSign.Append("POST")
$sbStringToSign.Append($uri)
$sbStringToSign.Append($apiVersion)
$sbStringToSign.Append($timestamp)
$crypt = New-Object Chilkat.Crypt2
$crypt.MacAlgorithm = "hmac"
$crypt.HashAlgorithm = "sha512"
$crypt.EncodingMode = "base64"
# Use your effectconnect private key here:
$crypt.SetMacKeyString("PRIVATE_KEY")
$req.AddHeader("SIGNATURE",$crypt.MacStringENC($sbStringToSign.GetAsString()))
$resp = New-Object Chilkat.HttpResponse
$success = $http.HttpSReq("submit.effectconnect.com",443,$true,$req,$resp)
if ($success -eq $false) {
$($http.LastErrorText)
exit
}
$("response status code = " + $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.
$xmlResp = New-Object Chilkat.Xml
$xmlResp.LoadXml($resp.BodyStr)
$("response body:")
$($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...
$RequestType = $xmlResp.GetChildContent("Request|RequestType")
$RequestAction = $xmlResp.GetChildContent("Request|RequestAction")
$RequestVersion = $xmlResp.GetChildContent("Request|RequestVersion")
$ProcessedAt = $xmlResp.GetChildContent("Request|ProcessedAt")
$Result = $xmlResp.GetChildContent("Response|Result")
$ProcessID = $xmlResp.GetChildContent("Response|ProductsCreateResponseContainer|ProcessID")