mirror of
https://github.com/flextype/flextype.git
synced 2025-08-12 08:04:05 +02:00
feat(media): improvements and updates for apis #428
This commit is contained in:
@@ -32,7 +32,7 @@ function validate_files_token($token) : bool
|
||||
* token - [REQUIRED] - Valid Files token.
|
||||
*
|
||||
* Returns:
|
||||
* An array of entry item objects.
|
||||
* An array of file item objects.
|
||||
*/
|
||||
$app->get('/api/files', function (Request $request, Response $response) use ($flextype, $api_sys_messages) {
|
||||
|
||||
@@ -111,7 +111,7 @@ $app->get('/api/files', function (Request $request, Response $response) use ($fl
|
||||
* file - [REQUIRED] - Raw file data (multipart/form-data).
|
||||
*
|
||||
* Returns:
|
||||
* Returns the entry item object for the entry item that was just created.
|
||||
* Returns the file object for the file that was just created.
|
||||
*/
|
||||
$app->post('/api/files', function (Request $request, Response $response) use ($flextype, $api_sys_messages) {
|
||||
|
||||
@@ -145,7 +145,7 @@ $app->post('/api/files', function (Request $request, Response $response) use ($f
|
||||
return $response->withJson($api_sys_messages['AccessTokenInvalid'], 401);
|
||||
}
|
||||
|
||||
// Create entry
|
||||
// Create file
|
||||
$create_file = $flextype['media_files']->upload($file, $folder);
|
||||
|
||||
if ($create_file) {
|
||||
@@ -187,3 +187,170 @@ $app->post('/api/files', function (Request $request, Response $response) use ($f
|
||||
return $response
|
||||
->withJson($api_sys_messages['AccessTokenInvalid'], 401);
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Rename media file
|
||||
*
|
||||
* endpoint: PUT /api/files
|
||||
*
|
||||
* Body:
|
||||
* id - [REQUIRED] - Unique identifier of the file.
|
||||
* new_id - [REQUIRED] - New Unique identifier of the file.
|
||||
* token - [REQUIRED] - Valid Entries token.
|
||||
* access_token - [REQUIRED] - Valid Access token.
|
||||
*
|
||||
* Returns:
|
||||
* Returns the file object for the file that was just created.
|
||||
*/
|
||||
$app->put('/api/files', function (Request $request, Response $response) use ($flextype, $api_sys_messages) {
|
||||
|
||||
// Get Post Data
|
||||
$post_data = $request->getParsedBody();
|
||||
|
||||
// Set variables
|
||||
$token = $post_data['token'];
|
||||
$access_token = $post_data['access_token'];
|
||||
$id = $post_data['id'];
|
||||
$new_id = $post_data['new_id'];
|
||||
|
||||
if ($flextype['registry']->get('flextype.settings.api.files.enabled')) {
|
||||
|
||||
// Validate files and access token
|
||||
if (validate_files_token($token) && validate_access_token($access_token)) {
|
||||
$files_token_file_path = PATH['project'] . '/tokens/files/' . $token . '/token.yaml';
|
||||
$access_token_file_path = PATH['project'] . '/tokens/access/' . $access_token . '/token.yaml';
|
||||
|
||||
// Set files and access token file
|
||||
if (($files_token_file_data = $flextype['serializer']->decode(Filesystem::read($files_token_file_path), 'yaml')) &&
|
||||
($access_token_file_data = $flextype['serializer']->decode(Filesystem::read($access_token_file_path), 'yaml'))) {
|
||||
|
||||
if ($files_token_file_data['state'] === 'disabled' ||
|
||||
($files_token_file_data['limit_calls'] !== 0 && $files_token_file_data['calls'] >= $files_token_file_data['limit_calls'])) {
|
||||
return $response->withJson($api_sys_messages['AccessTokenInvalid'], 401);
|
||||
}
|
||||
|
||||
if ($access_token_file_data['state'] === 'disabled' ||
|
||||
($access_token_file_data['limit_calls'] !== 0 && $access_token_file_data['calls'] >= $access_token_file_data['limit_calls'])) {
|
||||
return $response->withJson($api_sys_messages['AccessTokenInvalid'], 401);
|
||||
}
|
||||
|
||||
// Rename file
|
||||
$rename_file = $flextype['media_files']->rename($id, $new_id);
|
||||
|
||||
if ($rename_file) {
|
||||
$response_data['data'] = $flextype['media_files']->fetch($folder . '/' . basename($rename_file));
|
||||
} else {
|
||||
$response_data['data'] = [];
|
||||
}
|
||||
|
||||
// Set response code
|
||||
$response_code = (Filesystem::has($rename_file)) ? 200 : 404;
|
||||
|
||||
// Return response
|
||||
return $response
|
||||
->withJson($response_data, $response_code);
|
||||
|
||||
// Update calls counter
|
||||
Filesystem::write($files_token_file_path, $flextype['serializer']->encode(array_replace_recursive($files_token_file_data, ['calls' => $files_token_file_data['calls'] + 1]), 'yaml'));
|
||||
|
||||
if ($response_code == 404) {
|
||||
|
||||
// Return response
|
||||
return $response
|
||||
->withJson($api_sys_messages['NotFound'], $response_code);
|
||||
}
|
||||
|
||||
// Return response
|
||||
return $response
|
||||
->withJson($response_data, $response_code);
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson($api_sys_messages['AccessTokenInvalid'], 401);
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson($api_sys_messages['AccessTokenInvalid'], 401);
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson($api_sys_messages['AccessTokenInvalid'], 401);
|
||||
});
|
||||
|
||||
/**
|
||||
* Delete file
|
||||
*
|
||||
* endpoint: DELETE /api/entries
|
||||
*
|
||||
* Body:
|
||||
* id - [REQUIRED] - Unique identifier of the file.
|
||||
* token - [REQUIRED] - Valid Entries token.
|
||||
* access_token - [REQUIRED] - Valid Authentication token.
|
||||
*
|
||||
* Returns:
|
||||
* Returns an empty body with HTTP status 204
|
||||
*/
|
||||
$app->delete('/api/entries', function (Request $request, Response $response) use ($flextype) {
|
||||
|
||||
// Get Post Data
|
||||
$post_data = $request->getParsedBody();
|
||||
|
||||
// Set variables
|
||||
$token = $post_data['token'];
|
||||
$access_token = $post_data['access_token'];
|
||||
$id = $post_data['id'];
|
||||
|
||||
if ($flextype['registry']->get('flextype.settings.api.entries.enabled')) {
|
||||
|
||||
// Validate entries and access token
|
||||
if (validate_entries_token($token) && validate_access_token($access_token)) {
|
||||
$files_token_file_path = PATH['project'] . '/tokens/entries/' . $token . '/token.yaml';
|
||||
$access_token_file_path = PATH['project'] . '/tokens/access/' . $access_token . '/token.yaml';
|
||||
|
||||
// Set entries and access token file
|
||||
if (($files_token_file_data = $flextype['serializer']->decode(Filesystem::read($files_token_file_path), 'yaml')) &&
|
||||
($access_token_file_data = $flextype['serializer']->decode(Filesystem::read($access_token_file_path), 'yaml'))) {
|
||||
|
||||
if ($files_token_file_data['state'] === 'disabled' ||
|
||||
($files_token_file_data['limit_calls'] !== 0 && $files_token_file_data['calls'] >= $files_token_file_data['limit_calls'])) {
|
||||
return $response->withJson($api_sys_messages['AccessTokenInvalid'], 401);
|
||||
}
|
||||
|
||||
if ($access_token_file_data['state'] === 'disabled' ||
|
||||
($access_token_file_data['limit_calls'] !== 0 && $access_token_file_data['calls'] >= $access_token_file_data['limit_calls'])) {
|
||||
return $response->withJson($api_sys_messages['AccessTokenInvalid'], 401);
|
||||
}
|
||||
|
||||
// Delete file
|
||||
$delete_file = $flextype['media_files']->delete($id);
|
||||
|
||||
// Set response code
|
||||
$response_code = ($delete_file) ? 204 : 404;
|
||||
|
||||
// Update calls counter
|
||||
Filesystem::write($files_token_file_path, $flextype['serializer']->encode(array_replace_recursive($files_token_file_data, ['calls' => $files_token_file_data['calls'] + 1]), 'yaml'));
|
||||
|
||||
if ($response_code == 404) {
|
||||
|
||||
// Return response
|
||||
return $response
|
||||
->withJson($api_sys_messages['NotFound'], $response_code);
|
||||
}
|
||||
|
||||
// Return response
|
||||
return $response
|
||||
->withJson($delete_file, $response_code);
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson($api_sys_messages['AccessTokenInvalid'], 401);
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson($api_sys_messages['AccessTokenInvalid'], 401);
|
||||
}
|
||||
|
||||
return $response
|
||||
->withJson($api_sys_messages['AccessTokenInvalid'], 401);
|
||||
});
|
||||
|
Reference in New Issue
Block a user