Ruby
Ruby
effectconnect Product Update
See more effectconnect Examples
Use this call to update a product (f.e. stock or price) in EffectConnect.Chilkat Ruby Downloads
require 'chilkat'
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 = 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(true)
req.AddHeader("TIME",timestamp)
print "timestamp = " + timestamp + "\n";
sbXml = Chilkat::CkStringBuilder.new()
success = sbXml.LoadFile("qa_data/xml/effectconnect/effconUpdate.xml","utf-8")
print "length = " + sbXml.get_Length().to_s() + "\n";
req.put_HttpVerb("PUT")
req.put_Path(uri)
req.put_ContentType("multipart/form-data")
success = req.AddStringForUpload("payload","effconUpdate.xml",sbXml.getAsString(),"utf-8")
if (success == false)
print req.lastErrorText() + "\n";
exit
end
# Build a string-to-sign and sign it using our effectconnect private key
sbStringToSign = Chilkat::CkStringBuilder.new()
sbStringToSign.AppendInt(sbXml.get_Length())
sbStringToSign.Append("PUT")
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,true,req,resp)
if (success == false)
print http.lastErrorText() + "\n";
exit
end
print "response status code = " + resp.get_StatusCode().to_s() + "\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:" + "\n";
print xmlResp.getXml() + "\n";
# A sample response:
# <?xml version="1.0" encoding="utf-8"?>
# <ApiResponseContainer>
# <Request>
# <RequestType>Products</RequestType>
# <RequestAction>Update</RequestAction>
# <RequestVersion>2.0</RequestVersion>
# <RequestIdentifier/>
# <ProcessedAt>2019-04-18T15:37:32+02:00</ProcessedAt>
# </Request>
# <Response>
# <Result>Success</Result>
# <ProductsUpdateResponseContainer>
# <ProcessID><![CDATA[f81ngzD2S7gooFk3]]></ProcessID>
# </ProductsUpdateResponseContainer>
# </Response>
# </ApiResponseContainer>
#
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|ProductsUpdateResponseContainer|ProcessID")