Swift
Swift
effectconnect Read Orderlist
See more effectconnect Examples
Get a set of orders filtered by the parameters in the XML payload.Chilkat Swift Downloads
func chilkatTest() {
var success: Bool = false
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
var fullUri: String? = "https://submit.effectconnect.com/orderlist"
var uri: String? = "/orderlist"
var apiVersion: String? = "2.0"
let http = CkoHttp()!
// Use your effectconnect public key here..
http.setRequestHeader(name: "KEY", value: "PUBLIC_KEY")
http.setRequestHeader(name: "VERSION", value: apiVersion)
http.setRequestHeader(name: "URI", value: uri)
http.setRequestHeader(name: "RESPONSETYPE", value: "XML")
http.setRequestHeader(name: "RESPONSELANGUAGE", value: "en")
// Get the current date/time in timestamp format.
let dt = CkoDateTime()!
dt.setFromCurrentSystemTime()
var timestamp: String? = dt.get(asTimestamp: true)
http.setRequestHeader(name: "TIME", value: timestamp)
print("timestamp = \(timestamp!)")
// Create the following XML request body:
// <?xml version="1.0" encoding="utf-8"?>
// <list>
// <filters>
// <fromDateFilter>
// <filterValue>2018-09-14T12:12:12+01:00</filterValue>
// </fromDateFilter>
// <toDateFilter>
// <filterValue>2019-04-13T23:59:59+01:00</filterValue>
// </toDateFilter>
// <hasStatusFilter>
// <filterValue>paid</filterValue>
// </hasStatusFilter>
// <hasTagFilter>
// <filterValue>
// <tagName>Test</tagName>
// <exclude>false</exclude>
// </filterValue>
// </hasTagFilter>
// </filters>
// </list>
// Use this online tool to generate the code from sample XML:
// Generate Code to Create XML
let xml = CkoXml()!
xml.tag = "list"
xml.updateChildContent(tagPath: "filters|fromDateFilter|filterValue", value: "2018-09-14T12:12:12+01:00")
xml.updateChildContent(tagPath: "filters|toDateFilter|filterValue", value: "2019-04-13T23:59:59+01:00")
xml.updateChildContent(tagPath: "filters|hasStatusFilter|filterValue", value: "paid")
xml.updateChildContent(tagPath: "filters|hasTagFilter|filterValue|tagName", value: "Test")
xml.updateChildContent(tagPath: "filters|hasTagFilter|filterValue|exclude", value: "false")
xml.emitCompact = true
let sbXml = CkoStringBuilder()!
xml.getSb(sb: sbXml)
// Build a string-to-sign and sign it using our effectconnect private key
let sbStringToSign = CkoStringBuilder()!
sbStringToSign.appendInt(value: sbXml.length.intValue)
sbStringToSign.append(value: "POST")
sbStringToSign.append(value: uri)
sbStringToSign.append(value: apiVersion)
sbStringToSign.append(value: timestamp)
let crypt = CkoCrypt2()!
crypt.macAlgorithm = "hmac"
crypt.hashAlgorithm = "sha512"
crypt.encodingMode = "base64"
// Use your effectconnect private key here:
crypt.setMacKeyString(key: "PRIVATE_KEY")
http.setRequestHeader(name: "SIGNATURE", value: crypt.macStringENC(inText: sbStringToSign.getAsString()))
// Send the POST..
let resp = CkoHttpResponse()!
success = http.httpStr(verb: "POST", url: fullUri, bodyStr: xml.getXml(), charset: "utf-8", contentType: "application/xml", response: resp)
if success == false {
print("\(http.lastErrorText!)")
return
}
print("response status code = \(resp.statusCode.intValue)")
// 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.
let xmlResp = CkoXml()!
xmlResp.load(xmlData: resp.bodyStr)
print("response body:")
print("\(xmlResp.getXml()!)")
// Remove previously set headers (unless we want the same headers for the next request,
// in which case we may remove or update individual headers by calling SetRequestHeader.
http.clearHeaders()
}