@@ -18,49 +18,31 @@ class ControllerRouter implements Handler {
18
18
Future <Response > handle (Request request) async {
19
19
_validate (request);
20
20
final target = _matchTarget (request.uri);
21
- if (target is RelationshipTarget ) {
22
- if (request.method.equals ('GET' )) {
23
- return await _controller.fetchRelationship (request, target);
24
- }
25
- if (request.method.equals ('POST' )) {
26
- return await _controller.addMany (request, target);
27
- }
28
- if (request.method.equals ('PATCH' )) {
29
- return await _controller.replaceRelationship (request, target);
30
- }
31
- if (request.method.equals ('DELETE' )) {
32
- return await _controller.deleteMany (request, target);
33
- }
34
- throw MethodNotAllowed (request.method.value);
35
- }
36
- if (target is RelatedTarget ) {
37
- if (request.method.equals ('GET' )) {
38
- return await _controller.fetchRelated (request, target);
39
- }
40
- throw MethodNotAllowed (request.method.value);
41
- }
42
- if (target is ResourceTarget ) {
43
- if (request.method.equals ('GET' )) {
44
- return await _controller.fetchResource (request, target);
45
- }
46
- if (request.method.equals ('PATCH' )) {
47
- return await _controller.updateResource (request, target);
48
- }
49
- if (request.method.equals ('DELETE' )) {
50
- return await _controller.deleteResource (request, target);
51
- }
52
- throw MethodNotAllowed (request.method.value);
53
- }
54
- if (target is Target ) {
55
- if (request.method.equals ('GET' )) {
56
- return await _controller.fetchCollection (request, target);
57
- }
58
- if (request.method.equals ('POST' )) {
59
- return await _controller.createResource (request, target);
60
- }
61
- throw MethodNotAllowed (request.method.value);
62
- }
63
- throw UnmatchedTarget (request.uri);
21
+ return await switch (target) {
22
+ RelationshipTarget () => switch (request.method) {
23
+ 'get' => _controller.fetchRelationship (request, target),
24
+ 'post' => _controller.addMany (request, target),
25
+ 'patch' => _controller.replaceRelationship (request, target),
26
+ 'delete' => _controller.deleteMany (request, target),
27
+ _ => throw MethodNotAllowed (request.method)
28
+ },
29
+ RelatedTarget () => switch (request.method) {
30
+ 'get' => _controller.fetchRelated (request, target),
31
+ _ => throw MethodNotAllowed (request.method)
32
+ },
33
+ ResourceTarget () => switch (request.method) {
34
+ 'get' => _controller.fetchResource (request, target),
35
+ 'patch' => _controller.updateResource (request, target),
36
+ 'delete' => _controller.deleteResource (request, target),
37
+ _ => throw MethodNotAllowed (request.method)
38
+ },
39
+ Target () => switch (request.method) {
40
+ 'get' => _controller.fetchCollection (request, target),
41
+ 'post' => _controller.createResource (request, target),
42
+ _ => throw MethodNotAllowed (request.method)
43
+ },
44
+ _ => throw UnmatchedTarget (request.uri)
45
+ };
64
46
}
65
47
66
48
void _validate (Request request) {
0 commit comments