-
Notifications
You must be signed in to change notification settings - Fork 36
/
Copy pathArduinoCommandHandler.php
78 lines (52 loc) · 1.48 KB
/
ArduinoCommandHandler.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
/**
\file
\brief Make compiler calls to the Arduino 1.6 Command Line interface.
\author Ethan Green
\copyright (c) 2015, The Codebender Development Team
\copyright Licensed under the Simplified BSD License
*/
namespace Codebender\CompilerBundle\Handler;
require_once("System.php");
use System;
class ArduinoCommandHandler
{
function main($request)
{
//Todo: Test Input Validiy
//Todo: Extract files from request
//Todo: Escape output and harden security
$tempfiles = $this->extractFiles($request);
$this->deleteFiles($tempfiles);
return array("success" => "true","step" =>"0", "message" => $tempfiles);
}
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);
}
}
}