Visual FoxPro
Visual FoxPro
Get GMail Message format=full
See more GMail REST API Examples
Examines the JSON returned when getting a message using format=full.Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loHttp
LOCAL lcId
LOCAL loResp
LOCAL loJson
LOCAL lcStrVal
LOCAL lcName
LOCAL lcValue
LOCAL lcPartId
LOCAL lcMimeType
LOCAL lcFilename
LOCAL lnBodySize
LOCAL lcBodyAttachmentId
LOCAL j
LOCAL lnCount_j
LOCAL lcBodyData
LOCAL k
LOCAL lnCount_k
LOCAL loJson1
LOCAL lnI1
LOCAL lnCount_i1
LOCAL lcId
LOCAL lcThreadId
LOCAL lcSnippet
LOCAL lcHistoryId
LOCAL lcInternalDate
LOCAL lcPayloadPartId
LOCAL lcPayloadMimeType
LOCAL lcPayloadFilename
LOCAL lnPayloadBodySize
LOCAL lnSizeEstimate
LOCAL i
LOCAL lnCount_i
lnSuccess = 0
* This example requires the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.
loHttp = CreateObject('Chilkat.Http')
loHttp.AuthToken = "ACCESS_TOKEN"
loHttp.Accept = "application/json"
* This is the ID for a particular message in our mailbox...
lcId = "1712bc1dc22da2a2"
* Download the message using format=full
loHttp.SetUrlVar("id",lcId)
loResp = CreateObject('Chilkat.HttpResponse')
lnSuccess = loHttp.HttpNoBody("GET","https://www.googleapis.com/gmail/v1/users/userId/messages/{$id}?format=full",loResp)
IF (lnSuccess = 0) THEN
? loHttp.LastErrorText
RELEASE loHttp
RELEASE loResp
CANCEL
ENDIF
? "Response Status Code: " + STR(loResp.StatusCode)
loJson = CreateObject('Chilkat.JsonObject')
loJson.Load(loResp.BodyStr)
loJson.EmitCompact = 0
? loJson.Emit()
IF (loResp.StatusCode <> 200) THEN
? "Failed."
RELEASE loHttp
RELEASE loResp
RELEASE loJson
CANCEL
ENDIF
* Use this online tool to generate parsing code from sample JSON:
* Generate Parsing Code from JSON
* Here is a sample "format=full" response that contains 4 attachments:
* The JSON parsing source code is shown below...
* {
* "id": "1712bc1dc22da2a2",
* "threadId": "1712bc1dc22da2a2",
* "labelIds": [
* "UNREAD",
* "IMPORTANT",
* "CATEGORY_PERSONAL",
* "INBOX"
* ],
* "snippet": "Hello, this is a test email with attachments..",
* "historyId": "759379",
* "internalDate": "1585577056000",
* "payload": {
* "partId": "",
* "mimeType": "multipart/mixed",
* "filename": "",
* "headers": [
* {
* "name": "Delivered-To",
* "value": "chilkat.support@gmail.com"
* },
* {
* "name": "Received",
* "value": "..."
* },
* {
* "name": "X-Received",
* "value": "..."
* },
* {
* "name": "X-Google-Smtp-Source",
* "value": "..."
* },
* {
* "name": "X-Received",
* "value": "..."
* },
* {
* "name": "ARC-Seal",
* "value": "..."
* },
* {
* "name": "ARC-Message-Signature",
* "value": "..."
* },
* {
* "name": "ARC-Authentication-Results",
* "value": "..."
* },
* {
* "name": "Return-Path",
* "value": "..."
* },
* {
* "name": "Received",
* "value": "..."
* },
* {
* "name": "Received-SPF",
* "value": "..."
* },
* {
* "name": "Authentication-Results",
* "value": "..."
* },
* {
* "name": "DKIM-Signature",
* "value": "..."
* },
* {
* "name": "DKIM-Signature",
* "value": "..."
* },
* {
* "name": "Subject",
* "value": "Test email with attachments"
* },
* {
* "name": "From",
* "value": "..."
* },
* {
* "name": "To",
* "value": "..."
* },
* {
* "name": "Date",
* "value": "Mon, 30 Mar 2020 14:04:16 +0000"
* },
* {
* "name": "Mime-Version",
* "value": "1.0"
* },
* {
* "name": "Content-Type",
* "value": "multipart/mixed; boundary=\"=_wNvwW3YTnQBZ24pmfFNfay3S6M-pHT7KdZIkXwYF-BFiPYNE\""
* },
* {
* "name": "References",
* "value": "..."
* },
* {
* "name": "X-Mailer",
* "value": "..."
* },
* {
* "name": "Thread-Index",
* "value": "AQHWBpwYB0UZvgGPT1KluJJUCF0BGg=="
* },
* {
* "name": "Thread-Topic",
* "value": "Test email with attachments"
* },
* {
* "name": "Message-ID",
* "value": "..."
* },
* {
* "name": "X-SES-Outgoing",
* "value": "2020.03.30-54.240.27.106"
* },
* {
* "name": "Feedback-ID",
* "value": "..."
* }
* ],
* "body": {
* "size": 0
* },
* "parts": [
* {
* "partId": "0",
* "mimeType": "multipart/alternative",
* "filename": "",
* "headers": [
* {
* "name": "Content-Type",
* "value": "multipart/alternative; boundary=\"=_wNvwHW2hdOZkYPaJAhdOY4+XBEFNAcvIZ1sQcW4JkBcAdDqA\""
* }
* ],
* "body": {
* "size": 0
* },
* "parts": [
* {
* "partId": "0.0",
* "mimeType": "text/plain",
* "filename": "",
* "headers": [
* {
* "name": "Content-Type",
* "value": "text/plain; charset=UTF-8"
* },
* {
* "name": "Content-Transfer-Encoding",
* "value": "7bit"
* }
* ],
* "body": {
* "size": 129,
* "data": "SGVsbG8sIHRoaXMgaXMgYSB0ZXN0IGVtYWlsIHdpdGggYXR0YWNobWVudHMuLg0KIA0KIA0KIA0KLS0gDQogQmVzdCBSZWdhcmRzLA0KIE1hdHQgRmF1c2V5DQogQ2hpbGthdCBTb2Z0d2FyZSwgSW5jLiANCg0KIA0KDQogDQog"
* }
* },
* {
* "partId": "0.1",
* "mimeType": "multipart/related",
* "filename": "",
* "headers": [
* {
* "name": "Content-Type",
* "value": "multipart/related; boundary=\"=_wNvw-LQZP2xD5vBm4q4esgoD5F4j3w+DRPUkkzOidpnpXAre\""
* }
* ],
* "body": {
* "size": 0
* },
* "parts": [
* {
* "partId": "0.1.0",
* "mimeType": "text/html",
* "filename": "",
* "headers": [
* {
* "name": "Content-Type",
* "value": "text/html; charset=utf-8"
* },
* {
* "name": "Content-Transfer-Encoding",
* "value": "7bit"
* }
* ],
* "body": {
* "size": 530,
* "data": "PGh0bWw-DQogIDxoZWFkPg0KDQogICAgPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPg0KICA8L2hlYWQ-DQogIDxib2R5Pg0KICAgIEhlbGxvLCB0aGlzIGlzIGE8Zm9udCBjb2xvcj0iI2ZmMDAwMCI-IHRlc3Q8L2ZvbnQ-IGVtYWlsIHdpdGgNCiAgICBhdHRhY2htZW50cy4uPGJyPg0KICAgIDxicj4NCiAgICA8aW1nIG1vei1kby1ub3Qtc2VuZD0iZmFsc2UiDQogICAgICBzcmM9ImNpZDpwYXJ0MS5GMEI1MzVEQi5DQjZFN0ExMkBjaGlsa2F0c29mdC5jb20iIGFsdD0ic2VhaG9yc2UiDQogICAgICB3aWR0aD0iMTIwIiBoZWlnaHQ9IjEyMCI-PGJyPg0KICAgIDxkaXYgY2xhc3M9Im1vei1zaWduYXR1cmUiPi0tIDxicj4NCiAgICAgIEJlc3QgUmVnYXJkcyw8YnI-DQogICAgICBNYXR0IEZhdXNleTxicj4NCiAgICAgIENoaWxrYXQgU29mdHdhcmUsIEluYy4NCiAgICAgIDxwPg0KICAgICAgPC9wPg0KICAgIDwvZGl2Pg0KICA8L2JvZHk-DQo8L2h0bWw-DQo="
* }
* },
* {
* "partId": "0.1.1",
* "mimeType": "image/jpeg",
* "filename": "seahorse.jpg",
* "headers": [
* {
* "name": "Content-Type",
* "value": "image/jpeg"
* },
* {
* "name": "Content-Id",
* "value": "\u003cpart1.F0B535DB.CB6E7A12@chilkatsoft.com\u003e"
* },
* {
* "name": "Content-Disposition",
* "value": "inline; filename=seahorse.jpg"
* },
* {
* "name": "Content-Transfer-Encoding",
* "value": "base64"
* }
* ],
* "body": {
* "attachmentId": "ANGjdJ-Z1c9gUGsEzexYYEsF5nLHGUaNiZQs5HkuFQVPo5jq1eze8poigmarvERUIRj1coKUaftiQPWhiZWaFyLDcyjFbfLdjWyyO3AxRO8pY5liAhVp1bt_5f79Nk0vfnZXL0OnZmNAMdrcFe645DbsajwDZcoYnWVcsV9Fe6PCNq41e6XW8Ko4Ex7zMzkATiwlLyx0RLcR0hl-FuZ-UVpQI0JeMTkNi4eN5-9L4dRU7HTo9qEyFW_p3__vXrnEJvmEvWXNUqxKLktcZvkvql6mnAVMDiIapqsE6x0EAvFobre7sf1_T6ieVlA-m92vrtELC2HHdxzkU-qhC_LuoOSOz8nd8tfWsrB8zex0v6NFFP9mJmBUb1QGtCGTxLdI40z_LdMOSiaqmeCq4o_s",
* "size": 24388
* }
* }
* ]
* }
* ]
* },
* {
* "partId": "1",
* "mimeType": "application/pdf",
* "filename": "helloWorld.pdf",
* "headers": [
* {
* "name": "Content-Type",
* "value": "application/pdf; name=helloWorld.pdf"
* },
* {
* "name": "Content-Transfer-Encoding",
* "value": "base64"
* },
* {
* "name": "Content-Disposition",
* "value": "attachment; filename=helloWorld.pdf"
* }
* ],
* "body": {
* "attachmentId": "ANGjdJ-oy3aCuZISJKLAhUdaEksCEklbAPyMaWzFgqOMGbPCRkgwgeu_Kttd99C17OBTHROkDZGekibTKWXGfscB5ww7fw4E65_V1dQ-jHhb2TD1Cdm58-BbNw2iDxzptco8iILPiSnLLfFn5Ps7nsRcxHaGTt3r0yqFKCuIYNnPK1vM04BXI_cfzo-HnI4I3tD6oHNHOGVQrL01MdShFQjPELPUjXM8z1qs7Kom-QyvV1iOldUN-66UuhynsmDX-CMM5TIdB-8KD_lmdhf-0DqG8JnCA20XpXyfqwS8XFkPA-t-QSjb7SdkHQFtQ4lz2PcBREFzZ2eI5j0l0Y_dQHRPYTeMwkVl1yl4MfFT4C4iso3VSF-eqaIjiFCbXKCFNyeEIW5WFsv189dhlSqU",
* "size": 934
* }
* },
* {
* "partId": "2",
* "mimeType": "application/x-gzip",
* "filename": "hamlet.xml.gz",
* "headers": [
* {
* "name": "Content-Type",
* "value": "application/x-gzip; name=hamlet.xml.gz"
* },
* {
* "name": "Content-Transfer-Encoding",
* "value": "base64"
* },
* {
* "name": "Content-Disposition",
* "value": "attachment; filename=hamlet.xml.gz"
* }
* ],
* "body": {
* "attachmentId": "ANGjdJ9rvj1ebIc-f0cXG0kwsb6pDBkRCNk3IQXbJ5z0-s2mEcVat3Pp6pVm3rTkRLOyeXHzRcTuel7nxRFJX6WVAKtG-5B-GL_b6DlsOWOzH4A_IKlyJ9U4aeWT02CgQL8oRwlCu1h0BtnY6lT8zureboGOqR7qoa-i5jH8xr6ds0nUDZp71lAwfOjji3eG6Wg6HfzWzWUThYPH3ba0_q35Jii8JIMhyJwwZnGjN3lvW_VhN6UIL1DIpop95b8rdwJdpyUavm7VhGtdNrI-mpgWQtT7WIAdIe6a-O74Zf4AB7uG7bp9R-IMBqQT-1jQqkN2_xlSpe3meWbuNu-4zsYfXN-IqM-Iy4dudAXjt0aY3Y8zxuHfW5qT7o4u8wSszhTIjM1j8lt-N7GZqnwJ",
* "size": 77409
* }
* },
* {
* "partId": "3",
* "mimeType": "text/plain",
* "filename": "brasil_cert.pem",
* "headers": [
* {
* "name": "Content-Type",
* "value": "text/plain; name=brasil_cert.pem"
* },
* {
* "name": "Content-Transfer-Encoding",
* "value": "base64"
* },
* {
* "name": "Content-Disposition",
* "value": "attachment; filename=brasil_cert.pem"
* }
* ],
* "body": {
* "attachmentId": "ANGjdJ8nGD_xRHvjDwNIaSUleWCWk15ksUleks0fJ29gfGVOebzjBOUnAHYgKPefUQ6d6ExtqYubpvGCka1kJAB4gFwsnhQeflBhFNkORBqtb6FAGq0FcNgrbuxyKywmoHOUV4GDsNs4OGroEcFhBeZNQ8XKEdEoaO8ht8DARn2LncjxioQ4TmZ6jawmMF-mLbW1mz4QjwNir5jLOsE11tYZV2tLDoqjsubKeJJA8xojWo9r50zWfJFgWJKXZJwyNvKyZTwLmmBL_ATFxLFp4Nvo4K37uuVdUCG8WXiWwNr0oIV1RZOd_ZOA7M6Jif0wUcppJdxXRqlsFJqGlcVsLowkVGrJNAMe-fLY1x4w5od3axZIdZQgBPlVRKYYu5xopPTrLJsn4ld7pNyAhpZW",
* "size": 2952
* }
* },
* {
* "partId": "4",
* "mimeType": "application/x-zip-compressed",
* "filename": "helloWorld.zip",
* "headers": [
* {
* "name": "Content-Type",
* "value": "application/x-zip-compressed; name=helloWorld.zip"
* },
* {
* "name": "Content-Transfer-Encoding",
* "value": "base64"
* },
* {
* "name": "Content-Disposition",
* "value": "attachment; filename=helloWorld.zip"
* }
* ],
* "body": {
* "attachmentId": "ANGjdJ9nWglkRNneBVGFk5GwSg83COa0zBeiTAvoMYniPklY03-w93dmEVHJTB9CAu5WMFW_yhV4ou2oX2w9SlpZjjyTgSc7sfYWeuX3pt29z67agy9WUVYeNGpo_30LSPgeyNk_Nm0DTAaektJTEMSy65rjRyK03VkHahNpMLY6Kd_pdfrk50oceuXzwNJZ-V-bftmIluueoQMqLcWQSGBRvEdIcl6EcPFFw8KuMLrjZZJwq8_bb8uM6zUvV23Q9LsLTgWg8FaBWejBf0wuIFXl3ZhtSLa-Y8OXCApHPdUnn45hccAzaQEmy4ZG7cgvCdN_jA9eFX46HYHty7ewleKPFGLTVof2JWsMiIi9BPqfohqQ5FPm1WXlGG_bOHvaMdoWcoqbKMMvF8lWZsfz",
* "size": 174
* }
* }
* ]
* },
* "sizeEstimate": 152847
* }
loJson1 = CreateObject('Chilkat.JsonObject')
lcId = loJson.StringOf("id")
lcThreadId = loJson.StringOf("threadId")
lcSnippet = loJson.StringOf("snippet")
lcHistoryId = loJson.StringOf("historyId")
lcInternalDate = loJson.StringOf("internalDate")
lcPayloadPartId = loJson.StringOf("payload.partId")
lcPayloadMimeType = loJson.StringOf("payload.mimeType")
lcPayloadFilename = loJson.StringOf("payload.filename")
lnPayloadBodySize = loJson.IntOf("payload.body.size")
lnSizeEstimate = loJson.IntOf("sizeEstimate")
i = 0
lnCount_i = loJson.SizeOfArray("labelIds")
DO WHILE i < lnCount_i
loJson.I = i
lcStrVal = loJson.StringOf("labelIds[i]")
i = i + 1
ENDDO
i = 0
lnCount_i = loJson.SizeOfArray("payload.headers")
DO WHILE i < lnCount_i
loJson.I = i
lcName = loJson.StringOf("payload.headers[i].name")
lcValue = loJson.StringOf("payload.headers[i].value")
i = i + 1
ENDDO
i = 0
lnCount_i = loJson.SizeOfArray("payload.parts")
DO WHILE i < lnCount_i
loJson.I = i
lcPartId = loJson.StringOf("payload.parts[i].partId")
lcMimeType = loJson.StringOf("payload.parts[i].mimeType")
lcFilename = loJson.StringOf("payload.parts[i].filename")
lnBodySize = loJson.IntOf("payload.parts[i].body.size")
lcBodyAttachmentId = loJson.StringOf("payload.parts[i].body.attachmentId")
j = 0
lnCount_j = loJson.SizeOfArray("payload.parts[i].headers")
DO WHILE j < lnCount_j
loJson.J = j
lcName = loJson.StringOf("payload.parts[i].headers[j].name")
lcValue = loJson.StringOf("payload.parts[i].headers[j].value")
j = j + 1
ENDDO
j = 0
lnCount_j = loJson.SizeOfArray("payload.parts[i].parts")
DO WHILE j < lnCount_j
loJson.J = j
lcPartId = loJson.StringOf("payload.parts[i].parts[j].partId")
lcMimeType = loJson.StringOf("payload.parts[i].parts[j].mimeType")
lcFilename = loJson.StringOf("payload.parts[i].parts[j].filename")
lnBodySize = loJson.IntOf("payload.parts[i].parts[j].body.size")
lcBodyData = loJson.StringOf("payload.parts[i].parts[j].body.data")
k = 0
lnCount_k = loJson.SizeOfArray("payload.parts[i].parts[j].headers")
DO WHILE k < lnCount_k
loJson.K = k
lcName = loJson.StringOf("payload.parts[i].parts[j].headers[k].name")
lcValue = loJson.StringOf("payload.parts[i].parts[j].headers[k].value")
k = k + 1
ENDDO
k = 0
lnCount_k = loJson.SizeOfArray("payload.parts[i].parts[j].parts")
DO WHILE k < lnCount_k
loJson.K = k
lcPartId = loJson.StringOf("payload.parts[i].parts[j].parts[k].partId")
lcMimeType = loJson.StringOf("payload.parts[i].parts[j].parts[k].mimeType")
lcFilename = loJson.StringOf("payload.parts[i].parts[j].parts[k].filename")
lnBodySize = loJson.IntOf("payload.parts[i].parts[j].parts[k].body.size")
lcBodyData = loJson.StringOf("payload.parts[i].parts[j].parts[k].body.data")
lcBodyAttachmentId = loJson.StringOf("payload.parts[i].parts[j].parts[k].body.attachmentId")
loJson.ObjectOf2("payload.parts[i].parts[j].parts[k]",loJson1)
lnI1 = 0
lnCount_i1 = loJson1.SizeOfArray("headers")
DO WHILE lnI1 < lnCount_i1
loJson1.I = lnI1
lcName = loJson1.StringOf("headers[i].name")
lcValue = loJson1.StringOf("headers[i].value")
lnI1 = lnI1 + 1
ENDDO
k = k + 1
ENDDO
j = j + 1
ENDDO
i = i + 1
ENDDO
RELEASE loHttp
RELEASE loResp
RELEASE loJson
RELEASE loJson1