![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java JavaScript Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) Invalidating Dependent Variables When Inputs ChangeSee more CURL ExamplesThis example demonstrates how After a multi-step execution plan runs successfully, variables such as However, if an input variable is cleared using For example, if Note: This example requires Chilkat v11.5.0 or greater. For more information, see https://www.chilkatsoft.com/curl_dependency_engine.asp
Use ChilkatAx-win32.pkg Procedure Test Boolean iSuccess Handle hoHttpCurl String sTargetCurl String sFnName Variant vJsonOAuth2 Handle hoJsonOAuth2 Variant vPlanJson Handle hoPlanJson String sTemp1 Boolean bTemp1 Move False To iSuccess Get Create (RefClass(cComChilkatHttpCurl)) To hoHttpCurl If (Not(IsComObjectCreated(hoHttpCurl))) Begin Send CreateComObject of hoHttpCurl End // The target curl command we ultimately want to execute. // It requires drive_id. Move "curl -X GET https://graph.microsoft.com/v1.0/drives/{{drive_id}}/root/children" To sTargetCurl // Define a helper function that produces drive_id. // This requires site_id. Move "getDrives" To sFnName Get ComAddFunction Of hoHttpCurl sFnName "curl -X GET https://graph.microsoft.com/v1.0/sites/{{site_id}}/drives" To iSuccess Get ComAddOutput Of hoHttpCurl sFnName "value[0].id" "drive_id" To iSuccess // Define another helper function that produces site_id. // This requires site_name. Move "getSite" To sFnName Get ComAddFunction Of hoHttpCurl sFnName "curl -X GET https://graph.microsoft.com/v1.0/sites/root:/sites/{{site_name}}" To iSuccess Get ComAddOutput Of hoHttpCurl sFnName "id" "site_id" To iSuccess // site_name is the starting known value. Send ComSetVar To hoHttpCurl "site_name" "test" // Configure OAuth2 authentication. Get Create (RefClass(cComChilkatJsonObject)) To hoJsonOAuth2 If (Not(IsComObjectCreated(hoJsonOAuth2))) Begin Send CreateComObject of hoJsonOAuth2 End Set ComEnableSecrets Of hoJsonOAuth2 To True Get ComUpdateString Of hoJsonOAuth2 "oauth2.client_id" "!!sharepoint|oauth2|client_id" To iSuccess Get ComUpdateString Of hoJsonOAuth2 "oauth2.client_secret" "!!sharepoint|oauth2|client_secret" To iSuccess Get ComUpdateString Of hoJsonOAuth2 "oauth2.scope" "https://graph.microsoft.com/.default" To iSuccess Get ComUpdateString Of hoJsonOAuth2 "oauth2.token_endpoint" "!!sharepoint|oauth2|token_endpoint" To iSuccess Get pvComObject of hoJsonOAuth2 to vJsonOAuth2 Get ComSetAuth Of hoHttpCurl vJsonOAuth2 To iSuccess // ----------------------------------------------------------------------------- // First execution plan: // site_id and drive_id are not known yet, so the full dependency chain is needed. // ----------------------------------------------------------------------------- Get Create (RefClass(cComChilkatJsonObject)) To hoPlanJson If (Not(IsComObjectCreated(hoPlanJson))) Begin Send CreateComObject of hoPlanJson End Set ComEmitCompact Of hoPlanJson To False Showln "Execution plan before first call:" Get pvComObject of hoPlanJson to vPlanJson Get ComExaminePlan Of hoHttpCurl sTargetCurl vPlanJson To iSuccess Get ComEmit Of hoPlanJson To sTemp1 Showln sTemp1 // Expected: // // { // "plan": [{ // "function": "getSite", // "inputs": ["site_name"], // "outputs": ["site_id"] // },{ // "function": "getDrives", // "inputs": ["site_id"], // "outputs": ["drive_id"] // },{ // "function": "targetCurl", // "inputs": ["drive_id"], // "outputs": [] // }] // } Get ComDoYourThing Of hoHttpCurl sTargetCurl To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoHttpCurl To sTemp1 Showln sTemp1 Procedure_Return End Showln "After first call:" Get ComGetVar Of hoHttpCurl "site_id" To sTemp1 Showln "site_id = " sTemp1 Get ComGetVar Of hoHttpCurl "drive_id" To sTemp1 Showln "drive_id = " sTemp1 // ----------------------------------------------------------------------------- // Second execution plan: // site_id and drive_id are now known, so only the target curl command is needed. // ----------------------------------------------------------------------------- Showln "Execution plan after first call:" Get pvComObject of hoPlanJson to vPlanJson Get ComExaminePlan Of hoHttpCurl sTargetCurl vPlanJson To iSuccess Get ComEmit Of hoPlanJson To sTemp1 Showln sTemp1 // Expected: // // { // "plan": [{ // "function": "targetCurl", // "inputs": ["drive_id"], // "outputs": [] // }] // } // ----------------------------------------------------------------------------- // Change the original input. // Because site_id was produced from site_name, changing site_name invalidates site_id. // Because drive_id depends on site_id, drive_id is also invalidated. // ----------------------------------------------------------------------------- // Note: Make sure this site exists on in your SharePoint... Send ComSetVar To hoHttpCurl "site_name" "anotherSite" Showln "After changing site_name:" Get ComVarDefined Of hoHttpCurl "site_id" To bTemp1 Showln "site_id defined? " bTemp1 Get ComVarDefined Of hoHttpCurl "drive_id" To bTemp1 Showln "drive_id defined? " bTemp1 // ----------------------------------------------------------------------------- // The execution plan is automatically rebuilt. // Since site_id and drive_id were invalidated, the full dependency chain is needed again. // ----------------------------------------------------------------------------- Showln "Execution plan after changing site_name:" Get pvComObject of hoPlanJson to vPlanJson Get ComExaminePlan Of hoHttpCurl sTargetCurl vPlanJson To iSuccess Get ComEmit Of hoPlanJson To sTemp1 Showln sTemp1 // Expected: // // { // "plan": [{ // "function": "getSite", // "inputs": ["site_name"], // "outputs": ["site_id"] // },{ // "function": "getDrives", // "inputs": ["site_id"], // "outputs": ["drive_id"] // },{ // "function": "targetCurl", // "inputs": ["drive_id"], // "outputs": [] // }] // } Get ComDoYourThing Of hoHttpCurl sTargetCurl To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoHttpCurl To sTemp1 Showln sTemp1 Procedure_Return End Showln "After running again with the new site_name:" Get ComGetVar Of hoHttpCurl "site_id" To sTemp1 Showln "site_id = " sTemp1 Get ComGetVar Of hoHttpCurl "drive_id" To sTemp1 Showln "drive_id = " sTemp1 // ----------------------------------------------------------------------------- // Clearing a variable also invalidates values that depend on it. // Here, clearing site_id also invalidates drive_id. // ----------------------------------------------------------------------------- Send ComClearVar To hoHttpCurl "site_id" Showln "After clearing site_id:" Get ComVarDefined Of hoHttpCurl "site_id" To bTemp1 Showln "site_id defined? " bTemp1 Get ComVarDefined Of hoHttpCurl "drive_id" To bTemp1 Showln "drive_id defined? " bTemp1 Showln "Execution plan after clearing site_id:" Get pvComObject of hoPlanJson to vPlanJson Get ComExaminePlan Of hoHttpCurl sTargetCurl vPlanJson To iSuccess Get ComEmit Of hoPlanJson To sTemp1 Showln sTemp1 // Expected: // // { // "plan": [{ // "function": "getSite", // "inputs": ["site_name"], // "outputs": ["site_id"] // },{ // "function": "getDrives", // "inputs": ["site_id"], // "outputs": ["drive_id"] // },{ // "function": "targetCurl", // "inputs": ["drive_id"], // "outputs": [] // }] // } End_Procedure |
||||
© 2000-2026 Chilkat Software, Inc. All Rights Reserved.