Buildbot: Move checksum to JSON #7
@ -22,6 +22,7 @@ class Build {
|
||||
public $file_size;
|
||||
public $file_extension;
|
||||
public $release_cycle;
|
||||
public $sha256_checksum; // New property
|
||||
public $directory_lister;
|
||||
|
||||
public function __construct(string $file_path) {
|
||||
@ -83,6 +84,15 @@ class Build {
|
||||
$this->file_size = filesize($file_path);
|
||||
$this->file_extension = $file_extension;
|
||||
|
||||
// Check for existing .sha256 file.
|
||||
$sha256_file = $file_path . '.sha256';
|
||||
if (file_exists($sha256_file)) {
|
||||
$this->sha256_checksum = trim(str_replace(["\r", "\n", "\t"], '', file_get_contents($sha256_file)));
|
||||
} else {
|
||||
// Compute SHA256 checksum.
|
||||
$this->sha256_checksum = strtoupper(hash_file('sha256', $file_path));
|
||||
}
|
||||
|
||||
// Release cycle.
|
||||
//
|
||||
// NOTE: Keep it last, so the rule matcher can access all possible
|
||||
|
@ -8,11 +8,11 @@ class BuildsRenderer {
|
||||
$this->builds = $builds;
|
||||
}
|
||||
|
||||
public function renderJSON() {
|
||||
public function renderJSON($version = 1) {
|
||||
/* Return a JSON formatted list of builds. */
|
||||
$builds_json = array();
|
||||
foreach ($this->builds as $build) {
|
||||
$builds_json[] = array(
|
||||
$build_data = array(
|
||||
'url' => $this->getFileNameURL($build),
|
||||
'app' => $build->app,
|
||||
'version' => $build->version,
|
||||
@ -29,6 +29,16 @@ class BuildsRenderer {
|
||||
'file_extension' => $build->file_extension,
|
||||
'release_cycle' => $build->release_cycle,
|
||||
);
|
||||
|
||||
if ($version == 2) {
|
||||
// If version 2 is requested, skip any .sha256 files and add a checksum key-value entry
|
||||
if (substr($build->file_name, -7) === '.sha256') {
|
||||
continue;
|
||||
}
|
||||
$build_data['checksum'] = $build->sha256_checksum;
|
||||
}
|
||||
|
||||
$builds_json[] = $build_data;
|
||||
}
|
||||
echo(json_encode($builds_json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
|
||||
}
|
||||
|
@ -16,15 +16,15 @@ function handleNotFoundRequest() {
|
||||
function renderDownloadResponseAsJSON($lister) {
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
// Require v=1 to be specified
|
||||
if (!isset($_GET['v']) || $_GET['v'] != '1') {
|
||||
$data = [ 'error' => 'Missing supported format version, for example v=1'];
|
||||
if (!isset($_GET['v']) || ($_GET['v'] != '1' && $_GET['v'] != '2')) {
|
||||
$data = ['error' => 'Invalid version specified. Please provide a supported version using v=1 or v=2.'];
|
||||
echo json_encode( $data );
|
||||
http_response_code(400);
|
||||
return;
|
||||
}
|
||||
$builds = $lister->getBuilds();
|
||||
$renderer = new BuildsRenderer($builds);
|
||||
$renderer->renderJSON();
|
||||
$renderer->renderJSON($_GET['v']);
|
||||
return;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user