PureBasic
PureBasic
Outlook Contacts Create a Contact
See more Outlook Contact Examples
Creates an Outlook Contact.Chilkat PureBasic Downloads
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkJsonObject.pb"
Procedure ChilkatExample()
success.i = 0
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
http.i = CkHttp::ckCreate()
If http.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Use your previously obtained access token here: Get Outlook Contacts OAuth2 Access Token (Azure AD v2.0 Endpoint).
jsonToken.i = CkJsonObject::ckCreate()
If jsonToken.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkJsonObject::ckLoadFile(jsonToken,"qa_data/tokens/outlookContacts.json")
If success = 0
Debug CkJsonObject::ckLastErrorText(jsonToken)
CkHttp::ckDispose(http)
CkJsonObject::ckDispose(jsonToken)
ProcedureReturn
EndIf
CkHttp::setCkAuthToken(http, CkJsonObject::ckStringOf(jsonToken,"access_token"))
; Send the following POST:
; POST https://graph.microsoft.com/v1.0/me/contacts
; Content-type: application/json
;
; {
; "givenName": "Pavel",
; "surname": "Bansky",
; "emailAddresses": [
; {
; "address": "pavelb@fabrikam.onmicrosoft.com",
; "name": "Pavel Bansky"
; }
; ],
; "businessPhones": [
; "+1 732 555 0102"
; ]
; }
; Build the JSON body of the POST.
; Use this online tool to generate code from sample JSON:
; Generate Code to Create JSON
json.i = CkJsonObject::ckCreate()
If json.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckUpdateString(json,"givenName","Pavel")
CkJsonObject::ckUpdateString(json,"surname","Bansky")
CkJsonObject::ckUpdateString(json,"emailAddresses[0].address","pavelb@fabrikam.onmicrosoft.com")
CkJsonObject::ckUpdateString(json,"emailAddresses[0].name","Pavel Bansky")
CkJsonObject::ckUpdateString(json,"businessPhones[0]","+1 732 555 0102")
; Send the HTTP POST
resp.i = CkHttpResponse::ckCreate()
If resp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkHttp::ckHttpJson(http,"POST","https://graph.microsoft.com/v1.0/me/contacts",json,"application/json",resp)
If success = 0
Debug CkHttp::ckLastErrorText(http)
CkHttp::ckDispose(http)
CkJsonObject::ckDispose(jsonToken)
CkJsonObject::ckDispose(json)
CkHttpResponse::ckDispose(resp)
ProcedureReturn
EndIf
Debug "Response status code = " + Str(CkHttpResponse::ckStatusCode(resp))
jResp.i = CkJsonObject::ckCreate()
If jResp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckLoad(jResp,CkHttpResponse::ckBodyStr(resp))
CkJsonObject::setCkEmitCompact(jResp, 0)
Debug CkJsonObject::ckEmit(jResp)
; The send succeeded if the response status code = 201.
If CkHttpResponse::ckStatusCode(resp) <> 201
Debug "Failed"
CkHttp::ckDispose(http)
CkJsonObject::ckDispose(jsonToken)
CkJsonObject::ckDispose(json)
CkHttpResponse::ckDispose(resp)
CkJsonObject::ckDispose(jResp)
ProcedureReturn
EndIf
; Sample JSON response:
; {
; "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('4ee732c3-322e-4a6b-b729-2fd1eb5c6004')/contacts/$entity",
; "@odata.etag": "W/\"EQAAABYAAABUcG0qWqkmQYqWLHQataQxAAD0iYfT\"",
; "id": "AAMkADYzZWE3YmZmLWU0YzgtNGNkZC04MGE1LWFiYTFlNTRlY2QwYQBGAAAAAAAu7cUXL5YOTrdsUIw7-v8FBwBUcG0qWqkmQYqWLHQataQxAAAAAAEOAABUcG0qWqkmQYqWLHQataQxAAD0sxexAAA=",
; "createdDateTime": "2021-06-29T16:32:05Z",
; "lastModifiedDateTime": "2021-06-29T16:32:06Z",
; "changeKey": "EQAAABYAAABUcG0qWqkmQYqWLHQataQxAAD0iYfT",
; "categories": [
; ],
; "parentFolderId": "AAMkADYzZWE3YmZmLWU0YzgtNGNkZC04MGE1LWFiYTFlNTRlY2QwYQAuAAAAAAAu7cUXL5YOTrdsUIw7-v8FAQBUcG0qWqkmQYqWLHQataQxAAAAAAEOAAA=",
; "birthday": null,
; "fileAs": "",
; "displayName": "Pavel Bansky",
; "givenName": "Pavel",
; "initials": null,
; "middleName": null,
; "nickName": null,
; "surname": "Bansky",
; "title": null,
; "yomiGivenName": null,
; "yomiSurname": null,
; "yomiCompanyName": null,
; "generation": null,
; "imAddresses": [
; ],
; "jobTitle": null,
; "companyName": null,
; "department": null,
; "officeLocation": null,
; "profession": null,
; "businessHomePage": null,
; "assistantName": null,
; "manager": null,
; "homePhones": [
; ],
; "mobilePhone": null,
; "businessPhones": [
; "+1 732 555 0102"
; ],
; "spouseName": null,
; "personalNotes": "",
; "children": [
; ],
; "emailAddresses": [
; {
; "name": "Pavel Bansky",
; "address": "pavelb@fabrikam.onmicrosoft.com"
; }
; ],
; "homeAddress": {},
; "businessAddress": {},
; "otherAddress": {}
; }
Debug "Contact created."
CkHttp::ckDispose(http)
CkJsonObject::ckDispose(jsonToken)
CkJsonObject::ckDispose(json)
CkHttpResponse::ckDispose(resp)
CkJsonObject::ckDispose(jResp)
ProcedureReturn
EndProcedure