Skip to content

Commit

Permalink
Add REST API to get version(s) + return version on creation
Browse files Browse the repository at this point in the history
Fixes #30415
  • Loading branch information
vboctor committed Apr 28, 2023
1 parent f6c0594 commit 3805e33
Showing 1 changed file with 41 additions and 3 deletions.
44 changes: 41 additions & 3 deletions api/rest/restcore/projects_rest.php
Expand Up @@ -42,6 +42,10 @@
$g_app->delete( '/{id}/', 'rest_project_delete' );

# Project versions
$g_app->get( '/{id}/versions', 'rest_project_version_get' );
$g_app->get( '/{id}/versions/', 'rest_project_version_get' );
$g_app->get( '/{id}/versions/{version_id}', 'rest_project_version_get' );
$g_app->get( '/{id}/versions/{version_id}/', 'rest_project_version_get' );
$g_app->post( '/{id}/versions', 'rest_project_version_add' );
$g_app->post( '/{id}/versions/', 'rest_project_version_add' );
$g_app->patch( '/{id}/versions/{version_id}', 'rest_project_version_update' );
Expand Down Expand Up @@ -183,6 +187,38 @@ function rest_projects_get( \Slim\Http\Request $p_request, \Slim\Http\Response $
return $p_response->withStatus( HTTP_STATUS_SUCCESS )->withJson( $t_result );
}

/**
* A method to get project version(s).
*
* @param \Slim\Http\Request $p_request The request.
* @param \Slim\Http\Response $p_response The response.
* @param array $p_args Arguments
* @return \Slim\Http\Response The augmented response.
*/
function rest_project_version_get( \Slim\Http\Request $p_request, \Slim\Http\Response $p_response, array $p_args ) {
$t_project_id = isset( $p_args['id'] ) ? $p_args['id'] : $p_request->getParam( 'id' );
if( is_blank( $t_project_id ) ) {
$t_message = "Project id is missing.";
return $p_response->withStatus( HTTP_STATUS_BAD_REQUEST, $t_message );
}

$t_version_to_add = $p_request->getParsedBody();

$t_data = array(
'query' => array(
'project_id' => $t_project_id
),
'payload' => $t_version_to_add
);

$t_command = new VersionGetCommand( $t_data );
$t_result = $t_command->execute();

return $p_response->
withStatus( HTTP_STATUS_SUCCESS, "OK" )->
withJson( $t_result );
}

/**
* A method to add a project version.
*
Expand All @@ -202,16 +238,18 @@ function rest_project_version_add( \Slim\Http\Request $p_request, \Slim\Http\Res

$t_data = array(
'query' => array(
'project_id' => $t_project_id,
'project_id' => $t_project_id
),
'payload' => $t_version_to_add
);

$t_command = new VersionAddCommand( $t_data );
$t_result = $t_command->execute();
$t_version_id = (int)$t_result['id'];
$t_version_id = (int)$t_result['version']['id'];

return $p_response->withStatus( HTTP_STATUS_NO_CONTENT, "Version created with id $t_version_id" );
return $p_response->
withStatus( HTTP_STATUS_CREATED, "Version created with id $t_version_id" )->
withJson( $t_result );
}

/**
Expand Down

0 comments on commit 3805e33

Please sign in to comment.