die($resp); } echo "BUCKET created\n"; // done // Uploading object $file_length = strlen($file_data); // for Content-Length HTTP field echo $file_length . "<hr />"; $dt = gmdate('r'); // GMT based timestamp // preparing String to Sign (see AWS S3 Developer Guide) $string2sign = "PUT\n\n{$file_type}\n{$dt}\nx-amz-acl:public-read\n/{$aws_bucket}/{$aws_object}"; // preparing HTTP PUT query $query = "PUT /{$aws_bucket}/{$aws_object} HTTP/1.1\nHost: s3.amazonaws.com\nx-amz-acl: public-read\nConnection: keep-alive\nContent-Type: {$file_type}\nContent-Length: {$file_length}\nDate: {$dt}\nAuthorization: AWS {$aws_key}:" . amazon_hmac($string2sign) . "\n\n"; $query .= $file_data; $resp = sendREST($fp, $query); if (strpos($resp, '<Error>') !== false) { die($resp); } echo "FILE uploaded\n"; // done echo "Your file's URL is: http://s3.amazonaws.com/{$aws_bucket}/{$aws_object}\n"; fclose($fp); function generateName() { $length = 20; $name = ""; $possible = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; $i = 0; while ($i < $length) { $char = substr($possible, mt_rand(0, strlen($possible) - 1), 1);
function RESTresourceDetail() { $type = validatetype(processRESTarg(1, ARG_STRING)); $deleted = processInputVar('deleted', ARG_NUMERIC, 0); if ($deleted != 0 && $deleted != 1) { $deleted = 0; } $name = processInputVar('name', ARG_STRING, '*'); $tmp = processInputVar('prettyname', ARG_STRING, '*'); if ($name == '*' && $tmp != '*') { $name = $tmp; } if (is_null($type)) { RESTresponse(404, "invalid resource type"); return; } $subid = processRESTarg(2, ARG_NUMERIC, 0); if ($type == 'image') { $resources = getUserResources(array("imageAdmin", "imageCheckOut"), array('available'), 0, $deleted); } elseif ($type == 'computer') { $resources = getUserResources(array("computerAdmin"), array("administer"), 0, $deleted); } elseif ($type == 'config') { $resources = getUserResources(array("configAdmin"), array('available'), 0, $deleted); } # TODO #elseif ... if ($subid && !array_key_exists($subid, $resources[$type])) { RESTresponse(404, "specified resource does not exist"); printArray($resources[$type]); return; } if ($_SERVER['REQUEST_METHOD'] == 'DELETE') { if (RESTdeleteResource($type, $subid)) { RESTresponse(204); } else { RESTresponse(404, "specified resource does not exist 2"); } return; } if ($type == 'image') { $items = getImages($deleted, $subid); $data = array(); foreach (array_keys($resources[$type]) as $id) { if ($name != '*' && !preg_match("/^{$name}\$/i", $items[$id]['prettyname'])) { continue; } if (array_key_exists($id, $items)) { $data[$id] = $items[$id]; } } } elseif ($type == 'computer') { $data = getComputers(1, 0, $subid); } elseif ($type == 'config') { $cluster = processInputVar('cluster', ARG_NUMERIC, -1); $cfg = new Config(); $items = $cfg->getData($cfg->defaultGetDataArgs); $data = array(); foreach (array_keys($resources[$type]) as $id) { if ($name != '*' && !preg_match("/^{$name}\$/i", $items[$id]['name'])) { continue; } if (array_key_exists($id, $items)) { if ($cluster == -1 || $cluster == 0 && $items[$id]['configtype'] != 'Cluster' || $cluster == 1 && $items[$id]['configtype'] == 'Cluster') { $data[$id] = $items[$id]; } } } } #elseif ... if ($subid == 0) { sendREST(dataToJSON($data)); return; } sendREST(dataToJSON($data[$subid], 1)); }