Sample code for 30+ languages & platforms
PureBasic

Create a New GMail Label

See more GMail REST API Examples

Demonstrates how to create a new GMail label.

Chilkat PureBasic Downloads

PureBasic
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

    CkHttp::setCkAuthToken(http, "GMAIL-ACCESS-TOKEN")

    userId.s = "me"
    CkHttp::ckSetUrlVar(http,"userId",userId)

    ; Create the JSON to be sent in the HTTP request body.
    ; The name of the new label is "questions".
    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckUpdateString(json,"name","questions")
    CkJsonObject::ckUpdateString(json,"labelListVisibility","labelShow")
    CkJsonObject::ckUpdateString(json,"messageListVisibility","show")

    CkJsonObject::setCkEmitCompact(json, 0)
    Debug CkJsonObject::ckEmit(json)

    ; The JSON contains this:
    ; {
    ;   "name": "questions",
    ;   "labelListVisibility": "labelShow",
    ;   "messageListVisibility": "show"
    ; }

    url.s = "https://www.googleapis.com/gmail/v1/users/{$userId}/labels"
    resp.i = CkHttpResponse::ckCreate()
    If resp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkHttp::ckHttpJson(http,"POST",url,json,"application/json",resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(json)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    Debug "status = " + Str(CkHttpResponse::ckStatusCode(resp))

    ; A 200 response status indicate success.
    If CkHttpResponse::ckStatusCode(resp) <> 200
        Debug CkHttpResponse::ckBodyStr(resp)
        Debug "Failed."
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(json)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

    ; A successful repsonse contains JSON that looks like this:

    ; {
    ;  "id": "Label_43",
    ;  "name": "questions",
    ;  "messageListVisibility": "show",
    ;  "labelListVisibility": "labelShow"
    ; }

    Debug "response body:"
    Debug CkHttpResponse::ckBodyStr(resp)

    Debug "GMail label created!"


    CkHttp::ckDispose(http)
    CkJsonObject::ckDispose(json)
    CkHttpResponse::ckDispose(resp)


    ProcedureReturn
EndProcedure