Esempio n. 1
0
 /**
  * @param DescriptionBuilder $builder
  * @return array
  */
 public function toSwagger(DescriptionBuilder $builder)
 {
     $out = parent::toSwagger($builder);
     unset($out['type']);
     $resourceDefinition = ResourceDefinitionLibrary::make($this->resourceDefinition);
     $context = Method::toAction($this->route->getMethod(), $this->cardinality);
     $out['schema'] = ['$ref' => $builder->addResourceDefinition($resourceDefinition, $context, $this->cardinality)];
     return $out;
 }
Esempio n. 2
0
 /**
  * @param DescriptionBuilder $builder
  * @return array
  */
 public function toSwagger(DescriptionBuilder $builder)
 {
     $response = [];
     // Is this a native type?
     if (PropertyType::isNative($this->getType())) {
         /*
         $response = [
             'type' => $this->getType()
         ];
         */
     } else {
         $schema = $builder->getRelationshipSchema(ResourceDefinitionLibrary::make($this->getType()), $this->getContext(), $this->getCardinality());
         $response = ['schema' => $schema];
     }
     if (isset($this->description)) {
         $response['description'] = $this->description;
     }
     if ($this->headers) {
         $response['headers'] = $this->headers->toSwagger($builder);
     }
     return $response;
 }
 /**
  * @param $request
  * @param $resourceDefinition
  * @param ContextContract $context
  * @param int $records
  * @return SelectQueryParameters
  */
 public function getFilters($request, $resourceDefinition, Context $context, int $records = 10)
 {
     $definition = ResourceDefinitionLibrary::make($resourceDefinition);
     $queryBuilder = new SelectQueryParameters();
     // Now check for query parameters
     foreach ($definition->getFields() as $field) {
         if ($field instanceof ResourceField && $field->isFilterable()) {
             $parameter = $this->propertyResolver->getParameterFromRequest($request, $field->getDisplayName());
             if ($parameter) {
                 $queryBuilder->where(new WhereParameter($field->getName(), Operator::EQ, $parameter));
             }
         }
     }
     // Processors
     $context->getProcessors()->processFilters($this, $queryBuilder, $request, $definition, $context, $records);
     return $queryBuilder;
 }
 /**
  * @param SwaggerBuilder $builder
  * @param $action
  * @return mixed[]
  */
 public function toSwagger(SwaggerBuilder $builder, $action)
 {
     if (Action::isReadContext($action) && $this->isExpanded()) {
         return ['type' => 'object', 'schema' => $builder->getRelationshipSchema(ResourceDefinitionLibrary::make($this->childResource), $this->getExpandContext(), $this->cardinality)];
     } elseif (Action::isWriteContext($action)) {
         if ($this->linkOnly) {
             return ['type' => 'object', 'schema' => $builder->getRelationshipSchema(ResourceDefinitionLibrary::make($this->childResource), Action::IDENTIFIER, $this->cardinality)];
         } else {
             return ['type' => 'object', 'schema' => $builder->getRelationshipSchema(ResourceDefinitionLibrary::make($this->childResource), Action::CREATE, $this->cardinality)];
         }
     } else {
         return ['type' => 'object', 'schema' => ['properties' => [ResourceTransformer::RELATIONSHIP_LINK => ['type' => 'string']]]];
     }
 }
 /**
  * AbstractResourceController constructor.
  * @param string $resourceDefinitionClass
  */
 public function __construct($resourceDefinitionClass)
 {
     $this->setResourceDefinition(ResourceDefinitionLibrary::make($resourceDefinitionClass));
 }