Skip to content

Commit

Permalink
Pulls out explode logic into trait
Browse files Browse the repository at this point in the history
  • Loading branch information
jacobemerick committed Nov 19, 2016
1 parent 9bc35b3 commit 121a126
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 88 deletions.
52 changes: 52 additions & 0 deletions src/Parser/ExplodeTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<?php

namespace AvalancheDevelopment\SwaggerRouterMiddleware\Parser;

use Exception;

trait ExplodeTrait
{

/**
* @param mixed $value
* @param array $parameter
* @return array
*/
protected function explodeValue($value, array $parameter)
{
$delimiter = $this->getDelimiter($parameter);
return preg_split("@{$delimiter}@", $value);
}

/**
* @param array $parameter
* @return string
*/
protected function getDelimiter(array $parameter)
{
$collectionFormat = 'csv';
if (isset($parameter['collectionFormat'])) {
$collectionFormat = $parameter['collectionFormat'];
}

switch ($collectionFormat) {
case 'csv':
$delimiter = ',';
break;
case 'ssv':
$delimiter = '\s';
break;
case 'tsv':
$delimiter = '\t';
break;
case 'pipes':
$delimiter = '|';
break;
default:
throw new Exception('Invalid collection format value defined in swagger');
break;
}

return $delimiter;
}
}
46 changes: 2 additions & 44 deletions src/Parser/Path.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@

namespace AvalancheDevelopment\SwaggerRouterMiddleware\Parser;

use Exception;
use Psr\Http\Message\RequestInterface as Request;

class Path implements ParserInterface
{

use ExplodeTrait;

/** @var Request */
protected $request;

Expand Down Expand Up @@ -53,47 +54,4 @@ public function getValue()

return $value;
}

/**
* @param mixed $value
* @param array $parameter
* @return array
*/
protected function explodeValue($value, array $parameter)
{
$delimiter = $this->getDelimiter($parameter);
return preg_split("@{$delimiter}@", $value);
}

/**
* @param array $parameter
* @return string
*/
protected function getDelimiter(array $parameter)
{
$collectionFormat = 'csv';
if (isset($parameter['collectionFormat'])) {
$collectionFormat = $parameter['collectionFormat'];
}

switch ($collectionFormat) {
case 'csv':
$delimiter = ',';
break;
case 'ssv':
$delimiter = '\s';
break;
case 'tsv':
$delimiter = '\t';
break;
case 'pipes':
$delimiter = '|';
break;
default:
throw new Exception('Invalid collection format value defined in swagger');
break;
}

return $delimiter;
}
}
46 changes: 2 additions & 44 deletions src/Parser/Query.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@

namespace AvalancheDevelopment\SwaggerRouterMiddleware\Parser;

use Exception;
use Psr\Http\Message\RequestInterface as Request;

class Query implements ParserInterface
{

use ExplodeTrait;

/** @var Request */
protected $request;

Expand Down Expand Up @@ -76,47 +77,4 @@ protected function parseQueryString(Request $request)

return $params;
}

/**
* @param mixed $value
* @param array $parameter
* @return array
*/
protected function explodeValue($value, array $parameter)
{
$delimiter = $this->getDelimiter($parameter);
return preg_split("@{$delimiter}@", $value);
}

/**
* @param array $parameter
* @return string
*/
protected function getDelimiter(array $parameter)
{
$collectionFormat = 'csv';
if (isset($parameter['collectionFormat'])) {
$collectionFormat = $parameter['collectionFormat'];
}

switch ($collectionFormat) {
case 'csv':
$delimiter = ',';
break;
case 'ssv':
$delimiter = '\s';
break;
case 'tsv':
$delimiter = '\t';
break;
case 'pipes':
$delimiter = '|';
break;
default:
throw new Exception('Invalid collection format value defined in swagger');
break;
}

return $delimiter;
}
}

0 comments on commit 121a126

Please sign in to comment.