1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
<?php
namespace JsonApi\Contracts;
/**
* Stud.IP-Plugins, die dieses Interface implementieren, können
* JSON-API-Routen zu Verfügung stellen.
*/
interface JsonApiPlugin
{
/**
* In dieser Methode können Plugins eigene autorisierte Routen
* eintragen lassen.
*
* Dazu müssen am übergebenen \Slim\Routing\RouteCollectorProxy-Objekt die Methoden
* \Slim\Routing\RouteCollectorProxy::get, \Slim\Routing\RouteCollectorProxy::post,
* \Slim\Routing\RouteCollectorProxy::put, \Slim\Routing\RouteCollectorProxy::delete
* oder \Slim\Routing\RouteCollectorProxy::patch aufgerufen werden.
*
* Beispiel:
* class Blubber ... implements JsonApiPlugin
* {
* public function registerAuthenticatedRoutes(\Slim\Routing\RouteCollectorProxy $group)
* {
* $group->get('/blubbers', BlubbersIndex::class);
* }
* [...]
* }
*
* @param \Slim\Routing\RouteCollectorProxy $group die Slim-Applikation, in der das Plugin
* Routen eintragen möchte
*
* @return void
*/
public function registerAuthenticatedRoutes(\Slim\Routing\RouteCollectorProxy $group);
/**
* In dieser Methode können Plugins eigene Routen ohne Autorisierung
* eintragen lassen.
*
* Dazu müssen am übergebenen \Slim\Routing\RouteCollectorProxy-Objekt die Methoden
* \Slim\Routing\RouteCollectorProxy::get, \Slim\Routing\RouteCollectorProxy::post,
* \Slim\Routing\RouteCollectorProxy::put, \Slim\Routing\RouteCollectorProxy::delete
* oder \Slim\Routing\RouteCollectorProxy::patch aufgerufen werden.
*
* Beispiel:
* class Blubber ... implements JsonApiPlugin
* {
* public function registerUnauthenticatedRoutes(\Slim\Routing\RouteCollectorProxy $group)
* {
* $group->get('/blubbers', BlubbersIndex::class);
* }
* [...]
* }
*
* @param \Slim\Routing\RouteCollectorProxy $group die Slim-Applikation, in der das Plugin
* Routen eintragen möchte
*
* @return void
*/
public function registerUnauthenticatedRoutes(\Slim\Routing\RouteCollectorProxy $group);
/**
* In dieser Methode können Plugins Schemata den verwendeten
* Model-Klassen (also in der Regel SORM-Klassen) zuordnen.
*
* Wenn man in einer JSON-API-Route (als zum Beispiel einem
* Unterklasse von \JsonApi\JsonApiController), Models
* zurückgeben möchte, müssen für diese Models Schemata hinterlegt
* worden sein.
*
* Beispiel:
* class Blubber ... implements JsonApiPlugin
* {
* public function registerSchema()
* {
* return [
* \BlubberPosting::class => \BlubberPostingSchema::class
* ];
* }
* [...]
* }
*
* @return array ein Array von Zuordnungen von Model-Klassennamen
* zu den entsprechenden Schema-Klassennamen
*/
public function registerSchemas(): array;
}
|