Sample code for 30+ languages & platforms
Perl

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 Perl Downloads

Perl
use chilkat();

$success = 0;

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

$uri = "/products";
$apiVersion = "2.0";

$http = chilkat::CkHttp->new();
$req = chilkat::CkHttpRequest->new();

# 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 = chilkat::CkDateTime->new();
$dt->SetFromCurrentSystemTime();
$timestamp = $dt->getAsTimestamp(1);

$req->AddHeader("TIME",$timestamp);
print "timestamp = " . $timestamp . "\r\n";

$sbXml = chilkat::CkStringBuilder->new();
$success = $sbXml->LoadFile("qa_data/xml/effectconnect/effconCreate.xml","utf-8");
print "length = " . $sbXml->get_Length() . "\r\n";

$req->put_HttpVerb("POST");
$req->put_Path($uri);
$req->put_ContentType("multipart/form-data");
$success = $req->AddStringForUpload("payload","effcon.xml",$sbXml->getAsString(),"utf-8");
if ($success == 0) {
    print $req->lastErrorText() . "\r\n";
    exit;
}

# Build a string-to-sign and sign it using our effectconnect private key
$sbStringToSign = chilkat::CkStringBuilder->new();
$sbStringToSign->AppendInt($sbXml->get_Length());
$sbStringToSign->Append("POST");
$sbStringToSign->Append($uri);
$sbStringToSign->Append($apiVersion);
$sbStringToSign->Append($timestamp);

$crypt = chilkat::CkCrypt2->new();
$crypt->put_MacAlgorithm("hmac");
$crypt->put_HashAlgorithm("sha512");
$crypt->put_EncodingMode("base64");
# Use your effectconnect private key here:
$crypt->SetMacKeyString("PRIVATE_KEY");
$req->AddHeader("SIGNATURE",$crypt->macStringENC($sbStringToSign->getAsString()));

$resp = chilkat::CkHttpResponse->new();
$success = $http->HttpSReq("submit.effectconnect.com",443,1,$req,$resp);
if ($success == 0) {
    print $http->lastErrorText() . "\r\n";
    exit;
}

print "response status code = " . $resp->get_StatusCode() . "\r\n";

# 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 = chilkat::CkXml->new();
$xmlResp->LoadXml($resp->bodyStr());

print "response body:" . "\r\n";
print $xmlResp->getXml() . "\r\n";

# 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");