compile insert rti_HTTP_Download_Equates /* ** Copyright (C) 2013-2019 Revelation Software Inc. All Rights Reserved ** Author : Mr C Date : June 2019 Purpose : Equates for use with the RTI_HTTP_DOWNLOAD stored procedure Parameters ========== uiParams - [required] This is an @fm delimited array of UI info for the download process: <1> Parent Window [optional] ID of the parent window for the download dialog. If not specified the caller must provide a CallBackID to receive the returned response content. <2> Modal Flag [optional]. If TRUE$ then the parent window will be disabled for the duration of the download. <3> EndDialogAsyncID [optional/required **] Callback token for the download to return to the parent window's ENDDIALOG event as the AsyncID parameter. <4> CallbackProc [optional/required **] Name of a stored procedure to call with the response data if "EndDialogAsyncID" is not specified. The Callback proc must support the following interface: proc( callbackID, responseContent ) <5> CallbackID [optional, required for CallbackProc] If a CallBackProc is specified this field contains a token returned to the CallBackProc with the response content. See "Callback details" below for more info. <6> Loading text [optional] Contains text to display in the dialog - defaults to the URL <7> Show Progress in Taskbar [optional] If TRUE$ then sync the progress bar to the parent window's task bar icon. Defaults to FALSE$. <8> Hide UI [optional] If TRUE$ then don't show the progress dialog. ** Note: If you don't specify EndDialogAsyncID or CallbackProc in uiParams you will not be notified of the result of the download. url - [required] Contains the URL to download from method - [optional] HTTP verb (GET,POST,HEAD,DELETE etc). Defaults to "GET payload - [optional] Content to send to the server as part of the request credentials - [optional] Username and password to send to the server <1> Username <2> Password> headers - [optional] - Dynamic array of request headers to send to the server in the format: <1> @vm'd list of header names <2> @vm'd list of header values timeoutInfo - [optional] Timeout in milliseconds. responseFile- [optional] Name of a file to download the response content to Returns ======= TRUE$ if the download was started sucessfully, or FALSE$ otherwise. Error information is returned via Get/Set_Status(). Comments ======== This function is designed to mimic the existing OLE_GETWEBPAGE stored proc and provide an example of how to use the HTTPCLIENT control to provide a UI for a download. As such the arguments passed have been kept to the same format as much as possible. Changes from OLE_GETWEBPAGE are: 1) "uiParams" has been added so we can specify UI information. 2) "timeoutInfo" only supports a single value - the HTTPCLIENT control does not have separate timeout parameters for different states 3) "responseBody" has been removed - the actual response content is returned directly via the parent window's ENDDIALOG event or the specified callback proc, unless a responseFile name was specified, in which case the contents are writtent there instead. 4) This routine returns a simple boolean value. There is no "ResponseText" property as such, and because this is asynchronous the actual response content is returned directly via the parent window's ENDDIALOG event or the specified callback proc. Amended Date Reason ======= ==== ====== */ /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// #ifndef _RTI_HTTP_DOWNLOAD_EQUATES_ #define _RTI_HTTP_DOWNLOAD_EQUATES_ /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// declare function rti_HTTP_Download /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// /* Example for using with the ENDDIALOG event on a parent window: url = "https://www.revelation.com" method = "GET" // AsyncID is just a string you set that is passed back with the response // so that you can recognize it easily in the ENDDIALOG event. it can // be anything you wish - for example we're just using the URL along // with a "$HTTPRESPONSE:" prefix here. asyncID = "$HTTPRESPONSE:: "url" uiParams = "" uiParams = @window uiParams = TRUE$ uiParams = asyncID uiParams = "Getting Rev homepage" uiParams = TRUE$ call rti_HTTP_Download( uiParams, url, method ) Example for using a stored procedure callback - in this case url = "https://www.revelation.com" method = "GET" // CallBackID is just a string you set that is passed back with the // response so that you can recognize it easily in the ENDDIALOG event. // It canbe anything you wish - for example we're just using the URL // along with a "$HTTPRESPONSE:" prefix here: callBackID = "$HTTPRESPONSE:: "url" uiParams = "" uiParams = @window uiParams = TRUE$ uiParams = "MY_HTTP_RESPONSE_HANDLER" uiParams = callBackID uiParams = "Getting Rev homepage" uiParams = TRUE$ call rti_HTTP_Download( uiParams, url, method ) */ /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // uiParams constants // // <1> ParentWin // <2> Modal Flag // <3> EndDialogAsyncID // <4> CallbackProc // <5> CallbackID // <6> Download Text // <7> SyncProgress // <8> Hide UI equ HDL_UIPARAM_POS_PARENTWIN$ to 1 equ HDL_UIPARAM_POS_MODAL$ to 2 equ HDL_UIPARAM_POS_ENDDIALOGASYNCID$ to 3 equ HDL_UIPARAM_POS_CALLBACKPROC$ to 4 equ HDL_UIPARAM_POS_CALLBACKID$ to 5 equ HDL_UIPARAM_POS_DOWNLOADTEXT$ to 6 equ HDL_UIPARAM_POS_SYNCPROGRESS$ to 7 equ HDL_UIPARAM_POS_HIDEUI$ to 8 // credentials constants equ HDL_CRED_POS_USERNAME$ to 1 equ HDL_CRED_POS_PASSWORD$ to 2 // headers constants equ HDL_HDR_POS_NAMES$ to 1 equ HDL_HDR_POS_VALUES$ to 2 /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // Callback details // ================= // // When the download dialog calls back to the target event or proc it // passes two items of infomation: // // 1) The response content // 2) An array of response information: // // <1> AsyncID or CallBackID // <2> Response Status Code // <3> Response Status Text // <4> Content Length // <5> Response Headers // <6> Bytes Received // // // If calling back to the ENDDIALOG event the response content is passed // in the "dialogValue" parameter, and the response info is passed in the // "asyncID" parameter // // call post_Event( parentID, "ENDDIALOG", @window, responseContent, responseInfo ) // // If calling back to a stored procedure the responseInfo is passed as the // first parameter, and the responseContent as the second: // // call @procID( responseInfo, responseContent ) equ HDL_RSPINFO_POS_ID$ to 1 equ HDL_RSPINFO_POS_STATUSCODE$ to 2 equ HDL_RSPINFO_POS_STATUSTEXT$ to 3 equ HDL_RSPINFO_POS_CONTENTLEN$ to 4 equ HDL_RSPINFO_POS_HEADERS$ to 5 equ HDL_RSPINFO_POS_BYTESRECEIVED$ to 6 /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// #endif /////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////