-
Notifications
You must be signed in to change notification settings - Fork 6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Input validation is now supported as strict JSON validation
- Loading branch information
Nael Rashdeen
committed
Sep 28, 2017
1 parent
66f3158
commit eaf1a30
Showing
10 changed files
with
642 additions
and
329 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
72 changes: 72 additions & 0 deletions
72
.../swagger-codegen/src/main/resources/php-symfony/StrictJsonDeserializationVisitor.mustache
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
<?php | ||
/* | ||
* Copyright 2017 Dmitriy Simushev | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
namespace {{servicePackage}}; | ||
|
||
use JMS\Serializer\Context; | ||
use JMS\Serializer\JsonDeserializationVisitor; | ||
|
||
class StrictJsonDeserializationVisitor extends JsonDeserializationVisitor | ||
{ | ||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public function visitString($data, array $type, Context $context) | ||
{ | ||
if (!is_string($data)) { | ||
throw TypeMismatchException::fromValue('string', $data, $context); | ||
} | ||
|
||
return parent::visitString($data, $type, $context); | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public function visitBoolean($data, array $type, Context $context) | ||
{ | ||
if (!is_bool($data)) { | ||
throw TypeMismatchException::fromValue('boolean', $data, $context); | ||
} | ||
|
||
return parent::visitBoolean($data, $type, $context); | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public function visitInteger($data, array $type, Context $context) | ||
{ | ||
if (!is_int($data)) { | ||
throw TypeMismatchException::fromValue('integer', $data, $context); | ||
} | ||
|
||
return parent::visitInteger($data, $type, $context); | ||
} | ||
|
||
/** | ||
* {@inheritdoc} | ||
*/ | ||
public function visitDouble($data, array $type, Context $context) | ||
{ | ||
if (!is_float($data) && !is_integer($data)) { | ||
throw TypeMismatchException::fromValue('double', $data, $context); | ||
} | ||
|
||
return parent::visitDouble($data, $type, $context); | ||
} | ||
} |
52 changes: 52 additions & 0 deletions
52
modules/swagger-codegen/src/main/resources/php-symfony/TypeMismatchException.mustache
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
<?php | ||
/* | ||
* Copyright 2017 Dmitriy Simushev | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
namespace {{servicePackage}}; | ||
|
||
use JMS\Serializer\DeserializationContext; | ||
use JMS\Serializer\Exception\RuntimeException; | ||
|
||
class TypeMismatchException extends RuntimeException | ||
{ | ||
/** | ||
* A handy method for building exception instance. | ||
* | ||
* @param string $expected_type | ||
* @param mixed $actual_value | ||
* @param DeserializationContext|null $context | ||
* @return TypeMismatchException | ||
*/ | ||
public static function fromValue( | ||
$expected_type, | ||
$actual_value, | ||
DeserializationContext $context = null | ||
) { | ||
if (null !== $context && count($context->getCurrentPath()) > 0) { | ||
$property = sprintf('property "%s" to be ', implode('.', $context->getCurrentPath())); | ||
} else { | ||
$property = ''; | ||
} | ||
|
||
return new static(sprintf( | ||
'Expected %s%s, but got %s: %s', | ||
$property, | ||
$expected_type, | ||
gettype($actual_value), | ||
json_encode($actual_value) | ||
)); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.