diff --git a/Symfony/src/Codebender/CompilerBundle/Handler/ArduinoCommandHandler.php b/Symfony/src/Codebender/CompilerBundle/Handler/ArduinoCommandHandler.php index 7d3c11c..f1addd5 100644 --- a/Symfony/src/Codebender/CompilerBundle/Handler/ArduinoCommandHandler.php +++ b/Symfony/src/Codebender/CompilerBundle/Handler/ArduinoCommandHandler.php @@ -11,29 +11,68 @@ namespace Codebender\CompilerBundle\Handler; + +require_once("System.php"); use System; class ArduinoCommandHandler { - function main($request, $params) + function main($request) { + //Todo: Test Input Validiy - $reply = $request; + //Todo: Extract files from request - //$eFile = extractFiles($request); + //Todo: Escape output and harden security - //$reply = fopen($eFile); + $tempfiles = $this->extractFiles($request); - return array("status" => "success", "returnfile" => $reply["test"]); + $this->deleteFiles($tempfiles); + return array("success" => "true","step" =>"0", "message" => $tempfiles); } - private function extractFiles($request, $params) + private function extractFiles($request) { // Extract the file from the array and save to /tmp // Return the file path + $tempfiles = array(); + + foreach ($request['files'] as $file => $contents) { + foreach ($contents as $key => $val) { + + if ($key == 'filename') { + $extension = pathinfo($key,PATHINFO_EXTENSION); + $filename = tempnam(sys_get_temp_dir(),$val); + $extfilename = $filename . '.' . $extension; + if(!rename($filename,$extfilename)) { + return false; + } + array_push($tempfiles,$newfilename); + } elseif ($key == 'content') { + + $tempfile = end($files); + $handle = fopen($tempfile,"r+"); + fwrite($handle,$val); + fclose($handle); + } + } + return $tempfiles; + } + + private function deleteFiles($fileList) { + foreach ($filelist as $file) { + unlink($file); + } } } + + + + + + +