pavlakis/slim-cli

Making a mock GET request through the CLI and enabling the same application entry point on CLI scripts.

1.2 2019-10-23 21:50 UTC

This package is auto-updated.

Last update: 2020-02-23 23:10:39 UTC


README

Build Status Total Downloads Latest Stable Version codecov PHPStan

Slim 3 Framework CLI Request Middleware

This middleware will transform a CLI call into a Request.

Note: Added support for the following HTTP Request methods:

    'GET',
    'HEAD',
    'POST',
    'PUT',
    'DELETE',
    'CONNECT',
    'OPTIONS',
    'TRACE',
    'PATCH',

Install

Via Composer

composer require pavlakis/slim-cli

Usage

Pass the parameters in this order

route / method / query string

php public/index.php /status GET event=true

Add it in the middleware section of your application

$app->add(new \pavlakis\cli\CliRequest());

Adding custom parameters:

$app->add(
	new \pavlakis\cli\CliRequest(
		new EnvironmentProperties(['SERVER_PORT' => 9000])
	)
);

Pass a route to test it with


$app->get('/status', 'PHPMinds\Action\EventStatusAction:dispatch')
    ->setName('status');

Check you're only using a CLI call

final class EventStatusAction
{
    ...

    public function dispatch(Request $request, Response $response, $args)
    {

        // ONLY WHEN CALLED THROUGH CLI
        if (PHP_SAPI !== 'cli') {
            return $response->withStatus(404)->withHeader('Location', '/404');
        }

        if (!$request->getParam('event')) {
            return $response->withStatus(404)->withHeader('Location', '/404');
        }

        ...

    }

}

Or we can use a PHP Server Interface (SAPI) Middleware to do the SAPI check adding by adding it to a route:

// By default returns a 403 if SAPI not part of the whitelist
$app->get('/status', 'PHPMinds\Action\EventStatusAction:dispatch')
    ->add(new Pavlakis\Middleware\Server\Sapi(["cli"]))

Testing

$ composer test

Contributing

Please see CONTRIBUTING for details.

Credits

Based on Bobby DeVeaux's (@bobbyjason) Gulp Skeleton

License

The BSD 3-Clause License. Please see License File for more information.