Esempio n. 1
0
 /**
  * @param Request $request
  * @param array   $operationDefinition
  *
  * @throws MalformedContentException
  * @throws UnsupportedException
  */
 public function coerceRequest(Request $request, array $operationDefinition)
 {
     $content = $this->contentDecoder->decodeContent($request, $operationDefinition);
     if (!isset($operationDefinition['parameters'])) {
         return;
     }
     $paramBagMapping = ['query' => 'query', 'path' => 'attributes', 'header' => 'headers'];
     foreach ($operationDefinition['parameters'] as $paramDefinition) {
         $paramName = $paramDefinition['name'];
         if ($paramDefinition['in'] === 'body') {
             if ($content !== null) {
                 $request->attributes->set($paramName, $content);
             }
             continue;
         }
         if (!isset($paramBagMapping[$paramDefinition['in']])) {
             throw new UnsupportedException("Unsupported parameter 'in' value in definition '{$paramDefinition['in']}'");
         }
         $paramBagName = $paramBagMapping[$paramDefinition['in']];
         if (!$request->{$paramBagName}->has($paramName)) {
             continue;
         }
         $request->attributes->set($paramName, ParameterCoercer::coerceParameter($paramDefinition, $request->{$paramBagName}->get($paramName)));
     }
 }
 /**
  * @test
  */
 public function willConstructDate()
 {
     $coercer = new RequestCoercer($this->contentDecoderMock);
     $request = new Request(['foo' => "2015-01-01"], [], [], [], [], []);
     $operationDefinition = ['parameters' => [['name' => 'foo', 'in' => 'query', 'type' => 'string', 'format' => 'date']]];
     $coercer->coerceRequest($request, $operationDefinition);
     $expected = ParameterCoercer::coerceParameter($operationDefinition['parameters'][0], "2015-01-01");
     // Sanity check
     $this->assertInstanceOf('DateTime', $expected);
     $this->assertEquals($expected, $request->attributes->get('foo'));
 }
 /**
  * @dataProvider unsupportedPrimitiveConversionProvider
  * @test
  *
  * @expectedException \KleijnWeb\SwaggerBundle\Exception\UnsupportedException
  *
  * @param array $spec
  * @param mixed $value
  */
 public function willThrowUnsupportedExceptionInPredefinedCases($spec, $value)
 {
     $spec = array_merge(['type' => 'string', 'name' => $value], $spec);
     ParameterCoercer::coerceParameter($spec, $value);
 }