* @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:----n0Jmy3O/IYXUgiZW+U1+cRnuNInKr4YqzPGAHz+Tzn6kT6l6rzuvFB3DPkubJds2Df56bxV/b0ysQ7qkidK3MvAJ7ufYIB261/bh4nZOZCLNbTrsI0dGWi7LuB8AZ90l1+KuwTgwwuj/NvOQj/eFTxHorjilulAWkF9Wg06PsHbLCmGKHP2XKrDoDKha7pldsEuraM66rKAUtjcqRqHd/iwElTyouqi+w1NfbPS+QlL5vWA9KxUOfUu7sojliONTOoIe2lWjQi/YiRz5HH3DA2BJVxw9w3t8uIHxKBX7BFFnvoQq5Uv1I5okkotsSIi2GatVvbGrbhbx42gHeDDZjGISvQbvTAONgvsDp7QkuDFig32OMmKRI3guhKZeMlqpK+FM0fTls7k58mldwNpuNq4Yzr+Vvh1uHJRv3oGmucSP7tr1V2uUyUm2SDKwTJNoIZbZwLRQHUumRVMMeSpTcnT7Un82HBK6VoWq99LpTdRiiNWHlW7E+7FU4d4dVA+agcFbAkXgzDJMIpCvjMlXhyQlYY/eKqVPpdxSTcYR3T1awYKE63kucZeVc5x63qA2llYUCQvLUFgPzfZnAgTFhfXtks/c/Hh7/TPp3tXwVGFmr8Kt6op/4zRmsMC6MH0enL8oHANCOiKJrPTlrgL95tIt37dT3N5I7gep0aRLJrI=----ATTACHMENT:----ODQzMTA3ODEwMzE4NTQ3NyA0NTQ4MzAxODA5Mjg0MjIyIDE2Nzc5MzAyNDI2MjI2NzM=