Sample code for 30+ languages & platforms
Visual FoxPro

Refinitiv World-Check One - Get Top Level Groups

See more Refinitiv Examples

Sends a signed GET request to get the top level groups.

Note: This example requires Chilkat v9.5.0.89 or later.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loJson
LOCAL loHttp
LOCAL lcResponseJson
LOCAL loJarr
LOCAL loJsonObj
LOCAL lcId
LOCAL lcName
LOCAL lcParentId
LOCAL lnHasChildren
LOCAL lcStatus
LOCAL j
LOCAL lnCount_j
LOCAL i
LOCAL lnCount_i

lnSuccess = 0

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

loJson = CreateObject('Chilkat.JsonObject')

* Create the following JSON:
* 
* {
*   "keyId": "aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
*   "hmacKey": "xxxxzI3vi58xxxCBxxx1+P/d8tGxx7KuLqN/KMPNxxxxekhj8/bx83+1YQSUxxxxYyv939ceY06GvhYRKmxxxx==",
*   "algorithm": "hmac-sha256",
*   "headers": [
*     "(request-target)",
*     "host",
*     "date"
*   ]
* }

* Substitute your actual API key and API secret in place of "api-key" and "api-secret"
loJson.UpdateString("keyId","api-key")
loJson.UpdateString("hmacKey","api-secret")
loJson.UpdateString("algorithm","hmac-sha256")
* Indicate the names of the headers to be included in the signature.
* "(request-target)" is not actually a header name, but is a special name for HTTP signatures.
* Copy the following three lines of code exactly as-is.  
* Do not replace "host", "date", or "(request-target)" with values.
loJson.UpdateString("headers[0]","(request-target)")
loJson.UpdateString("headers[1]","host")
loJson.UpdateString("headers[2]","date")

loHttp = CreateObject('Chilkat.Http')

* Setting the AuthSignature property causes the following header to be computed and added:
* Authorization: Signature keyId="...", algorithm="hmac-sha256", headers="(request-target) host date", signature="..."
loHttp.AuthSignature = loJson.Emit()

loHttp.SetRequestHeader("Cache-Control","no-cache")

* Chilkat will auto-add the Date header because it's needed by the HTTP Signature.

lcResponseJson = loHttp.QuickGetStr("https://api-worldcheck.refinitiv.com/v2/groups")
IF (loHttp.LastMethodSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loJson
    RELEASE loHttp
    CANCEL
ENDIF

? lcResponseJson
? "----"
* A 200 status code indicates success.
? "Status code = " + STR(loHttp.LastStatus)

* Successful JSON looks like this:
* [ 
*   {
*   "id": "...",
*   "name": "Company Name",
*   "parentId": null,
*   "hasChildren": false,
*   "status": "ACTIVE",
*   "children": []
*   }
* ]

* Use this online tool to generate parsing code from sample JSON: 
* Generate Parsing Code from JSON

loJarr = CreateObject('Chilkat.JsonArray')

lnSuccess = loJarr.Load(lcResponseJson)

i = 0
lnCount_i = loJarr.Size
DO WHILE i < lnCount_i
    loJsonObj = loJarr.ObjectAt(i)
    lcId = loJsonObj.StringOf("id")
    lcName = loJsonObj.StringOf("name")
    lcParentId = loJsonObj.StringOf("parentId")
    lnHasChildren = loJsonObj.BoolOf("hasChildren")
    lcStatus = loJsonObj.StringOf("status")
    j = 0
    lnCount_j = loJsonObj.SizeOfArray("children")
    DO WHILE j < lnCount_j
        loJsonObj.J = j
        j = j + 1
    ENDDO
    RELEASE loJsonObj
    i = i + 1
ENDDO

RELEASE loJson
RELEASE loHttp
RELEASE loJarr