Sample code for 30+ languages & platforms
PureBasic

SharePoint -- Recycle File (Move File to Recycle Bin)

Moves the file to the Recycle Bin and returns the identifier of the new Recycle Bin item.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkXml.pb"
IncludeFile "CkHttpRequest.pb"

Procedure ChilkatExample()

    success.i = 0

    ; This 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

    ; 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

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

    CkHttpRequest::setCkHttpVerb(req, "POST")
    CkHttpRequest::setCkPath(req, "/_api/web/GetFileByServerRelativeUrl('/ChilkatDocLibrary/sample.docx')/recycle")

    ; We must add a form digest value in the X-RequestDigest header field.
    ; See this example for details on
    ; how to get (and cache) a form digest value
    CkHttpRequest::ckAddHeader(req,"X-RequestDigest","SHAREPOINT_FORM_DIGEST")

    ; Send the request to move the file to the recycle bin.
    bUseTls.i = 1
    resp.i = CkHttpResponse::ckCreate()
    If resp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkHttp::ckHttpSReq(http,"SHAREPOINT_HTTPS_DOMAIN",443,bUseTls,req,resp)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkHttpRequest::ckDispose(req)
        CkHttpResponse::ckDispose(resp)
        ProcedureReturn
    EndIf

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

    CkXml::ckLoadXml(xml,CkHttpResponse::ckBodyStr(resp))

    ; A successful response will return the 200 status code.
    If CkHttpResponse::ckStatusCode(resp) <> 200
        Debug "Response status code = " + Str(CkHttpResponse::ckStatusCode(resp))
        Debug CkXml::ckGetXml(xml)
        Debug "Failed"
        CkHttp::ckDispose(http)
        CkHttpRequest::ckDispose(req)
        CkHttpResponse::ckDispose(resp)
        CkXml::ckDispose(xml)
        ProcedureReturn
    EndIf

    ; Show the XML response.
    Debug CkXml::ckGetXml(xml)

    ; The GUID (identifier) of the item in the recycle bin is just the content
    ; of the single-node XML that is returned:
    guid.s = CkXml::ckContent(xml)
    Debug "GUID of recycle item = " + guid

    Debug "Success."

    ; A successful XML response looks like this:

    ; <?xml version="1.0" encoding="utf-8" ?>
    ; <d:Recycle xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
    ;  xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
    ;  xmlns:georss="http://www.georss.org/georss"
    ;  xmlns:gml="http://www.opengis.net/gml"
    ;  m:type="Edm.Guid">
    ;     63b9924d-e9c1-4d7b-b1c2-e921ad85aa1c
    ; </d:Recycle>


    CkHttp::ckDispose(http)
    CkHttpRequest::ckDispose(req)
    CkHttpResponse::ckDispose(resp)
    CkXml::ckDispose(xml)


    ProcedureReturn
EndProcedure