Sample code for 30+ languages & platforms
Visual FoxPro

GeoOp - Get a list of all users

See more GeoOp Examples

Gets a list of all GeoOp users.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loJsonToken
LOCAL loOauth2
LOCAL loRest
LOCAL lnBAutoReconnect
LOCAL lcResponseBody
LOCAL loJson
LOCAL loDtime
LOCAL lnBLocalTime
LOCAL loDt
LOCAL lnNumRecords
LOCAL i

lnSuccess = 0

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

* This example also assumes an OAuth2 access token was previously fetched.
* and saved in a JSON file.  

* First get our previously obtained access token.
* {"access_token":"e6dqdG....mzjpT04w==","token_type":"Bearer","expires_in":2592000,"owner_id":999236}
loJsonToken = CreateObject('Chilkat.JsonObject')
lnSuccess = loJsonToken.LoadFile("qa_data/tokens/geoop.json")

* This example assumes we previously obtained an access token
loOauth2 = CreateObject('Chilkat.OAuth2')
loOauth2.AccessToken = loJsonToken.StringOf("access_token")

loRest = CreateObject('Chilkat.Rest')

* Connect to GeoOp and send the following GET request:

* GET /users HTTP/1.1
* Host: api.geoop.com
lnBAutoReconnect = 1
lnSuccess = loRest.Connect("api.geoop.com",443,1,lnBAutoReconnect)
IF (lnSuccess = 0) THEN
    ? loRest.LastErrorText
    RELEASE loJsonToken
    RELEASE loOauth2
    RELEASE loRest
    CANCEL
ENDIF

* Provide the authentication credentials (i.e. the access token)
loRest.SetAuthOAuth2(loOauth2)

* Set the X-Version header.
loRest.AddHeader("X-Version","1.0")

lcResponseBody = loRest.FullRequestNoBody("GET","/users")
IF (loRest.LastMethodSuccess = 0) THEN
    ? loRest.LastErrorText
    RELEASE loJsonToken
    RELEASE loOauth2
    RELEASE loRest
    CANCEL
ENDIF

* If the response status code did not indicate success, then see what happened..
IF (loRest.ResponseStatusCode <> 200) THEN
    ? "Request Header: "
    ? loRest.LastRequestHeader
    ? "----"
    ? "Response StatusCode = " + STR(loRest.ResponseStatusCode)
    ? "Response StatusLine: " + loRest.ResponseStatusText
    ? "Response Header:"
    ? loRest.ResponseHeader
    ? lcResponseBody
    RELEASE loJsonToken
    RELEASE loOauth2
    RELEASE loRest
    CANCEL
ENDIF

loJson = CreateObject('Chilkat.JsonObject')
loJson.EmitCompact = 0
loJson.Load(lcResponseBody)
* Show the full JSON response..
? loJson.Emit()

* These will be used for parsing date/time strings..
loDtime = CreateObject('Chilkat.CkDateTime')
lnBLocalTime = 1
loDt = CreateObject('Chilkat.DtObj')

* Iterate over each user and get information from each.
lnNumRecords = loJson.SizeOfArray("users")
i = 0
DO WHILE i < lnNumRecords

    loJson.I = i
    ? "id: " + loJson.StringOf("users[i].id")
    ? "firstName: " + loJson.StringOf("users[i].firstName")
    ? "lastName: " + loJson.StringOf("users[i].lastName")
    ? "companyName: " + loJson.StringOf("users[i].companyName")
    ? "active: " + STR(loJson.IntOf("users[i].active"))
    ? "isAssignable: " + STR(loJson.BoolOf("users[i].isAssignable"))
    ? "account id: " + STR(loJson.BoolOf("users[i].account.id"))

    loDtime.SetFromTimestamp(loJson.StringOf("users[i].created"))
    loDtime.ToDtObj(lnBLocalTime,loDt)

    ? "created: " + STR(loDt.Month) + "/" + STR(loDt.Day) + "/" + STR(loDt.Year) + "  " + STR(loDt.Hour) + ":" + STR(loDt.Minute)

    ? "----"
    i = i + 1
ENDDO

* The responseJson looks like this:
* {
*   "result": "success",
*   "users": [
*     {
*       "id": 984236,
*       "firstName": "Joe",
*       "lastName": "Smith",
*       "companyName": "Chilkat Software, Inc.",
*       "email": "support@chilkatsoft.com",
*       "phone": "",
*       "mobile": "1-630-555-5555",
*       "hourlyRate": 0,
*       "active": 1,
*       "deleted": false,
*       "colour": "#D2BC14",
*       "created": "2016-10-26T12:05:09+00:00",
*       "modified": "2016-10-26T12:05:09+00:00",
*       "isAssignable": true,
*       "avatarUrl": "https:\/\/www.geoop.com\/images\/mobithumb_984236.jpg",
*       "role": {
*         "id": 1
*       },
*       "account": {
*         "id": 39409
*       },
*       "status": {}
*     },
*     {
*       "id": 984237,
*       "firstName": "Demo",
*       "lastName": "Employee",
*       "companyName": "",
*       "email": "",
*       "phone": "",
*       "mobile": "58458458475854758",
*       "hourlyRate": 0,
*       "active": 0,
*       "deleted": true,
*       "colour": "#4C4CFF",
*       "created": "2015-09-03T01:56:17+00:00",
*       "modified": "2016-06-14T20:20:58+00:00",
*       "isAssignable": true,
*       "avatarUrl": "https:\/\/www.geoop.com\/images\/mobithumb_984237.jpg",
*       "role": {
*         "id": 2
*       },
*       "account": {
*         "id": 39409
*       },
*       "status": {
*         "message": null,
*         "timestamp": "2015-09-03T01:57:45+00:00"
*       }
*     }
*   ],
*   "metadata": {
*     "page": 1,
*     "pagesCount": 1,
*     "recordsPerPage": 20,
*     "recordsCount": 2
*   }
* }
* 
* 

RELEASE loJsonToken
RELEASE loOauth2
RELEASE loRest
RELEASE loJson
RELEASE loDtime
RELEASE loDt