123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- <?php
- namespace Knuckles\Scribe\Config;
- use Illuminate\Support\Arr;
- use Illuminate\Support\Str;
- class Serializer
- {
- // todo new features & breaking changes:
- // - strategy config tuples - responseCalls support
- // - support route method + path in route matching
- // - no more route groups, header apply rules move to override
- // - no more apply rules for response_calls, use strategy settings. methods is replaced by only/except
- // todo design beta/migration story
- // todo design upgrade story
- // todo design continuous upgrade story
- // todo document parameters
- // todo support multiple base URLs
- public static function toOldConfig(Extracting $extractingConfig, Output $outputConfig): array
- {
- return [
- '__configVersion' => 'v2',
- 'theme' => $outputConfig->theme,
- 'title' => $outputConfig->title,
- 'description' => $outputConfig->description,
- 'base_url' => $outputConfig->baseUrls[0] ?? null,
- 'type' => $outputConfig->type[0],
- $outputConfig->type[0] => self::translateKeys($outputConfig->type[1]),
- 'try_it_out' => self::translateKeys($outputConfig->tryItOut),
- 'postman' => self::translateKeys($outputConfig->postman),
- 'openapi' => self::translateKeys($outputConfig->openApi),
- 'intro_text' => $outputConfig->introText,
- 'example_languages' => $outputConfig->exampleLanguages,
- 'logo' => $outputConfig->logo,
- 'last_updated' => $outputConfig->lastUpdated,
- 'groups' => [
- 'order' => $outputConfig->groupsOrder,
- 'default' => $extractingConfig->defaultGroup,
- ],
- 'examples' => [
- 'faker_seed' => $extractingConfig->fakerSeedForExamples,
- 'models_source' => $extractingConfig->dataSourcesForExampleModels,
- ],
- 'routeMatcher' => $extractingConfig->routeMatcher,
- 'database_connections_to_transact' => $extractingConfig->databaseConnectionsToTransact,
- 'fractal' => [
- 'serializer' => $extractingConfig->fractalSerializer,
- ],
- 'auth' => self::translateKeys($extractingConfig->auth),
- 'strategies' => $extractingConfig->strategies,
- 'routes' => static::generateRoutesConfig($extractingConfig->routes),
- ];
- }
- protected static function generateRoutesConfig(Routes $routesConfig): array
- {
- return [
- [
- 'match' => [
- 'prefixes' => $routesConfig->prefixes,
- 'domains' => $routesConfig->domains,
- 'versions' => $routesConfig->dingoVersions,
- ],
- 'include' => $routesConfig->alwaysInclude,
- 'exclude' => $routesConfig->alwaysExclude,
- ]
- ];
- }
- protected static function translateKeys($array)
- {
- return Arr::mapWithKeys($array, function ($value, $key) {
- return [Str::snake($key) => $value];
- });
- }
- }
|