PureBasic
PureBasic
Google People API - Create Contact
See more Google People Examples
Create a new contact.Chilkat PureBasic Downloads
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkJsonObject.pb"
Procedure ChilkatExample()
success.i = 0
; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
; It is assumed we previously obtained an OAuth2 access token.
; This example loads the JSON access token file
; originally obtained by this example: Get Google People API OAuth2 Access Token
; or refreshed by this example: Refresh Google People API OAuth2 Access Token
jsonToken.i = CkJsonObject::ckCreate()
If jsonToken.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkJsonObject::ckLoadFile(jsonToken,"qa_data/tokens/googlePeople.json")
If success <> 1
Debug "Failed to load googleContacts.json"
CkJsonObject::ckDispose(jsonToken)
ProcedureReturn
EndIf
http.i = CkHttp::ckCreate()
If http.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkHttp::setCkAuthToken(http, CkJsonObject::ckStringOf(jsonToken,"access_token"))
; Implements the following CURL command:
; curl -H "Content-Type: application/json" -X POST
; -d '{
; "names": [{ "givenName": "John", "familyName": "Doe" }]
; }'
; https://people.googleapis.com/v1/people:createContact
; Use the following online tool to generate HTTP code from a CURL command
; Convert a cURL Command to HTTP Source Code
; Use this online tool to generate code from sample JSON:
; Generate Code to Create JSON
; The following JSON is sent in the request body.
; {
; "names": [
; {
; "givenName": "John",
; "familyName": "Doe"
; }
; ]
; }
json.i = CkJsonObject::ckCreate()
If json.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckUpdateString(json,"names[0].givenName","John")
CkJsonObject::ckUpdateString(json,"names[0].familyName","Doe")
resp.i = CkHttpResponse::ckCreate()
If resp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkHttp::ckHttpJson(http,"POST","https://people.googleapis.com/v1/people:createContact",json,"application/json",resp)
If success = 0
Debug CkHttp::ckLastErrorText(http)
CkJsonObject::ckDispose(jsonToken)
CkHttp::ckDispose(http)
CkJsonObject::ckDispose(json)
CkHttpResponse::ckDispose(resp)
ProcedureReturn
EndIf
sbResponseBody.i = CkStringBuilder::ckCreate()
If sbResponseBody.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkHttpResponse::ckGetBodySb(resp,sbResponseBody)
jResp.i = CkJsonObject::ckCreate()
If jResp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckLoadSb(jResp,sbResponseBody)
CkJsonObject::setCkEmitCompact(jResp, 0)
Debug "Response Body:"
Debug CkJsonObject::ckEmit(jResp)
respStatusCode.i = CkHttpResponse::ckStatusCode(resp)
Debug "Response Status Code = " + Str(respStatusCode)
If respStatusCode >= 400
Debug "Response Header:"
Debug CkHttpResponse::ckHeader(resp)
Debug "Failed."
CkJsonObject::ckDispose(jsonToken)
CkHttp::ckDispose(http)
CkJsonObject::ckDispose(json)
CkHttpResponse::ckDispose(resp)
CkStringBuilder::ckDispose(sbResponseBody)
CkJsonObject::ckDispose(jResp)
ProcedureReturn
EndIf
; Sample JSON response:
; (Sample code for parsing the JSON response is shown below)
; {
; "resourceName": "people/c172365763025317520",
; "etag": "%EigBAj0DBAUGBwgJPgoLPwwNDg8QQBESExQVFhc1GTQ3HyEiIyQlJicuGgQBAgUHIgxleVowR3U1SFZhcz0=",
; "metadata": {
; "sources": [
; {
; "type": "CONTACT",
; "id": "2645dbf8c902e90",
; "etag": "#eyZ0Gu5HVas=",
; "updateTime": "2020-08-03T22:46:03.410Z"
; }
; ],
; "objectType": "PERSON"
; },
; "names": [
; {
; "metadata": {
; "primary": true,
; "source": {
; "type": "CONTACT",
; "id": "2645dbf8c902e90"
; }
; },
; "displayName": "John Doe",
; "familyName": "Doe",
; "givenName": "John",
; "displayNameLastFirst": "Doe, John",
; "unstructuredName": "John Doe"
; }
; ],
; "photos": [
; {
; "metadata": {
; "primary": true,
; "source": {
; "type": "CONTACT",
; "id": "2645dbf8c902e90"
; }
; },
; "url": "https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/V8BNOaftJmYG2hHugNzYued7G9QFdbZOACLcDEAEiGQoBShD___________8BGNuwiP7______wE/s100/photo.jpg",
; "default": true
; }
; ],
; "memberships": [
; {
; "metadata": {
; "source": {
; "type": "CONTACT",
; "id": "2645dbf8c902e90"
; }
; },
; "contactGroupMembership": {
; "contactGroupId": "myContacts",
; "contactGroupResourceName": "contactGroups/myContacts"
; }
; }
; ]
; }
; Sample code for parsing the JSON response...
; Use the following online tool to generate parsing code from sample JSON:
; Generate Parsing Code from JSON
v_type.s
id.s
updateTime.s
metadataPrimary.i
metadataSourceType.s
metadataSourceId.s
displayName.s
familyName.s
givenName.s
displayNameLastFirst.s
unstructuredName.s
url.s
default.i
contactGroupMembershipContactGroupId.s
contactGroupMembershipContactGroupResourceName.s
resourceName.s = CkJsonObject::ckStringOf(jResp,"resourceName")
etag.s = CkJsonObject::ckStringOf(jResp,"etag")
metadataObjectType.s = CkJsonObject::ckStringOf(jResp,"metadata.objectType")
i.i = 0
count_i.i = CkJsonObject::ckSizeOfArray(jResp,"metadata.sources")
While i < count_i
CkJsonObject::setCkI(jResp, i)
v_type = CkJsonObject::ckStringOf(jResp,"metadata.sources[i].type")
id = CkJsonObject::ckStringOf(jResp,"metadata.sources[i].id")
etag = CkJsonObject::ckStringOf(jResp,"metadata.sources[i].etag")
updateTime = CkJsonObject::ckStringOf(jResp,"metadata.sources[i].updateTime")
i = i + 1
Wend
i = 0
count_i = CkJsonObject::ckSizeOfArray(jResp,"names")
While i < count_i
CkJsonObject::setCkI(jResp, i)
metadataPrimary = CkJsonObject::ckBoolOf(jResp,"names[i].metadata.primary")
metadataSourceType = CkJsonObject::ckStringOf(jResp,"names[i].metadata.source.type")
metadataSourceId = CkJsonObject::ckStringOf(jResp,"names[i].metadata.source.id")
displayName = CkJsonObject::ckStringOf(jResp,"names[i].displayName")
familyName = CkJsonObject::ckStringOf(jResp,"names[i].familyName")
givenName = CkJsonObject::ckStringOf(jResp,"names[i].givenName")
displayNameLastFirst = CkJsonObject::ckStringOf(jResp,"names[i].displayNameLastFirst")
unstructuredName = CkJsonObject::ckStringOf(jResp,"names[i].unstructuredName")
i = i + 1
Wend
i = 0
count_i = CkJsonObject::ckSizeOfArray(jResp,"photos")
While i < count_i
CkJsonObject::setCkI(jResp, i)
metadataPrimary = CkJsonObject::ckBoolOf(jResp,"photos[i].metadata.primary")
metadataSourceType = CkJsonObject::ckStringOf(jResp,"photos[i].metadata.source.type")
metadataSourceId = CkJsonObject::ckStringOf(jResp,"photos[i].metadata.source.id")
url = CkJsonObject::ckStringOf(jResp,"photos[i].url")
default = CkJsonObject::ckBoolOf(jResp,"photos[i].default")
i = i + 1
Wend
i = 0
count_i = CkJsonObject::ckSizeOfArray(jResp,"memberships")
While i < count_i
CkJsonObject::setCkI(jResp, i)
metadataSourceType = CkJsonObject::ckStringOf(jResp,"memberships[i].metadata.source.type")
metadataSourceId = CkJsonObject::ckStringOf(jResp,"memberships[i].metadata.source.id")
contactGroupMembershipContactGroupId = CkJsonObject::ckStringOf(jResp,"memberships[i].contactGroupMembership.contactGroupId")
contactGroupMembershipContactGroupResourceName = CkJsonObject::ckStringOf(jResp,"memberships[i].contactGroupMembership.contactGroupResourceName")
i = i + 1
Wend
CkJsonObject::ckDispose(jsonToken)
CkHttp::ckDispose(http)
CkJsonObject::ckDispose(json)
CkHttpResponse::ckDispose(resp)
CkStringBuilder::ckDispose(sbResponseBody)
CkJsonObject::ckDispose(jResp)
ProcedureReturn
EndProcedure