Author: Shivam Mathur (shivammathur)
Date: 2025-09-24T20:56:42+05:30
Commit:
https://github.com/php/web-downloads/commit/72b3cf473dc68f9544f67a99df0cd40aac765341
Raw diff:
https://github.com/php/web-downloads/commit/72b3cf473dc68f9544f67a99df0cd40aac765341.diff
Improve series-init API
Changed paths:
M API.md
M src/Console/Command/SeriesInitCommand.php
M src/Http/Controllers/SeriesInitController.php
Diff:
diff --git a/API.md b/API.md
index 9d802b4..0bdcbb8 100644
--- a/API.md
+++ b/API.md
@@ -125,8 +125,8 @@ curl -i -X POST \
- Auth: Required
- Purpose: Initialize a series configuration by writing a JSON file into
`BUILDS_DIRECTORY/series`.
- Request body (JSON):
- - `series` (string, required)
- - `series_vs` (string, required): Matches `^v[c|s]\d{2}$`.
+ - `php_version` (string, required): Matches `^\d+.\d+$`.
+ - `source_vs` (string, required): Matches `^v[c|s]\d{2}$`.
- `target_vs` (string, required): Matches `^v[c|s]\d{2}$`.
- Success: `200 OK`, empty body.
- Errors: `400` with validation details if input is invalid.
@@ -138,8 +138,8 @@ curl -i -X POST \
-H "Authorization: Bearer $AUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
- "series": "8.4",
- "series_vs": "vc15",
+ "php_version": "8.4",
+ "source_vs": "vc15",
"target_vs": "vs16"
}' \
https://downloads.php.net/api/series-init
diff --git a/src/Console/Command/SeriesInitCommand.php
b/src/Console/Command/SeriesInitCommand.php
index 6d6405d..0668e57 100644
--- a/src/Console/Command/SeriesInitCommand.php
+++ b/src/Console/Command/SeriesInitCommand.php
@@ -46,7 +46,7 @@ public function handle(): int
foreach ($filteredFiles as $filepath) {
$data = json_decode(file_get_contents($filepath), true, 512,
JSON_THROW_ON_ERROR);
extract($data);
- $this->initSeriesFiles($series, $series_vs, $target_vs);
+ $this->initSeriesFiles($php_version, $source_vs, $target_vs);
unlink($filepath);
unlink($filepath . '.lock');
}
@@ -61,8 +61,8 @@ public function handle(): int
* @throws Exception
*/
private function initSeriesFiles(
- string $series,
- string $series_vs,
+ string $php_version,
+ string $source_vs,
string $target_vs
): void
{
@@ -73,11 +73,14 @@ private function initSeriesFiles(
}
foreach(['x86', 'x64'] as $arch) {
foreach(['stable', 'staging'] as $stability) {
- $sourceSeries = 'packages-master-' . $series_vs . '-' . $arch
. '-' . $stability . '.txt';
+ $sourceSeries = 'packages-master-' . $source_vs . '-' . $arch
. '-' . $stability . '.txt';
if(!file_exists($baseDirectory . '/' . $sourceSeries)) {
throw new Exception("$baseDirectory/$sourceSeries not
found");
}
- $destinationFileName = 'packages-' . $series . '-' .
$target_vs . '-' . $arch . '-' . $stability . '.txt';
+ $destinationFileName = 'packages-' . $php_version . '-' .
$target_vs . '-' . $arch . '-' . $stability . '.txt';
+ if(file_exists($baseDirectory . '/' . $destinationFileName)) {
+ throw new Exception("$baseDirectory/$destinationFileName
already exists");
+ }
copy($baseDirectory . '/' . $sourceSeries, $baseDirectory .
'/' . $destinationFileName);
}
}
diff --git a/src/Http/Controllers/SeriesInitController.php
b/src/Http/Controllers/SeriesInitController.php
index c40d25e..8fa4d7f 100644
--- a/src/Http/Controllers/SeriesInitController.php
+++ b/src/Http/Controllers/SeriesInitController.php
@@ -10,8 +10,8 @@ class SeriesInitController extends BaseController
protected function validate(array $data): bool
{
$validator = new Validator([
- 'series' => 'required|string',
- 'series_vs' => 'required|string|regex:/^v[c|s]\d{2}$/',
+ 'php_version' => 'required|string:regex:/^\d+\.\d+$/',
+ 'source_vs' => 'required|string|regex:/^v[c|s]\d{2}$/',
'target_vs' => 'required|string|regex:/^v[c|s]\d{2}$/',
]);