Skip to content

Commit

Permalink
fix(rest): Slim fixes for REST API
Browse files Browse the repository at this point in the history
Make changes required for Slim framework v4.

Signed-off-by: Gaurav Mishra <mishra.gaurav@siemens.com>
  • Loading branch information
GMishx committed Oct 6, 2021
1 parent b6245ae commit 9196c67
Show file tree
Hide file tree
Showing 24 changed files with 466 additions and 260 deletions.
1 change: 1 addition & 0 deletions src/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
"monolog/monolog" : "2.3.4",
"phpoffice/phpword" : "0.18.2",
"slim/slim": "4.8.1",
"slim/psr7": "1.4",
"symfony/config" : "v5.3.4",
"symfony/http-foundation" : "v5.3.7",
"symfony/dependency-injection" : "v5.3.8",
Expand Down
139 changes: 138 additions & 1 deletion src/composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/delagent/ui/delete-helper.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
* @param $user_pk - the user_id
* @param $group_pk - the group_id
* @param $uploadDao - an instance of a uploadDao
* @return string with the message.
* @return DeleteResponse with the message.
*/
function TryToDelete($uploadpk, $user_pk, $group_pk, $uploadDao)
{
Expand Down
2 changes: 1 addition & 1 deletion src/lib/php/Dao/ShowJobsDao.php
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ public function getNumItemsPerSec($itemsprocessed, $numSecs)
* @param string $jq_Type
* @param float $filesPerSec
* @param int $uploadId
* @return Returns empty if estimated time is 0 else returns time.
* @return string Returns empty if estimated time is 0 else returns time.
**/
public function getEstimatedTime($job_pk, $jq_Type='', $filesPerSec=0, $uploadId=0, $timeInSec=0)
{
Expand Down
45 changes: 9 additions & 36 deletions src/lib/php/common-container.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,6 @@
use Monolog\Handler\ErrorLogHandler;
use Monolog\Logger;
use Fossology\Lib\Util\TimingLogger;
use Fossology\UI\Api\Models\Info;
use Fossology\UI\Api\Models\InfoType;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\Dumper\PhpDumper;
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
Expand All @@ -41,52 +39,27 @@

$startTime = microtime(true);

if ($restCall) {
// Call from REST api
$containerClassName = 'FossologyRestCachedContainer';
$cacheFile = "$cacheDir/rest-container.php";
$containerBuilder = "\Flexsounds\Component\SymfonyContainerSlimBridge\ContainerBuilder";
}

$cached = $cacheDir && file_exists($cacheFile);

if ($cached) {
require_once ($cacheFile);
/**
* @var Symfony\Component\DependencyInjection\Container $container
* The dependency container for all FOSSology usage.
*/
$container = new $containerClassName();
} else {
/**
* @var Symfony\Component\DependencyInjection\ContainerBuilder $container
* The dependency container for all FOSSology usage.
*/
$container = new $containerBuilder();

$container->setParameter('application_root', dirname(dirname(__DIR__)));

$loader = new XmlFileLoader($container, new FileLocator(__DIR__));
$loader->load('services.xml');

if ($restCall) {
// Set error handlers for Slim
$container->set('notFoundHandler',
function ($request, $response){
$error = new Info(404, "Resource not found", InfoType::ERROR);
return $response->withJson($error->getArray(), $error->getCode());
});
$container->set('notAllowedHandler',
function ($request, $response, $methods){
$error = new Info(405,
'Method must be one of: ' . implode(', ', $methods), InfoType::ERROR);
return $response->withHeader('Allow', implode(', ', $methods))
->withJson($error->getArray(), $error->getCode());
});
$container->set('phpErrorHandler',
function ($request, $response, $error){
$GLOBALS['container']->get('logger')
->error($error);
$error = new Info(500, "Something went wrong! Please try again later.",
InfoType::ERROR);
return $response->withJson($error->getArray(), $error->getCode());
});
$phpErrorHandler = $container->get('phpErrorHandler');
$container->set('errorHandler', $phpErrorHandler);
}

$container->compile();

if ($cacheDir && is_dir($cacheDir)) {
Expand All @@ -99,7 +72,7 @@ function ($request, $response, $error){
}
}

if ($restCall) {
if ($restCall && $container->has('environment')) {
// Replace cached values with current values
$container->get('environment')->replace($_SERVER);
}
Expand Down
12 changes: 6 additions & 6 deletions src/www/ui/api/Controllers/AuthController.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,12 @@
namespace Fossology\UI\Api\Controllers;

use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use Fossology\UI\Api\Helper\RestHelper;
use Fossology\UI\Api\Models\Info;
use Fossology\UI\Api\Models\InfoType;
use Fossology\Lib\Exceptions\DuplicateTokenKeyException;
use Fossology\Lib\Exceptions\DuplicateTokenNameException;
use Fossology\UI\Api\Helper\ResponseHelper;

/**
* @class AuthController
Expand All @@ -42,9 +42,9 @@ class AuthController extends RestController
* Respond to OPTIONS requests with an empty 204 response
*
* @param ServerRequestInterface $request
* @param ResponseInterface $response
* @param ResponseHelper $response
* @param array $args
* @return ResponseInterface
* @return ResponseHelper
*/
public function optionsVerification($request, $response, $args)
{
Expand All @@ -55,13 +55,13 @@ public function optionsVerification($request, $response, $args)
* Get the JWT authentication headers for the user
*
* @param ServerRequestInterface $request
* @param ResponseInterface $response
* @param ResponseHelper $response
* @param array $args
* @return ResponseInterface
* @return ResponseHelper
*/
public function createNewJwtToken($request, $response, $args)
{
$tokenRequestBody = $request->getParsedBody();
$tokenRequestBody = $this->getParsedBody($request);
$paramsRequired = [
"username",
"password",
Expand Down
6 changes: 3 additions & 3 deletions src/www/ui/api/Controllers/BadRequestController.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@

namespace Fossology\UI\Api\Controllers;

use Fossology\UI\Api\Helper\ResponseHelper;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use Fossology\UI\Api\Models\Info;
use Fossology\UI\Api\Models\InfoType;

Expand All @@ -39,9 +39,9 @@ class BadRequestController extends RestController
* Get app the uploads for current user
*
* @param ServerRequestInterface $request
* @param ResponseInterface $response
* @param ResponseHelper $response
* @param array $args
* @return ResponseInterface
* @return ResponseHelper
*/
public function __invoke($request, $response, $args)
{
Expand Down
12 changes: 6 additions & 6 deletions src/www/ui/api/Controllers/FileSearchController.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@
use Fossology\Lib\Dao\ClearingDao;
use Fossology\Lib\Dao\LicenseDao;
use Fossology\UI\Api\Helper\FileHelper;
use Fossology\UI\Api\Helper\ResponseHelper;
use Fossology\UI\Api\Models\File;
use Fossology\UI\Api\Models\Findings;
use Fossology\UI\Api\Models\Hash;
use Psr\Container\ContainerInterface;
use Slim\Http\Request;
use Slim\Http\Response;
use Psr\Http\Message\ServerRequestInterface;

/**
* @class FileSearchController
Expand Down Expand Up @@ -71,14 +71,14 @@ public function __construct($container)
/**
* Get the file information based on hashes sent
*
* @param Request $request
* @param Response $response
* @param ServerRequestInterface $request
* @param ResponseHelper $response
* @param array $args
* @return Response
* @return ResponseHelper
*/
public function getFiles($request, $response, $args)
{
$fileListJSON = $request->getParsedBody();
$fileListJSON = $this->getParsedBody($request);
$inputFileList = File::parseFromArray($fileListJSON);
$existsList = [];
$nonExistsList = [];
Expand Down

0 comments on commit 9196c67

Please sign in to comment.