Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) SharePoint -- Download Newer FilesSee more SharePoint ExamplesDemonstrates how to download all files from a SharePoint folder that are newer than the local files.
Use ChilkatAx-win32.pkg Procedure Test Handle hoHttp Variant vSbJson Handle hoSbJson Boolean iSuccess Handle hoFac Handle hoJson Integer iNumFiles Variant vLastModRemote Handle hoLastModRemote Variant vLastModLocal Handle hoLastModLocal Handle hoLocalPath Handle hoFileUrl Integer i String sFilename String sSLastModified Boolean iBDownload Integer iNumSeconds String sTemp1 String sTemp2 Boolean bTemp1 // 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" Get Create (RefClass(cComChilkatHttp)) To hoHttp If (Not(IsComObjectCreated(hoHttp))) Begin Send CreateComObject of hoHttp End // If SharePoint Windows classic authentication is used, then set the // Login, Password, LoginDomain, and NtlmAuth properties. Set ComLogin Of hoHttp To "SHAREPOINT_USERNAME" Set ComPassword Of hoHttp To "SHAREPOINT_PASSWORD" Set ComLoginDomain Of hoHttp To "SHAREPOINT_NTLM_DOMAIN" Set ComNtlmAuth Of hoHttp To True // ------------------------------------------------------------------------- // 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 // ------------------------------------------------------------------------- // First we'll download a list of all the files in the /Documents folder. // This provides the names and last-modified date/times of the files located // on the SharePoint server. Set ComAccept Of hoHttp To "application/json;odata=verbose" Set ComAcceptCharset Of hoHttp To "utf-8" Get Create (RefClass(cComChilkatStringBuilder)) To hoSbJson If (Not(IsComObjectCreated(hoSbJson))) Begin Send CreateComObject of hoSbJson End Get pvComObject of hoSbJson to vSbJson Get ComQuickGetSb Of hoHttp "https://SHAREPOINT_HTTPS_DOMAIN/_api/web/GetFolderByServerRelativeUrl('/Documents')/Files" vSbJson To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoHttp To sTemp1 Showln sTemp1 Procedure_Return End // Before proceeding, make sure the local directory where we'll be downloading files exists. Get Create (RefClass(cComCkFileAccess)) To hoFac If (Not(IsComObjectCreated(hoFac))) Begin Send CreateComObject of hoFac End Get ComDirEnsureExists Of hoFac "qa_output/sharepoint/Documents" To iSuccess // OK.. load the JSON and iterate over each file Get Create (RefClass(cComChilkatJsonObject)) To hoJson If (Not(IsComObjectCreated(hoJson))) Begin Send CreateComObject of hoJson End Get pvComObject of hoSbJson to vSbJson Get ComLoadSb Of hoJson vSbJson To iSuccess Get ComSizeOfArray Of hoJson "d.results" To iNumFiles Showln "Number of Files in the SharePoint /Documents folder = " iNumFiles Get Create (RefClass(cComCkDateTime)) To hoLastModRemote If (Not(IsComObjectCreated(hoLastModRemote))) Begin Send CreateComObject of hoLastModRemote End Get Create (RefClass(cComChilkatStringBuilder)) To hoLocalPath If (Not(IsComObjectCreated(hoLocalPath))) Begin Send CreateComObject of hoLocalPath End Get Create (RefClass(cComChilkatStringBuilder)) To hoFileUrl If (Not(IsComObjectCreated(hoFileUrl))) Begin Send CreateComObject of hoFileUrl End Move 0 To i While (i < iNumFiles) Set ComI Of hoJson To i Get ComStringOf Of hoJson "d.results[i].Name" To sFilename Get ComStringOf Of hoJson "d.results[i].TimeLastModified" To sSLastModified Showln (i + 1) ": " sFilename " (" sSLastModified ")" Get ComSetFromTimestamp Of hoLastModRemote sSLastModified To iSuccess Move False To iBDownload // Check to see if the local file exists. If not, then download. Get ComSetString Of hoLocalPath "qa_output/sharepoint/Documents/" To iSuccess Get ComAppend Of hoLocalPath sFilename To iSuccess Get ComFileExists Of hoFac (ComGetAsString(hoLocalPath)) To bTemp1 If (bTemp1 <> True) Begin Showln "This file does not exist locally." Move True To iBDownload End Else Begin // Get the local file's date time and compare with the remote file date/time. Get ComGetAsString Of hoLocalPath To sTemp1 Get ComGetLastModified Of hoFac sTemp1 To vLastModLocal If (IsComObject(vLastModLocal)) Begin Get Create (RefClass(cComCkDateTime)) To hoLastModLocal Set pvComObject Of hoLastModLocal To vLastModLocal End Get ComLastMethodSuccess Of hoFac To bTemp1 If (bTemp1 = True) Begin // Get the difference in seconds between the local and remote last-modified times. // if the return value is negative, then the caller's time is // older than the argument. (in this case, a negative return value means // the local file is older than the remote file. // Note: The DiffSeconds method was found to be missing in the Chilkat .NET build // (and possibly in other builds). It will be present in the v9.5.0.67 release and later. Get pvComObject of hoLastModRemote to vLastModRemote Get ComDiffSeconds Of hoLastModLocal vLastModRemote To iNumSeconds If (iNumSeconds < 0) Begin Showln "The local file is older than the remote file." Move True To iBDownload End Send Destroy of hoLastModLocal End Else Begin Showln "Unable to get the local file's last-modified date/time." Get ComLastErrorText Of hoFac To sTemp1 Showln sTemp1 End End If (iBDownload = True) Begin Get ComSetString Of hoFileUrl "https://SHAREPOINT_HTTPS_DOMAIN/_api/web/GetFolderByServerRelativeUrl('/Documents')/Files('" To iSuccess Get ComAppend Of hoFileUrl sFilename To iSuccess Get ComAppend Of hoFileUrl "')/$value" To iSuccess Showln "Downloading " sFilename Get ComGetAsString Of hoFileUrl To sTemp1 Get ComGetAsString Of hoLocalPath To sTemp2 Get ComDownload Of hoHttp sTemp1 sTemp2 To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoHttp To sTemp1 Showln sTemp1 Procedure_Return End // Set the local file's last-modified date/time to that of the server's. Get ComGetAsString Of hoLocalPath To sTemp1 Get pvComObject of hoLastModRemote to vLastModRemote Get ComSetLastModified Of hoFac sTemp1 vLastModRemote To iSuccess End Move (i + 1) To i Loop Showln "All finished." End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.