mhapach/swaggermodelgenerator

Swagger Model generator for Laravel

0.0.32 2024-09-16 15:27 UTC

README

Latest Version on Packagist Total Downloads Build Status StyleCI

This library generates models and service with methods based on Swagger scheme. Current release supports OpenAPI 2.0 (Aka OAS) and OpenApi 3.0

Installation

Step 1. Add Eloquent Model Generator to your project via Composer

$ composer require mhapach/swaggermodelgenerator

Step 2. Register SwaggerModelGeneratorServiceProvider in config/app.php

'providers' => [
    //...
    \mhapach\SwaggerModelGenerator\SwaggerModelGeneratorServiceProvider::class,
]

Usage

Models and service generation

$serviceScheme = "http://your-service.com/scheme";
$modelsNamespace = 'App\Services\Models';
$serviceNamespace = 'App\Services';
$modelsPath = "/your-project/app/Services/Models";
$servicePath = "/your-project/app/Services";

/** @var Swagger $converterInstance */
$converterInstance = (new SwaggerModelGenerator($serviceScheme, true))->getConverterInstance($modelsNamespace, $serviceNamespace);
$converterInstance->genModels($modelsPath);        
$converterInstance->genService($servicePath);

Generated service and models usage. Example 1

$serviceAddress = "http://your-service.com/some-name";
$service = new Service($serviceAddress);
$bc = $service->benefitCategoriesUsingGET([
    'path' => ['id' => 1122],
    'query' => ['some-param' => 1],
]);   

Generated service and models usage. Example 2

$serviceAddress = "http://your-service.com/some-name";
$token = 'daksdlka shdlkjahslkdj h==';
$headers = [
    'Accept' => '*/*',
    'Content-Type' => 'application/x-www-form-urlencoded',
    'Cache-Control' => 'no-cache',
    "Authorization" => "Bearer {$token}"
];
$service = new Service($serviceAddress, $headers);
$bc = $service->benefitCategoriesUsingGET([
    'query' => ['some-param' => 1],
    'body' => '{"param1":100, "param2":200}'
]);

Debug log enabling. Example 3

$serviceAddress = "http://your-service.com/some-name";
$config = config('logging.channels.'.config('logging.default'));
$config['path'] = storage_path("logs/rest.log"); // optional
$logger = \Log::build($config);
$service = new Service($serviceAddress, ['Content-Type' => 'application/json'], $logger);
//Enabling log    
$service->enableLog();
// call service method        
$bc = $service->benefitCategoriesUsingGET([
    'query' => ['some-param' => 1],
    'body' => '{"param1":100, "param2":200}'
]);   

Change log

Please see the changelog for more information on what has changed recently.

Testing

$ composer test

Contributing

Please see contributing.md for details and a todolist.

Security

If you discover any security related issues, please email author email instead of using the issue tracker.

Credits

License

license. Please see the license file for more information.