From d811427f79c3f9cafc3757edc193b18d8a7ca9b3 Mon Sep 17 00:00:00 2001 From: shalvah Date: Mon, 22 Apr 2019 22:07:44 +0100 Subject: [PATCH 1/2] Allow binding prefixes (closes #488) --- TODO.md | 2 ++ .../ResponseStrategies/ResponseCallStrategy.php | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 TODO.md diff --git a/TODO.md b/TODO.md new file mode 100644 index 00000000..d163579e --- /dev/null +++ b/TODO.md @@ -0,0 +1,2 @@ +- Add tests for bindings +- Add tests for config overrdes diff --git a/src/Tools/ResponseStrategies/ResponseCallStrategy.php b/src/Tools/ResponseStrategies/ResponseCallStrategy.php index 8d30a4ae..50d98065 100644 --- a/src/Tools/ResponseStrategies/ResponseCallStrategy.php +++ b/src/Tools/ResponseStrategies/ResponseCallStrategy.php @@ -6,6 +6,7 @@ use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Routing\Route; +use Illuminate\Support\Str; use Mpociot\ApiDoc\Tools\Traits\ParamHelpers; /** @@ -94,11 +95,19 @@ private function prepareRequest(Route $route, array $rulesToApply, array $bodyPa protected function replaceUrlParameterBindings(Route $route, $bindings) { $uri = $route->uri(); - foreach ($bindings as $parameter => $binding) { - $uri = str_replace($parameter, $binding, $uri); + foreach ($bindings as $path => $binding) { + // So we can support partial bindings like + // 'bindings' => [ + // 'foo/{type}' => 4, + // 'bar/{type}' => 2 + //], + if (Str::is("*$path*", $uri)) { + preg_match('/({.+?})/', $path, $parameter); + $uri = str_replace("{$parameter['1']}", $binding, $uri); + } } // Replace any unbound parameters with '1' - $uri = preg_replace('/{(.*?)}/', 1, $uri); + $uri = preg_replace('/{(.+?)}/', 1, $uri); return $uri; } From cef90ce2c85be401c6943a3a0a7daeabd94cd331 Mon Sep 17 00:00:00 2001 From: Marcel Pociot Date: Mon, 22 Apr 2019 21:08:09 +0000 Subject: [PATCH 2/2] Apply fixes from StyleCI --- src/Tools/ResponseStrategies/ResponseCallStrategy.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Tools/ResponseStrategies/ResponseCallStrategy.php b/src/Tools/ResponseStrategies/ResponseCallStrategy.php index 50d98065..eb71dbb3 100644 --- a/src/Tools/ResponseStrategies/ResponseCallStrategy.php +++ b/src/Tools/ResponseStrategies/ResponseCallStrategy.php @@ -3,10 +3,10 @@ namespace Mpociot\ApiDoc\Tools\ResponseStrategies; use Dingo\Api\Dispatcher; +use Illuminate\Support\Str; use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Routing\Route; -use Illuminate\Support\Str; use Mpociot\ApiDoc\Tools\Traits\ParamHelpers; /** @@ -116,6 +116,7 @@ protected function replaceUrlParameterBindings(Route $route, $bindings) * @param array $config * * @return void + * * @deprecated in favour of Laravel config variables */ private function setEnvironmentVariables(array $env)