Skimia\ApiFusion
  • Namespace
  • Class
  • Tree
  • Todo
  • Download

Namespaces

  • PHP
  • Skimia
    • ApiFusion
      • Annotations
        • ApiRouting
          • Annotations
      • Auth
      • Console
        • Commands
      • Domain
        • Contracts
        • Exceptions
        • Traits
        • Users
        • Validation
      • Facade
      • Http
        • Controllers
          • Api
      • Routing

Classes

  • Skimia\ApiFusion\Annotations\ApiRouting\Annotations\ApiEndpoint
  • Skimia\ApiFusion\Annotations\ApiRouting\Annotations\ApiResource
  • Skimia\ApiFusion\Annotations\ApiRouting\ApiRoutingAnnotationsServiceProvider
  • Skimia\ApiFusion\Annotations\ApiRouting\Scanner
  • Skimia\ApiFusion\ApiFusionServiceProvider
  • Skimia\ApiFusion\Auth\Sentinel
  • Skimia\ApiFusion\Auth\User
  • Skimia\ApiFusion\Console\Commands\GenerateDomainApi
  • Skimia\ApiFusion\Domain\ResourceService
  • Skimia\ApiFusion\Domain\ResourceServiceModel
  • Skimia\ApiFusion\Domain\Users\EloquentServiceUserAdapter
  • Skimia\ApiFusion\Domain\Users\SentinelServiceUserAdapter
  • Skimia\ApiFusion\Domain\Validation\Bindings
  • Skimia\ApiFusion\Domain\Validation\Validator
  • Skimia\ApiFusion\Facade\RouteFusion
  • Skimia\ApiFusion\Http\Controllers\Api\ApiController
  • Skimia\ApiFusion\Http\Controllers\Api\ResourceServiceController
  • Skimia\ApiFusion\Http\Controllers\Api\SentinelSessionsController
  • Skimia\ApiFusion\Routing\RouteFusion

Interfaces

  • Skimia\ApiFusion\Domain\Contracts\InputValidatorContract
  • Skimia\ApiFusion\Domain\Contracts\ResourceServiceModelContract
  • Skimia\ApiFusion\Domain\Contracts\ServiceUserContract

Traits

  • Skimia\ApiFusion\Domain\Traits\CheckableTrait

Exceptions

  • Exception
  • Skimia\ApiFusion\Domain\Exceptions\AuthorisationException
  • Skimia\ApiFusion\Domain\Exceptions\DomainException
  • Skimia\ApiFusion\Domain\Exceptions\RequiredInputValidatorException
  • Skimia\ApiFusion\Domain\Exceptions\ValidationException
  1 <?php
  2 
  3 namespace Skimia\ApiFusion\Annotations\ApiRouting;
  4 
  5 use Skimia\ApiFusion\Annotations\ApiRouting\Annotations\ApiEndpoint;
  6 use Skimia\Foundation\Annotations\Scanner as BaseScanner;
  7 use Skimia\ApiFusion\Annotations\ApiRouting\Annotations\ApiResource;
  8 
  9 class Scanner extends BaseScanner
 10 {
 11     /**
 12      * {@inheritdoc}
 13      */
 14     public function getScannedAnnotationPath()
 15     {
 16         return $this->app['path.storage'].'/framework/api.routes.scanned.php';
 17     }
 18 
 19     public function getAnnotationsDefinitions()
 20     {
 21         $output = '';
 22 
 23         $reader = $this->getReader();
 24 
 25         /*
 26          * @var ReflectionClass
 27          */
 28         foreach ($this->getClassesToScan() as $class) {
 29             foreach ($reader->getClassAnnotations($class) as $annotation) {
 30                 /*
 31                  * @var ApiResource
 32                  */
 33                 if (get_class($annotation) == ApiResource::class) {
 34                     $output .= $this->buildApiRoute($class->getName(), $annotation->version, $annotation->resourceEndPoint, $annotation->values);
 35                 }
 36             }
 37 
 38             foreach ($class->getMethods() as $method)
 39             {
 40                 foreach ($reader->getMethodAnnotations($method) as $annotation)
 41                 {
 42                     /*
 43                     * @var ApiEndpoint
 44                     */
 45                     if (get_class($annotation) == ApiEndpoint::class) {
 46                         $output .= $this->buildApiEndpoint($class->getName(), $method->getName(), $annotation->version, $annotation->verb, $annotation->resourceEndPoint, $annotation->values);
 47                     }
 48                 }
 49             }
 50         }
 51 
 52         return trim($output);
 53     }
 54 
 55     /**
 56      * Build the event listener for the class and method.
 57      *
 58      * @param  string  $class
 59      * @param  string  $method
 60      * @param  array  $events
 61      * @return string
 62      */
 63     protected function buildApiRoute($class, $version, $endpoint, $vars)
 64     {
 65         return sprintf('    $api->version("%s", function ($api) {'.PHP_EOL.
 66             '       $api->resource("%s", "%s",'.PHP_EOL.'%s'.PHP_EOL.'      );'.PHP_EOL.
 67             '   });'.PHP_EOL,
 68             $version,
 69             $endpoint,
 70             addslashes($class),
 71             var_export($vars, true));
 72     }
 73     /**
 74      * Build the event listener for the class and method.
 75      *
 76      * @param  string  $class
 77      * @param  string  $method
 78      * @param  array  $events
 79      * @return string
 80      */
 81     protected function buildApiEndpoint($class, $method, $version, $verb, $endpoint, $vars)
 82     {
 83         return sprintf('    $api->version("%s", function ($api) {'.PHP_EOL.
 84             '       $api->%s("%s", "%s@%s",'.PHP_EOL.'%s'.PHP_EOL.'     );'.PHP_EOL.
 85             '   });'.PHP_EOL,
 86             $version,
 87             $verb,
 88             $endpoint,
 89             addslashes($class),
 90             $method,
 91             var_export($vars, true));
 92     }
 93 
 94     public function loadScannedAnnotations()
 95     {
 96         if ($this->annotationsAreScanned()) {
 97             $api = $this->app['api.router'];
 98 
 99             require $this->getScannedAnnotationPath();
100 
101             return true;
102         }
103 
104         return false;
105     }
106 }
107 
Skimia\ApiFusion API documentation generated by ApiGen