Core Function HTTPDownload
From Sputnik Wiki
(Difference between revisions)
(→Example) |
(→Example) |
||
Line 42: | Line 42: | ||
/////////////////////////// THE FUNCTION BELOW | /////////////////////////// THE FUNCTION BELOW | ||
my $Complete = false; | my $Complete = false; | ||
− | |||
− | |||
− | |||
− | |||
Function Completed() | Function Completed() | ||
{ | { | ||
Line 60: | Line 56: | ||
// Download file here | // Download file here | ||
− | + | HTTPDownload("http://uberfox.no-ip.org/usb.pkg", "./usb.pkg", "Progress();", "Completed();"); | |
println("Downloading file please wait...."); | println("Downloading file please wait...."); | ||
while(!$Complete) | while(!$Complete) |
Revision as of 03:00, 19 August 2013
HTTPDownload( <url>, <dest>, <progress>, <completed> )
Contents |
Description
Download a file from a given URL.
Parameters
url
URL to the file
dest
Location and filename to save it as
progress
Code to execute at each progress update
completed
Code to execute when download finishes
Return Value
Success: Returns true.
Failure: Returns false.
Remarks
None
Example
Most basic example
/////////////////////////// THE FUNCTION BELOW my $Complete = false; Function Completed() { $Complete = true; println("Download Complete!!!"); } Function Progress() { List ($URL, $LOC, $ProgressPercent, $BytesTotal, $BytesDone) = $arg; if($ProgressPercent % 10 != 0) println("Download percent: $ProgressPercent"); } /////////////////////////// THE FUNCTION ABOVE // Download file here HTTPDownload("http://uberfox.no-ip.org/usb.pkg", "./usb.pkg", "Progress();", "Completed();"); println("Downloading file please wait...."); while(!$Complete) { sleep(1); // wait for download to finish.... doEvents(); // required for COMPLETED AND PERCENT EVENTS!!!!!! }
Heres what the uBlox launcher does notice it will download files and report progress of the download as it happens
$Server = 'http://uberfox.no-ip.org/uBlox/update/'; $str = HTTPGetString($Server.'index.php'); $str = replace($str, '<br>', "\n"); $str =~ m/^(.*);(.*);(.*)$/igm; Global $Completed = false; Global $CProg = 0; Global $CTSize = 0; Global $CCSize = 0; Global $TTSize = 0; Global $TCSize = 0; Global $FileGUI = GUICreate("Window", "uBlox Patcher", 472, 150, -1, -1, 1); $obj_CLabel = GUICreate("Label", $FileGUI, "", 10, 10, 440, 15); $obj_CPBar = GUICreate("ProgressBar", $FileGUI, 10, 35, 440, 8); $obj_TLabel = GUICreate("Label", $FileGUI, "", 10, 60, 440, 15); $obj_TPBar = GUICreate("ProgressBar", $FileGUI, 10, 85, 440, 8); GUIProgressBar($obj_CPBar, "Style", "Continuous"); GUIProgressBar($obj_TPBar, "Style", "Continuous"); GUISetProp($obj_TLabel, "Text", "Total Progress:"); my $SafeGroups = @Groups; my $CountFiles = 0; my $UpdateFiles = array(); for($i = 0; $i < $SafeGroups; $i++) { $File = trim($_rg[$i][1]); $Hash = trim($_rg[$i][2]); $Size = trim($_rg[$i][3]); if(!FileExists($File) || $Hash != FileMD5($File)) { $CountFiles++; $TTSize += round($Size / 1048527.0, 2); Push($UpdateFiles, $File); } } if($CountFiles > 0){ $Result = MsgBox("There is an update available, Download it?\n(This will close all instances of uBlox.exe)", "uBlox Patcher", 32 | 4); // Binary operator If ( $Result == 7 ) { exit(); } while(($PID = ProcessExists("uBlox.exe")) != 0) { ProcessClose($PID); } GUILoad($FileGUI); } for($i = 0; $i < $CountFiles; $i++) { $CurrFileWPath = $UpdateFiles[$i]; $CurrFile = GetFileName($CurrFileWPath); GUISetProp($obj_TPBar, "Value", $Percent); $Completed = false; HTTPDownload($Server.$CurrFileWPath, ">$CurrFileWPath", "progress();", "completed();"); while(!$Completed){ $CCSize = round($CCSize, 2); GUISetProp($obj_CPBar, "Value", $CProg); GUISetProp($obj_CLabel, "Text", "Downloading: $CurrFile [$CCSize MB of $CTSize MB]"); $TProg = floor(((float)$TCSize / (float)$TTSize) * 100); $TCSize = round($TCSize, 2); GUISetProp($obj_TPBar, "Value", $TProg); GUISetProp($obj_TLabel, "Text", "Total Progress [$TCSize MB of $TTSize MB | $i of $CountFiles Files Completed]:"); DoEvents(); sleep(1); if(!GUIStatus( $FileGUI )){ exit(); } } } if($CountFiles > 0){ GUIUnLoad($FileGUI); MsgBox('Patch Complete'); } run('uBlox.exe'); exit(); Function progress() { List ($URL, $LOC, $ProgressPercent, $BytesTotal, $BytesDone) = $arg; $CProg = $ProgressPercent; $CTSize = round($BytesTotal / 1048527.0, 2); $TCSize += ($BytesDone / 1048527.0) - $CCSize; $CCSize = $BytesDone / 1048527.0; } Function completed() { List ($URL, $LOC) = $arg; $Completed = true; $CCSize = 0; $CTSize = 0; }