| 
<?php
 require( './core/autoload.php' );
 
 use Core\Downloader as Downloader;
 
 
 ini_set( 'display_errors', 1 );
 
 error_reporting( E_ALL );
 
 if( isset( $_POST[ 'download' ] ) ):
 
 
 $file = is_file( './files/' . @$_POST[ 'file' ] ) ?
 './files/' . @$_POST[ 'file' ]  // Download a file
 :
 @$_POST[ 'file' ];  // Download string, not prepend files folder path
 
 
 $save_as = !@$_POST['save_name'] ?: $_POST['save_name'];
 
 $resumable = ( bool ) @$_POST['resumable'];
 
 $speed = intval( @$_POST[ 'speed' ] );
 
 $mode = @$_POST['mode'] == 'data' ? Downloader::DOWNLOAD_DATA : Downloader::DOWNLOAD_FILE;
 
 $auth_username = @$_POST[ 'auth_username' ];
 $auth_password = @$_POST[ 'auth_password' ];
 
 $record = strlen( @$_POST[ 'record' ] ) > 1 ? 'recordBytesCallback' : ( int ) @$_POST[ 'record' ];
 
 $auto_exit = ( bool ) @$_POST['auto_exit'];
 
 // var_dump( $record );
 // exit();
 
 // Authentication Callback
 function authCallback( $php_user, $php_password )
 {
 return ( $php_user === 'login_user' && $php_password === 'login_password' ) ? true : false;
 }
 
 
 // Download Recorder Callback
 function recordBytesCallback( $bytes, $file_name )
 {
 $path = './bytes.txt';
 
 $file = fopen( $path, 'a+t' );
 
 fwrite( $file, $file_name . '   |   ' . $bytes . " Bytes \n\r" );
 
 fclose( $file );
 
 // file_put_contents( '', $file_name . '    |   ' . $bytes );
 }
 
 
 // Start Download
 $downloader = ( new Downloader( $file, $mode ) )
 ->resumable( $resumable )
 ->speedLimit( $speed )
 ->setDownloadName( $save_as )
 ->autoExit( true )
 // ->authenticate( 'authCallback' )
 ->recordDownloaded( $record );
 
 
 if( $auth_username && $auth_password )
 
 $downloader->authenticate( $auth_username, $auth_password );
 
 
 // Start Download
 $downloader->download();
 
 
 
 else: ?>
 
 <!DOCTYPE html>
 <html>
 <head>
 <title>Test Downloader Class @Ahmed Saad</title>
 <meta charset="utf-8" />
 <meta name="author" content="Ahmed Saad" />
 
 <style>
 
 body{
 /*text-align: center;*/
 color: #666;
 }
 
 form{
 width: 400px;
 margin: 30px auto;
 
 }
 
 form fieldset{
 border: 1px solid #999;
 border-radius: 0 3px 3px 3px;
 padding: 25px 14px;
 margin-bottom: 20px;
 }
 
 form legend{
 border: 1px solid #999;
 border-bottom: none;
 border-radius: 3px 3px 0 0;
 position: relative;
 left: 2px;
 bottom: -1px;
 padding: 5px 10px;
 
 }
 
 form fieldset, form legend{
 background: #fcfcfc;
 }
 
 input[type="text"]{
 width: 250px;
 border-radius: 4px;
 border: 1px solid #999;
 outline: none;
 
 }
 
 input[type="text"]:focus{
 box-shadow: 1px 1px 4px #6ae inset, -1px -1px 1px #6ae inset;
 border-color: #6af;
 }
 
 input[type="submit"]
 {
 /*padding: 4px;*/
 border-radius: 4px;
 border: 1px solid rgb( 80, 150, 240 );
 /*background: rgb( 100,170,230 );*/
 background: -webkit-linear-gradient( rgb( 100,170,240 ) 0, rgb( 54,150,230 ) 100% );
 color: rgb( 250, 250, 250 );
 cursor: pointer;
 }
 
 input[type="submit"]:hover{
 border-color: rgb( 10, 150, 240 );
 }
 
 input{
 line-height: 15px;
 padding: 5px;
 }
 
 .files{
 border-top: 1px dashed #999;
 margin-top: 20px;
 }
 
 .files li{
 color: rgb( 230, 100, 130 );
 }
 
 form label:not([for*="mode"]):not([for*="record"])
 {
 display:inline-block;
 width: 100px;
 }
 
 form label[for*="mode"] + input, form label[for*="record"] + input
 {
 margin-right: 30px;
 }
 
 
 input[name="download"]{
 display: block;
 margin: 0 auto;
 }
 
 fieldset h4
 {
 margin: 0 auto;
 text-align: center;
 color: rgb( 230, 100, 130 );
 }
 
 #auth_username, #auth_password{
 width: 117px;
 }
 
 
 </style>
 </head>
 <body>
 
 <div class="container">
 
 <?php
 
 if( $file = @$_GET['file'] ):
 ?>
 
 <!-- Prepare Sellected File -->
 <form method="POST">
 
 <legend>Sellect Download Options</legend>
 
 <fieldset>
 
 <h4><?= $file ?></h4>
 
 <!-- Hidden File Name -->
 <input type="hidden" name="file" value="<?= $file ?>" />
 
 <!-- Save Name -->
 <p>
 <label for="save_name">Save As</label>
 <input type="text" name="save_name" id="save_name" value="<?= $file ?>">
 </p>
 
 <!-- Use Resume -->
 <p>
 <label for="resumable">Use Resume</label>
 <input type="checkbox" name="resumable" id="resumable" checked>
 </p>
 
 <!-- Speed Limit -->
 <p>
 <label for="speed">Speed</label>
 <input type="text" name="speed" id="speed" placeholder="Unlimited 'use integers kBps'" value="">
 </p>
 
 <!-- Download Mode -->
 <p>
 <label>Mode</label>
 <label for="file_mode">File</label>
 <input type="radio" name="mode" id="file_mode" value="file" checked>
 
 <label for="data_mode">Data</label>
 <input type="radio" name="mode" id="data_mode" value="data">
 
 </p>
 
 <!-- Authenticate -->
 <p>
 <label>Authentication</label>
 <input type="text" name="auth_username" id="auth_username" placeholder="username">
 <input type="text" name="auth_password" id="auth_password" placeholder="password">
 </p>
 
 <!-- Record Downloaded Bytes -->
 <p>
 <label>Record Bytes</label>
 
 <label for="record_0">No</label>
 <input type="radio" name="record" id="record_0" value="0" checked>
 
 <label for="record_1">Yes</label>
 <input type="radio" name="record" id="record_1" value="1">
 
 <label for="record_callback">Callback</label>
 <input type="radio" name="record" id="record_callback" value="callback">
 </p>
 
 <!-- Auto Exit -->
 <p>
 <label for="auto_exit">Auto Exit</label>
 <input type="checkbox" name="auto_exit" id="auto_exit">
 </p>
 
 <!-- Download -->
 <input type="submit" name="download" value="Download" />
 
 </fieldset>
 
 </form>
 
 
 <?
 else:// Display Form To Enter File Name
 // get $files
 $files = scandir( './files/' );
 
 foreach( $files as $key => &$file )
 {
 $file_type = @pathinfo( $file )['extension'];
 
 $ignore = []; // [ 'php' => 1, 'html' => 1 ];
 
 if( !is_file( './files/' . $file ) || strpos( $file, '.DS' ) === 0 || @$ignore[ $file_type ] )
 {
 unset( $files[ $key ] );
 }
 }
 
 ?>
 
 <form method="GET">
 
 <legend>Type File Name To Download</legend>
 <fieldset>
 
 <input type="text" name="file" placeholder="filename..." validate />
 
 <input type="submit" value="Prepare" />
 
 <div class="files">
 <h4>existing files</h4>
 
 <?php
 if( $files )
 
 echo '<ul><li>' . implode( '</li><li>', $files ) . '</li></ul>';
 
 else
 
 echo '<h5>No Files Found</h5>';
 ?>
 
 </div>
 
 </fieldset>
 
 
 </form>
 
 <?php endif; ?>
 
 </div>
 
 </body>
 </html>
 
 <? endif;
 ?>
 |