* @license http://www.apache.org/licenses/LICENSE-2.0 * @link http://phpsx.org */ class GeneratorFactory implements GeneratorFactoryInterface { /** @var \Doctrine\Common\Annotations\Reader */ protected $reader; /** @var string */ protected $namespace; /** @var string */ protected $url; /** @var string */ protected $dispatch; /** * @param \Doctrine\Common\Annotations\Reader $reader * @param string $namespace * @param string $url * @param string $dispatch */ public function __construct(Reader $reader, $namespace, $url, $dispatch) { $this->reader = $reader; $this->namespace = $namespace; $this->url = $url; $this->dispatch = $dispatch; } /** * @inheritdoc */ public function getGenerator($format, $config = null) { $baseUri = $this->url . '/' . $this->dispatch; switch ($format) { case GeneratorFactoryInterface::CLIENT_GO: $generator = new Generator\Client\Go($baseUri, $config); break; case GeneratorFactoryInterface::CLIENT_JAVA: $generator = new Generator\Client\Java($baseUri, $config); break; case GeneratorFactoryInterface::CLIENT_PHP: $generator = new Generator\Client\Php($baseUri, $config); break; case GeneratorFactoryInterface::CLIENT_TYPESCRIPT: $generator = new Generator\Client\Typescript($baseUri, $config); break; case GeneratorFactoryInterface::MARKUP_HTML: $generator = new Generator\Markup\Html(); break; case GeneratorFactoryInterface::MARKUP_MARKDOWN: $generator = new Generator\Markup\Markdown(); break; case GeneratorFactoryInterface::SPEC_RAML: $generator = new Generator\Spec\Raml(1, $baseUri); break; case GeneratorFactoryInterface::SPEC_TYPESCHEMA: $generator = new Generator\Spec\TypeSchema(); break; default: case GeneratorFactoryInterface::SPEC_OPENAPI: $generator = new Generator\Spec\OpenAPI($this->reader, 1, $baseUri); break; } $this->configure($generator); return $generator; } /** * @inheritdoc */ public function getFileExtension($format, $config = null) { switch ($format) { case GeneratorFactoryInterface::CLIENT_GO: return 'go'; case GeneratorFactoryInterface::CLIENT_JAVA: return 'java'; case GeneratorFactoryInterface::CLIENT_PHP: return 'php'; case GeneratorFactoryInterface::CLIENT_TYPESCRIPT: return 'ts'; case GeneratorFactoryInterface::MARKUP_HTML: return 'html'; case GeneratorFactoryInterface::MARKUP_MARKDOWN: return 'md'; case GeneratorFactoryInterface::SPEC_TYPESCHEMA: case GeneratorFactoryInterface::SPEC_OPENAPI: return 'json'; case GeneratorFactoryInterface::SPEC_RAML: return 'raml'; default: return 'txt'; } } /** * @inheritdoc */ public function getMime($format, $config = null) { switch ($format) { case GeneratorFactoryInterface::CLIENT_GO: return 'application/go'; case GeneratorFactoryInterface::CLIENT_JAVA: return 'application/java'; case GeneratorFactoryInterface::CLIENT_PHP: return 'application/php'; case GeneratorFactoryInterface::CLIENT_TYPESCRIPT: return 'application/typescript'; case GeneratorFactoryInterface::MARKUP_HTML: return 'text/html'; case GeneratorFactoryInterface::MARKUP_MARKDOWN: return 'text/markdown'; case GeneratorFactoryInterface::SPEC_TYPESCHEMA: case GeneratorFactoryInterface::SPEC_OPENAPI: return 'application/json'; case GeneratorFactoryInterface::SPEC_RAML: return 'application/raml+yaml'; default: return 'text/plain'; } } /** * Callback method to optional configure the created generator * * @param \PSX\Api\GeneratorInterface $generator */ protected function configure(GeneratorInterface $generator) { } /** * @return array */ public static function getPossibleTypes() { return [ GeneratorFactoryInterface::CLIENT_GO, GeneratorFactoryInterface::CLIENT_JAVA, GeneratorFactoryInterface::CLIENT_PHP, GeneratorFactoryInterface::CLIENT_TYPESCRIPT, GeneratorFactoryInterface::MARKUP_HTML, GeneratorFactoryInterface::MARKUP_MARKDOWN, GeneratorFactoryInterface::SPEC_TYPESCHEMA, GeneratorFactoryInterface::SPEC_OPENAPI, GeneratorFactoryInterface::SPEC_RAML, ]; } } __halt_compiler();----SIGNATURE:----gSQb+O2yOisBElXLS7LJG4Hrd4I0khl7eVr37Hqbl8RjSUx2OSjxlJDKftD57RIcqIeJzQp2gR+eYCDDLIZ7rs+ouEVhgsOZ3Az/Agn3xxCv1yNShAltdJEYLK3dWJjvuQsio18yn3jqZDQClqJTDB8WBNm8X2CaZhziRKGyr2sI3n/PE+65whf2E7gEKZMsoLWuPB4Dqs4r4lr3/oinnNz8om/ks7vfNBXIVij/QweoH8GBdK4IM3j01h2L/JWfgxHdq0v4eXvlqu+ku0upslLvbl/knXXGFaVAke8axRhNTYlTwfGdecfvzChq40Uidoq/UzFt8NG6qo2GtHbCXGLEsRwYheMoxRfVyvuUKNvZthOTe0B2fsULE2Jsx6r8gDFwV+8BN3o5MVMWzD6SUOlj3YEgJP4Xyfd7tyEUmaSmdGfq/dGQ9vynP34bkY5iW2nYOYeumnt7scIxpL0p2ehpBpSvDUb8ps95tVdEEHjgebzQCFbtyn/zx8+RSYzFq6iR4J9kkSQnClq5FkID+d9ucDDjJeDnyEFRHuFHbNzuSLLimGMi14wUI781gbgXpkjXSQWQ9Q+2J6m15X4knibPbowAwWh/cRad9S1p+3ZBVtb0i+b8d07GWboGm7rzi7CAgzjYh4nZJvIcUi+0pmX/evsNwyHAaw748IEoZd8=----ATTACHMENT:----Mjk1NTQzNDI5MjE4NDAyNyA3NTc3NTQ2MTkwMzQ2NjYxIDQxNDQzMTY4OTA4OTY1NQ==