Sample code for 30+ languages & platforms
PureBasic

SharePoint -- Get Folder Properties

See more SharePoint Examples

This example shows how to get the properties of a SharePoint folder. Specifically, it gets the properties of one of our test folders named "Briefing 02032017".

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkHttp.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkJsonObject.pb"

Procedure ChilkatExample()

    success.i = 0

    ; This requires the Chilkat API to have been previously unlocked.
    ; See Global Unlock Sample for sample code.

    ; -------------------------------------------------------------------------
    ; The following comments apply to SharePoint Windows classic authentication.
    ; -------------------------------------------------------------------------
    ; For example, imagine our SharePoint endpoint is https://xyzoffice.mycompany.com/
    ; The SHAREPOINT_NTLM_DOMAIN would be "mycompany.com"
    ; The SHAREPOINT_HTTPS_DOMAIN would be "xyzoffice.mycompany.com"
    ; Also, the SHAREPOINT_USERNAME would be just the name, not a full email address.
    ; for example, "chilkat" instead of "chilkat@mycompany.com"

    http.i = CkHttp::ckCreate()
    If http.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; If SharePoint Windows classic authentication is used, then set the 
    ; Login, Password, LoginDomain, and NtlmAuth properties.
    CkHttp::setCkLogin(http, "SHAREPOINT_USERNAME")
    CkHttp::setCkPassword(http, "SHAREPOINT_PASSWORD")
    CkHttp::setCkLoginDomain(http, "SHAREPOINT_NTLM_DOMAIN")
    CkHttp::setCkNtlmAuth(http, 1)

    ; -------------------------------------------------------------------------
    ; The more common case is to use SharePoint Online authentication (via the SPOIDCRL cookie).
    ; If so, do not set Login, Password, LoginDomain, and NtlmAuth, and instead
    ; establish the cookie as shown at SharePoint Online Authentication
    ; -------------------------------------------------------------------------

    ; Indicate that we want a JSON reply
    CkHttp::setCkAccept(http, "application/json;odata=verbose")
    CkHttp::setCkAcceptCharset(http, "utf-8")

    ; If your Sharepoint site is within a site collection, then use "https://SHAREPOINT_HTTPS_DOMAIN/sites/teamA/_api/web/GetFolderByServerRelativeUrl('/sites/teamA/Briefing 02032017')" where "teamA" is the name of the site.
    sbJson.i = CkStringBuilder::ckCreate()
    If sbJson.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkHttp::ckQuickGetSb(http,"https://SHAREPOINT_HTTPS_DOMAIN/_api/web/GetFolderByServerRelativeUrl('/Briefing 02032017')",sbJson)
    If success <> 1
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkStringBuilder::ckDispose(sbJson)
        ProcedureReturn
    EndIf

    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoadSb(json,sbJson)
    CkJsonObject::setCkEmitCompact(json, 0)

    ; To get the number of items in the folder:
    itemCount.i = CkJsonObject::ckIntOf(json,"d.ItemCount")
    Debug "Number of items: " + Str(itemCount)

    ; The full JSON response looks like the following:
    Debug CkJsonObject::ckEmit(json)

    ; { 
    ;   "d": { 
    ;     "__metadata": { 
    ;       "id": "Web/GetFolderByServerRelativeUrl('/Briefing 02032017')",
    ;       "uri": "https://SHAREPOINT_HTTPS_DOMAIN/_api/Web/GetFolderByServerRelativeUrl('/Briefing%2002032017')",
    ;       "type": "SP.Folder"
    ;     },
    ;     "Files": { 
    ;       "__deferred": { 
    ;         "uri": "https://SHAREPOINT_HTTPS_DOMAIN/_api/Web/GetFolderByServerRelativeUrl('/Briefing%2002032017')/Files"
    ;       }
    ;     },
    ;     "ListItemAllFields": { 
    ;       "__deferred": { 
    ;         "uri": "https://SHAREPOINT_HTTPS_DOMAIN/_api/Web/GetFolderByServerRelativeUrl('/Briefing%2002032017')/ListItemAllFields"
    ;       }
    ;     },
    ;     "ParentFolder": { 
    ;       "__deferred": { 
    ;         "uri": "https://SHAREPOINT_HTTPS_DOMAIN/_api/Web/GetFolderByServerRelativeUrl('/Briefing%2002032017')/ParentFolder"
    ;       }
    ;     },
    ;     "Properties": { 
    ;       "__deferred": { 
    ;         "uri": "https://SHAREPOINT_HTTPS_DOMAIN/_api/Web/GetFolderByServerRelativeUrl('/Briefing%2002032017')/Properties"
    ;       }
    ;     },
    ;     "Folders": { 
    ;       "__deferred": { 
    ;         "uri": "https://SHAREPOINT_HTTPS_DOMAIN/_api/Web/GetFolderByServerRelativeUrl('/Briefing%2002032017')/Folders"
    ;       }
    ;     },
    ;     "ItemCount": 9,
    ;     "Name": "Briefing 02032017",
    ;     "ServerRelativeUrl": "/Briefing 02032017",
    ;     "WelcomePage": ""
    ;   }
    ; }
    ; 


    CkHttp::ckDispose(http)
    CkStringBuilder::ckDispose(sbJson)
    CkJsonObject::ckDispose(json)


    ProcedureReturn
EndProcedure