Sample code for 30+ languages & platforms
PureBasic

VoiceBase -- Compound Expression Search

See more VoiceBase Examples

Demonstrates how to do a VoiceBase compound expression search. See VoiceBase Search for more details about Search.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkJsonObject.pb"
IncludeFile "CkDateTime.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkDtObj.pb"
IncludeFile "CkHttpRequest.pb"
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkStringBuilder.pb"

Procedure ChilkatExample()

    success.i = 0

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

    ; Insert your Bearer token here:
    accessToken.s = "VOICEBASE_TOKEN"

    http.i = CkHttp::ckCreate()
    If http.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    req.i = CkHttpRequest::ckCreate()
    If req.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkHttpRequest::setCkHttpVerb(req, "GET")
    CkHttpRequest::setCkPath(req, "/v2-beta/media")

    ; Add the access (bearer) token to the request, which is a header
    ; having the following format:
    ; Authorization: Bearer <userAccessToken>
    sbAuth.i = CkStringBuilder::ckCreate()
    If sbAuth.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkStringBuilder::ckAppend(sbAuth,"Bearer ")
    CkStringBuilder::ckAppend(sbAuth,accessToken)
    CkHttpRequest::ckAddHeader(req,"Authorization",CkStringBuilder::ckGetAsString(sbAuth))

    ; Search for media containing the terms any of the terms "test", "number", or "three"
    CkHttpRequest::ckAddParam(req,"query",Chr(34) + "test" + Chr(34) + " OR " + Chr(34) + "number" + Chr(34) + " OR " + Chr(34) + "three" + Chr(34))

    resp.i = CkHttpResponse::ckCreate()
    If resp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkHttp::ckHttpSReq(http,"apis.voicebase.com",443,1,req,resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkHttpRequest::ckDispose(req)
        CkStringBuilder::ckDispose(sbAuth)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    ; Examine the response status code and body.
    Debug "Response status code = " + Str(CkHttpResponse::ckStatusCode(resp))

    ; The response should be JSON, even if an error.
    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoad(json,CkHttpResponse::ckBodyStr(resp))
    CkJsonObject::setCkEmitCompact(json, 0)

    ; A successful response will have a status code = 200
    If CkHttpResponse::ckStatusCode(resp) <> 200
        Debug "Failed."
    Else
        Debug "mediaId: " + CkJsonObject::ckStringOf(json,"mediaId")
        Debug "href: " + CkJsonObject::ckStringOf(json,"_links.self.href")
        Debug "status: " + CkJsonObject::ckStringOf(json,"status")
        Debug "Success."
    EndIf

    ; See the sample JSON response below..

    ; Iterate over the JSON like this:
    dt.i = CkDateTime::ckCreate()
    If dt.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    dtObj.i = CkDtObj::ckCreate()
    If dtObj.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    mediaCount.i = CkJsonObject::ckSizeOfArray(json,"media")
    i.i = 0
    While i < mediaCount
        CkJsonObject::setCkI(json, i)

        Debug "-- " + Str(i) + " --"
        Debug "  mediaId: " + CkJsonObject::ckStringOf(json,"media[i].mediaId")
        Debug "  status: " + CkJsonObject::ckStringOf(json,"media[i].status")
        Debug "  contentType: " + CkJsonObject::ckStringOf(json,"media[i].metadata.contentType")
        Debug "  milliseconds: " + CkJsonObject::ckStringOf(json,"media[i].metadata.length.milliseconds")
        Debug "  descriptive: " + CkJsonObject::ckStringOf(json,"media[i].metadata.length.descriptive")
        dateCreated.s = CkJsonObject::ckStringOf(json,"media[i].dateCreated")
        CkDateTime::ckSetFromTimestamp(dt,dateCreated)

        localTime.i = 1
        CkDateTime::ckToDtObj(dt,localTime,dtObj)

        Debug "  " + Str(CkDtObj::ckMonth(dtObj)) + "/" + Str(CkDtObj::ckDay(dtObj)) + "  " + Str(CkDtObj::ckHour(dtObj)) + ":" + Str(CkDtObj::ckMinute(dtObj))

        i = i + 1
    Wend
    Debug "Finished."

    ; A sample JSON response:

    ; { 
    ;   "_links": { 
    ;     "self": { 
    ;       "href": "/v2-beta/media"
    ;     }
    ;   },
    ;   "media": [
    ;     { 
    ;       "mediaId": "26063536-FFFF-4020-93ba-0878112d834b",
    ;       "status": "finished",
    ;       "metadata": { 
    ;         "contentType": "audio/x-wav",
    ;         "length": { 
    ;           "milliseconds": 85141,
    ;           "descriptive": "85.0 sec"
    ;         }
    ;       },
    ;       "dateCreated": "2017-01-19T16:49:32.000Z"
    ;     },
    ;     { 
    ;       "mediaId": "8163fbbc-FFFF-4794-aa95-045420bb321d",
    ;       "status": "finished",
    ;       "metadata": { 
    ;         "contentType": "audio/x-wav",
    ;         "length": { 
    ;           "milliseconds": 65342,
    ;           "descriptive": "65.0 sec"
    ;         }
    ;       },
    ;       "dateCreated": "2017-01-19T20:08:49.000Z"
    ;     },
    ; ...
    ; ...
    ;     { 
    ;       "mediaId": "b01e27be-FFFF-4b62-8802-6dc66a75c4d3",
    ;       "status": "finished",
    ;       "metadata": { 
    ;         "contentType": "audio/x-wav",
    ;         "length": { 
    ;           "milliseconds": 11581,
    ;           "descriptive": "11.0 sec"
    ;         }
    ;       },
    ;       "dateCreated": "2017-02-06T20:55:43.000Z"
    ;     }
    ;   ]
    ; }


    CkHttp::ckDispose(http)
    CkHttpRequest::ckDispose(req)
    CkStringBuilder::ckDispose(sbAuth)
    CkHttpResponse::ckDispose(resp)
    CkJsonObject::ckDispose(json)
    CkDateTime::ckDispose(dt)
    CkDtObj::ckDispose(dtObj)


    ProcedureReturn
EndProcedure