Sample code for 30+ languages & platforms
Go

effectconnect Product Update

See more effectconnect Examples

Use this call to update a product (f.e. stock or price) in EffectConnect.

Chilkat Go Downloads

Go
    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.NewHttp()
    req := chilkat.NewHttpRequest()

    // 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.NewCkDateTime()
    dt.SetFromCurrentSystemTime()
    timestamp := dt.GetAsTimestamp(true)

    req.AddHeader("TIME",*timestamp)
    fmt.Println("timestamp = ", *timestamp)

    sbXml := chilkat.NewStringBuilder()
    success = sbXml.LoadFile("qa_data/xml/effectconnect/effconUpdate.xml","utf-8")
    fmt.Println("length = ", sbXml.Length())

    req.SetHttpVerb("PUT")
    req.SetPath(uri)
    req.SetContentType("multipart/form-data")
    success = req.AddStringForUpload("payload","effconUpdate.xml",*sbXml.GetAsString(),"utf-8")
    if success == false {
        fmt.Println(req.LastErrorText())
        http.DisposeHttp()
        req.DisposeHttpRequest()
        dt.DisposeCkDateTime()
        sbXml.DisposeStringBuilder()
        return
    }

    // Build a string-to-sign and sign it using our effectconnect private key
    sbStringToSign := chilkat.NewStringBuilder()
    sbStringToSign.AppendInt(sbXml.Length())
    sbStringToSign.Append("PUT")
    sbStringToSign.Append(uri)
    sbStringToSign.Append(apiVersion)
    sbStringToSign.Append(*timestamp)

    crypt := chilkat.NewCrypt2()
    crypt.SetMacAlgorithm("hmac")
    crypt.SetHashAlgorithm("sha512")
    crypt.SetEncodingMode("base64")
    // Use your effectconnect private key here:
    crypt.SetMacKeyString("PRIVATE_KEY")
    req.AddHeader("SIGNATURE",*crypt.MacStringENC(*sbStringToSign.GetAsString()))

    resp := chilkat.NewHttpResponse()
    success = http.HttpSReq("submit.effectconnect.com",443,true,req,resp)
    if success == false {
        fmt.Println(http.LastErrorText())
        http.DisposeHttp()
        req.DisposeHttpRequest()
        dt.DisposeCkDateTime()
        sbXml.DisposeStringBuilder()
        sbStringToSign.DisposeStringBuilder()
        crypt.DisposeCrypt2()
        resp.DisposeHttpResponse()
        return
    }

    fmt.Println("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 := chilkat.NewXml()
    xmlResp.LoadXml(resp.BodyStr())

    fmt.Println("response body:")
    fmt.Println(*xmlResp.GetXml())

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

    var tagPath string
    var RequestType *string = new(string)
    var RequestAction *string = new(string)
    var RequestVersion *string = new(string)
    var ProcessedAt *string = new(string)
    var Result *string = new(string)
    var ProcessID *string = new(string)

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

    http.DisposeHttp()
    req.DisposeHttpRequest()
    dt.DisposeCkDateTime()
    sbXml.DisposeStringBuilder()
    sbStringToSign.DisposeStringBuilder()
    crypt.DisposeCrypt2()
    resp.DisposeHttpResponse()
    xmlResp.DisposeXml()