diff --git a/src/ApiResource/Matchfunding/RuleApiResource.php b/src/ApiResource/Matchfunding/RuleApiResource.php new file mode 100644 index 0000000..009613b --- /dev/null +++ b/src/ApiResource/Matchfunding/RuleApiResource.php @@ -0,0 +1,28 @@ +ruleLocator->getOne(\sprintf( + 'App\\Matchfunding\\Rule\\%s', + $uriVariables['name'] + )); + + return $this->getApiResource($rule); + } catch (ClassNotFoundException $e) { + return null; + } + } + + $strategies = $this->ruleLocator->getAll(); + + $resources = []; + foreach ($strategies as $rule) { + $resources[] = $this->getApiResource($rule); + } + + return $resources; + } + + private function getApiResource(RuleInterface $rule): RuleApiResource + { + $resource = new RuleApiResource(); + $resource->name = self::getName($rule::class); + $resource->description = $rule::getDescription(); + + return $resource; + } + + private static function getName(string $class): string + { + return \array_slice(\explode('\\', $class), -1, 1)[0]; + } +}