Skip to content

Commit 2efea1f

Browse files
committed
changed base param class to interface
1 parent 4fc5a34 commit 2efea1f

9 files changed

+97
-79
lines changed

src/Generator.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ protected function addActionParameters()
101101
{
102102
$rules = $this->getFormRules() ?: [];
103103

104-
$parameters = (new Parameters\PathParameterGenerator($this->method, $this->originalUri, $rules))->getParameters();
104+
$parameters = (new Parameters\PathParameterGenerator($this->originalUri))->getParameters();
105105

106106
if (!empty($rules)) {
107107
$parameterGenerator = $this->getParameterGenerator($rules);
@@ -137,9 +137,9 @@ protected function getParameterGenerator($rules)
137137
case 'post':
138138
case 'put':
139139
case 'patch':
140-
return new Parameters\BodyParameterGenerator($this->method, $this->originalUri, $rules);
140+
return new Parameters\BodyParameterGenerator($rules);
141141
default:
142-
return new Parameters\QueryParameterGenerator($this->method, $this->originalUri, $rules);
142+
return new Parameters\QueryParameterGenerator($rules);
143143
}
144144
}
145145
}

src/Parameters/BodyParameterGenerator.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,17 @@
22

33
namespace Mtrajano\LaravelSwagger\Parameters;
44

5-
class BodyParameterGenerator extends ParameterGenerator
5+
class BodyParameterGenerator implements ParameterGenerator
66
{
7+
use Concerns\GeneratesFromRules;
8+
9+
protected $rules;
10+
11+
public function __construct($rules)
12+
{
13+
$this->rules = $rules;
14+
}
15+
716
public function getParameters()
817
{
918
$required = [];
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<?php
2+
3+
namespace Mtrajano\LaravelSwagger\Parameters\Concerns;
4+
5+
trait GeneratesFromRules
6+
{
7+
protected function splitRules($rules)
8+
{
9+
if (is_string($rules)) {
10+
return explode('|', $rules);
11+
} else {
12+
return $rules;
13+
}
14+
}
15+
16+
protected function getParamType(array $paramRules)
17+
{
18+
if (in_array('integer', $paramRules)) {
19+
return 'integer';
20+
} else if (in_array('numeric', $paramRules)) {
21+
return 'number';
22+
} else if (in_array('boolean', $paramRules)) {
23+
return 'boolean';
24+
} else if (in_array('array', $paramRules)) {
25+
return 'array';
26+
} else {
27+
//date, ip, email, etc..
28+
return 'string';
29+
}
30+
}
31+
32+
protected function isParamRequired(array $paramRules)
33+
{
34+
return in_array('required', $paramRules);
35+
}
36+
37+
protected function getEnumValues(array $paramRules)
38+
{
39+
$in = $this->getInParameter($paramRules);
40+
41+
if (!$in) {
42+
return [];
43+
}
44+
45+
list($param, $vals) = explode(':', $in);
46+
47+
return explode(',', $vals);
48+
}
49+
50+
private function getInParameter(array $paramRules)
51+
{
52+
foreach ($paramRules as $rule) {
53+
if (starts_with($rule, 'in:')) {
54+
return $rule;
55+
}
56+
}
57+
58+
return false;
59+
}
60+
}

src/Parameters/ParameterGenerator.php

Lines changed: 3 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -2,76 +2,9 @@
22

33
namespace Mtrajano\LaravelSwagger\Parameters;
44

5-
abstract class ParameterGenerator
5+
interface ParameterGenerator
66
{
7-
protected $method;
7+
public function getParameters();
88

9-
protected $uri;
10-
11-
protected $rules;
12-
13-
public function __construct($method, $uri, array $rules)
14-
{
15-
$this->method = $method;
16-
$this->uri = $uri;
17-
$this->rules = $rules;
18-
}
19-
20-
abstract public function getParameters();
21-
22-
abstract public function getParamLocation();
23-
24-
protected function getParamType(array $paramRules)
25-
{
26-
if (in_array('integer', $paramRules)) {
27-
return 'integer';
28-
} else if (in_array('numeric', $paramRules)) {
29-
return 'number';
30-
} else if (in_array('boolean', $paramRules)) {
31-
return 'boolean';
32-
} else if (in_array('array', $paramRules)) {
33-
return 'array';
34-
} else {
35-
//date, ip, email, etc..
36-
return 'string';
37-
}
38-
}
39-
40-
protected function isParamRequired(array $paramRules)
41-
{
42-
return in_array('required', $paramRules);
43-
}
44-
45-
protected function splitRules($rules)
46-
{
47-
if (is_string($rules)) {
48-
return explode('|', $rules);
49-
} else {
50-
return $rules;
51-
}
52-
}
53-
54-
protected function getEnumValues(array $paramRules)
55-
{
56-
$in = $this->getInParameter($paramRules);
57-
58-
if (!$in) {
59-
return [];
60-
}
61-
62-
list($param, $vals) = explode(':', $in);
63-
64-
return explode(',', $vals);
65-
}
66-
67-
private function getInParameter(array $paramRules)
68-
{
69-
foreach ($paramRules as $rule) {
70-
if (starts_with($rule, 'in:')) {
71-
return $rule;
72-
}
73-
}
74-
75-
return false;
76-
}
9+
public function getParamLocation();
7710
}

src/Parameters/PathParameterGenerator.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,15 @@
22

33
namespace Mtrajano\LaravelSwagger\Parameters;
44

5-
class PathParameterGenerator extends ParameterGenerator
5+
class PathParameterGenerator implements ParameterGenerator
66
{
7+
protected $uri;
8+
9+
public function __construct($uri)
10+
{
11+
$this->uri = $uri;
12+
}
13+
714
public function getParameters()
815
{
916
$params = [];

src/Parameters/QueryParameterGenerator.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,17 @@
22

33
namespace Mtrajano\LaravelSwagger\Parameters;
44

5-
class QueryParameterGenerator extends ParameterGenerator
5+
class QueryParameterGenerator implements ParameterGenerator
66
{
7+
use Concerns\GeneratesFromRules;
8+
9+
protected $rules;
10+
11+
public function __construct($rules)
12+
{
13+
$this->rules = $rules;
14+
}
15+
716
public function getParameters()
817
{
918
$params = [];

tests/Parameters/BodyParameterGeneratorTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public function testEnumInBody()
7878

7979
private function getBodyParameters(array $rules)
8080
{
81-
$bodyParameters = (new BodyParameterGenerator('post', '/', $rules))->getParameters();
81+
$bodyParameters = (new BodyParameterGenerator($rules))->getParameters();
8282

8383
return current($bodyParameters);
8484
}

tests/Parameters/PathParameterGeneratorTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,6 @@ public function testEmptyParameters()
5151

5252
private function getPathParameters($uri)
5353
{
54-
return (new PathParameterGenerator('get', $uri, []))->getParameters();
54+
return (new PathParameterGenerator($uri))->getParameters();
5555
}
5656
}

tests/Parameters/QueryParameterGeneratorTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,6 @@ public function testEnumRuleObjet()
8181

8282
private function getQueryParameters(array $rules)
8383
{
84-
return (new QueryParameterGenerator('get', '/', $rules))->getParameters();
84+
return (new QueryParameterGenerator($rules))->getParameters();
8585
}
8686
}

0 commit comments

Comments
 (0)