Buildbot: Move checksum to JSON #7
@ -22,6 +22,7 @@ class Build {
|
|||||||
public $file_size;
|
public $file_size;
|
||||||
public $file_extension;
|
public $file_extension;
|
||||||
public $release_cycle;
|
public $release_cycle;
|
||||||
|
public $sha256_checksum; // New property
|
||||||
public $directory_lister;
|
public $directory_lister;
|
||||||
|
|
||||||
public function __construct(string $file_path) {
|
public function __construct(string $file_path) {
|
||||||
@ -83,6 +84,15 @@ class Build {
|
|||||||
$this->file_size = filesize($file_path);
|
$this->file_size = filesize($file_path);
|
||||||
$this->file_extension = $file_extension;
|
$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.
|
// Release cycle.
|
||||||
//
|
//
|
||||||
// NOTE: Keep it last, so the rule matcher can access all possible
|
// NOTE: Keep it last, so the rule matcher can access all possible
|
||||||
|
@ -8,11 +8,11 @@ class BuildsRenderer {
|
|||||||
$this->builds = $builds;
|
$this->builds = $builds;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function renderJSON() {
|
public function renderJSON($version = 1) {
|
||||||
/* Return a JSON formatted list of builds. */
|
/* Return a JSON formatted list of builds. */
|
||||||
$builds_json = array();
|
$builds_json = array();
|
||||||
foreach ($this->builds as $build) {
|
foreach ($this->builds as $build) {
|
||||||
$builds_json[] = array(
|
$build_data = array(
|
||||||
'url' => $this->getFileNameURL($build),
|
'url' => $this->getFileNameURL($build),
|
||||||
'app' => $build->app,
|
'app' => $build->app,
|
||||||
'version' => $build->version,
|
'version' => $build->version,
|
||||||
@ -29,6 +29,16 @@ class BuildsRenderer {
|
|||||||
'file_extension' => $build->file_extension,
|
'file_extension' => $build->file_extension,
|
||||||
'release_cycle' => $build->release_cycle,
|
'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));
|
echo(json_encode($builds_json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
|
||||||
}
|
}
|
||||||
|
@ -16,15 +16,15 @@ function handleNotFoundRequest() {
|
|||||||
function renderDownloadResponseAsJSON($lister) {
|
function renderDownloadResponseAsJSON($lister) {
|
||||||
header('Content-Type: application/json; charset=utf-8');
|
header('Content-Type: application/json; charset=utf-8');
|
||||||
// Require v=1 to be specified
|
// Require v=1 to be specified
|
||||||
if (!isset($_GET['v']) || $_GET['v'] != '1') {
|
if (!isset($_GET['v']) || ($_GET['v'] != '1' && $_GET['v'] != '2')) {
|
||||||
$data = [ 'error' => 'Missing supported format version, for example v=1'];
|
$data = ['error' => 'Invalid version specified. Please provide a supported version using v=1 or v=2.'];
|
||||||
echo json_encode( $data );
|
echo json_encode( $data );
|
||||||
http_response_code(400);
|
http_response_code(400);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$builds = $lister->getBuilds();
|
$builds = $lister->getBuilds();
|
||||||
$renderer = new BuildsRenderer($builds);
|
$renderer = new BuildsRenderer($builds);
|
||||||
$renderer->renderJSON();
|
$renderer->renderJSON($_GET['v']);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user