Esempio n. 1
0
 protected function generateType(PropertyInterface $type, $data)
 {
     if ($type instanceof Property\ComplexType) {
         $fields = array();
         $properties = $type->getProperties();
         foreach ($properties as $name => $property) {
             if (isset($data[$name])) {
                 $fields[$name] = $this->generateType($property, $data[$name]);
             } elseif ($property->isRequired()) {
                 throw new RuntimeException('Missing sample data of required property ' . $name);
             }
         }
         return new Record($type->getName(), $fields);
     } elseif ($type instanceof Property\ArrayType) {
         if (is_array($data)) {
             $values = array();
             foreach ($data as $value) {
                 $values[] = $this->generateType($type->getPrototype(), $value);
             }
             return $values;
         } elseif ($type->isRequired()) {
             throw new RuntimeException('Missing sample data of required property ' . $type->getName());
         }
     } elseif ($type instanceof Property\BooleanType) {
         return (bool) $data;
     } elseif ($type instanceof Property\IntegerType) {
         return (int) $data;
     } elseif ($type instanceof Property\FloatType) {
         return (double) $data;
     } else {
         return (string) $data;
     }
 }
Esempio n. 2
0
File: Raml.php Progetto: seytar/psx
 protected function setParameterType(PropertyInterface $parameter, &$raml, $indent)
 {
     $indent = str_repeat(' ', $indent);
     switch (true) {
         case $parameter instanceof Property\IntegerType:
             $raml .= $indent . 'type: integer' . "\n";
             break;
         case $parameter instanceof Property\FloatType:
             $raml .= $indent . 'type: number' . "\n";
             break;
         case $parameter instanceof Property\BooleanType:
             $raml .= $indent . 'type: boolean' . "\n";
             break;
         case $parameter instanceof Property\DateType:
         case $parameter instanceof Property\DateTimeType:
             $raml .= $indent . 'type: date' . "\n";
             break;
         default:
             $raml .= $indent . 'type: string' . "\n";
             break;
     }
     $description = $parameter->getDescription();
     if (!empty($description)) {
         $raml .= $indent . 'description: ' . Inline::dump($parameter->getDescription()) . "\n";
     }
     $raml .= $indent . 'required: ' . ($parameter->isRequired() ? 'true' : 'false') . "\n";
     if ($parameter instanceof Property\DecimalType) {
         $min = $parameter->getMin();
         $max = $parameter->getMax();
         if ($min !== null) {
             $raml .= $indent . 'minimum: ' . $min . "\n";
         }
         if ($max !== null) {
             $raml .= $indent . 'maximum: ' . $max . "\n";
         }
     } elseif ($parameter instanceof Property\StringType) {
         $minLength = $parameter->getMinLength();
         $maxLength = $parameter->getMaxLength();
         $enumeration = $parameter->getEnumeration();
         $pattern = $parameter->getPattern();
         if ($minLength !== null) {
             $raml .= $indent . 'minLength: ' . $minLength . "\n";
         }
         if ($maxLength !== null) {
             $raml .= $indent . 'maxLength: ' . $maxLength . "\n";
         }
         if (!empty($enumeration)) {
             $raml .= $indent . 'enum: ' . Inline::dump($enumeration) . "\n";
         }
         if (!empty($pattern)) {
             $raml .= $indent . 'pattern: ' . Inline::dump($pattern) . "\n";
         }
     }
 }
Esempio n. 3
0
 protected function setParameterType(PropertyInterface $parameter, Parameter $param)
 {
     switch (true) {
         case $parameter instanceof Property\IntegerType:
             $param->setType('integer');
             break;
         case $parameter instanceof Property\FloatType:
             $param->setType('number');
             break;
         case $parameter instanceof Property\BooleanType:
             $param->setType('boolean');
             break;
         case $parameter instanceof Property\DateType:
             $param->setType('string');
             $param->setFormat('date');
             break;
         case $parameter instanceof Property\DateTimeType:
             $param->setType('string');
             $param->setFormat('date-time');
             break;
         default:
             $param->setType('string');
             break;
     }
     $param->setDescription($parameter->getDescription());
     $param->setRequired($parameter->isRequired());
     if ($parameter instanceof Property\DecimalType) {
         $param->setMinimum($parameter->getMin());
         $param->setMaximum($parameter->getMax());
     } elseif ($parameter instanceof Property\StringType) {
         $param->setMinimum($parameter->getMinLength());
         $param->setMaximum($parameter->getMaxLength());
         $param->setEnum($parameter->getEnumeration());
     }
 }
Esempio n. 4
0
 protected function assertRequired($data, PropertyInterface $property, $path)
 {
     if ($property->isRequired() && $data === null) {
         throw new ValidationException('Property ' . $path . ' is required');
     }
 }