Skip to content

Commit b62b0cf

Browse files
authored
Merge pull request #18 from pdsinterop/feature/resources-api
Add resources api calls
2 parents 73a11c7 + d28c30e commit b62b0cf

File tree

4 files changed

+66
-10
lines changed

4 files changed

+66
-10
lines changed

bin/serve-docker-dev.sh

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,9 @@
44

55
docker run \
66
-i \
7-
--env 'ENVIRONMENT=development' \
8-
--expose 80 \
9-
--name php-solid-server \
7+
--expose 443 \
8+
--name server \
109
--network host \
1110
--rm \
1211
--volume "${PWD}:/app" \
13-
"php:${PHP_VERSION:-7.1}-alpine" \
14-
php \
15-
--define 'log_errors=On' \
16-
--docroot /app/web/ \
17-
--server '0.0.0.0:80' \
18-
/app/web/index.php
12+
"${DOCKER_IMAGE:=php-solid-server}"

composer.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"league/route": "^4.5",
3131
"pdsinterop/flysystem-rdf": "dev-dev",
3232
"pdsinterop/solid-auth": "dev-master",
33+
"pdsinterop/solid-crud": "dev-master",
3334
"php-http/httplug": "^2.1",
3435
"phptal/phptal": "^1.4"
3536
},
@@ -42,5 +43,10 @@
4243
"serve-dev-docker":"bash ./bin/serve-docker-dev.sh",
4344
"test":"phpunit"
4445
},
46+
"scripts-descriptions": {
47+
"serve-dev": "Run the application with the internal PHP development server",
48+
"serve-dev-docker": "Run the application with the docker image provided by the TestSuite repo.",
49+
"test": "Run unit-test with PHPUnit"
50+
},
4551
"type": "project"
4652
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Pdsinterop\Solid\Controller;
4+
5+
use Pdsinterop\Solid\Resources\Server;
6+
use Psr\Http\Message\ResponseInterface as Response;
7+
use Psr\Http\Message\ServerRequestInterface as Request;
8+
9+
class ResourceController extends AbstractController
10+
{
11+
////////////////////////////// CLASS PROPERTIES \\\\\\\\\\\\\\\\\\\\\\\\\\\\
12+
13+
/** @var Server */
14+
private $server;
15+
16+
//////////////////////////////// PUBLIC API \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
17+
18+
final public function __construct(Server $server)
19+
{
20+
$this->server = $server;
21+
}
22+
23+
final public function __invoke(Request $request, array $args) : Response
24+
{
25+
return $this->server->respondToRequest($request);
26+
}
27+
}

web/index.php

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
use League\Route\Strategy\ApplicationStrategy;
1919

2020
use Pdsinterop\Solid\Controller\AddSlashToPathController;
21-
use Pdsinterop\Solid\Controller\AuthorizeController;
2221
use Pdsinterop\Solid\Controller\ApprovalController;
22+
use Pdsinterop\Solid\Controller\AuthorizeController;
2323
use Pdsinterop\Solid\Controller\CorsController;
2424
use Pdsinterop\Solid\Controller\HandleApprovalController;
2525
use Pdsinterop\Solid\Controller\HelloWorldController;
@@ -31,7 +31,9 @@
3131
use Pdsinterop\Solid\Controller\Profile\CardController;
3232
use Pdsinterop\Solid\Controller\Profile\ProfileController;
3333
use Pdsinterop\Solid\Controller\RegisterController;
34+
use Pdsinterop\Solid\Controller\ResourceController;
3435
use Pdsinterop\Solid\Controller\TokenController;
36+
use Pdsinterop\Solid\Resources\Server as ResourceServer;
3537

3638
use Psr\Http\Message\ResponseInterface;
3739
use Psr\Http\Message\ServerRequestInterface;
@@ -80,6 +82,16 @@
8082
return $template;
8183
});
8284

85+
$container->add(ResourceController::class, function () use ($container) {
86+
$filesystem = $container-> get(FilesystemInterface::class);
87+
88+
require_once __DIR__ . '/../lib/solid-crud/src/Server.php';
89+
90+
$server = new ResourceServer($filesystem, new Response());
91+
92+
return new ResourceController($server);
93+
});
94+
8395
$controllers = [
8496
AddSlashToPathController::class,
8597
ApprovalController::class,
@@ -149,6 +161,23 @@
149161
$router->map('POST', '/token', TokenController::class)->setScheme($scheme);
150162
$router->map('POST', '/token/', TokenController::class)->setScheme($scheme);
151163

164+
$router->group('/data', static function (\League\Route\RouteGroup $group) {
165+
$methods = [
166+
'DELETE',
167+
'GET',
168+
'HEAD',
169+
// 'OPTIONS', // @TODO: This breaks because of the CorsController being added to `OPTION /*` in the index.php
170+
'PATCH',
171+
'POST',
172+
'PUT',
173+
];
174+
175+
array_walk($methods, static function ($method) use (&$group) {
176+
$group->map($method, '/', AddSlashToPathController::class);
177+
$group->map($method, '{path:.*}', ResourceController::class);
178+
});
179+
})->setScheme($scheme);
180+
152181
try {
153182
$response = $router->dispatch($request);
154183
} catch (HttpException $exception) {

0 commit comments

Comments
 (0)