PHP code example of crescat-io / saloon-sdk-generator
1. Go to this page and download the library: Download crescat-io/saloon-sdk-generator library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
crescat-io / saloon-sdk-generator example snippets
$generator = new CodeGenerator(
namespace: "App\Sdk",
resourceNamespaceSuffix: 'Resource',
requestNamespaceSuffix: 'Requests',
dtoNamespaceSuffix: 'Dto',
connectorName: 'MySDK', // Replace with your desired SDK name
outputFolder: './Generated', // Replace with your desired output folder
ignoredQueryParams: ['after', 'order_by', 'per_page'] // Ignore params used for pagination
);
$inputPath = 'path/to/api_spec_file.json'; // Replace with your API specification file path
$type = 'postman'; // Replace with your API specification type
$result = $generator->run(Factory::parse($type, $inputPath));
namespace YourNamespace\CustomParser;
use Crescat\SaloonSdkGenerator\Contracts\Parser;
use Crescat\SaloonSdkGenerator\Data\Generator\Endpoint;
use Crescat\SaloonSdkGenerator\Data\Generator\ApiSpecification;
use Crescat\SaloonSdkGenerator\Data\Generator\Parameter;
class CustomParser implements Parser
{
public function __construct(protected $filePath) {}
public function parse(): ApiSpecification
{
// TODO: Implement
parseTheContents($this->filepath)
// Implement a parser that will return an ApiSpecification object:
return new ApiSpecification(
name: 'Custom API',
description: 'A custom API specification',
baseUrl: 'https://api.example.com',
endpoints: [
new Endpoint(
name: 'GetUserInfo',
method: 'GET',
pathSegments: ['users', '{user_id}'],
description: 'Get user information by ID',
queryParameters: [
new Parameter('string', false, 'user_id', 'User ID'),
],
), new Endpoint(
name: 'CreateUser',
method: 'POST',
pathSegments: ['users'],
description: 'Create a new user',
bodyParameters: [
new Parameter('string', false, 'username', 'Username'),
new Parameter('string', false, 'email', 'Email'),
],
)
],
);
}
}
public static function build($content): self
{
// Call file readers depending on the filetype provided (supports JSON and YAML)
return new self(
Str::endsWith($content, '.json')
? Reader::readFromJsonFile(fileName: realpath($content), resolveReferences: ReferenceContext::RESOLVE_MODE_ALL)
: Reader::readFromYamlFile(fileName: realpath($content), resolveReferences: ReferenceContext::RESOLVE_MODE_ALL)
);
}
use Crescat\SaloonSdkGenerator\Factory;
use YourNamespace\CustomParser;
// Replace with the actual namespace of your custom parser
// Register your custom parser
Factory::registerParser('custom', CustomParser::class);
namespace YourNamespace;
use Crescat\SaloonSdkGenerator\Contracts\Generator;
use Crescat\SaloonSdkGenerator\Data\Generator\ApiSpecification;
use Crescat\SaloonSdkGenerator\Data\Generator\Config;
use Nette\PhpGenerator\PhpFile;
class CustomRequestGenerator implements Generator
{
public function __construct(Config $config)
{
// Initialize your generator with the configuration
}
public function generate(ApiSpecification $specification): PhpFile|array
{
// Your custom generation logic here
}
}
$customRequestGenerator = new CustomRequestGenerator($config);
$codeGenerator = new CodeGenerator(
config: $config,
requestGenerator: $customRequestGenerator
// ... you can pass other custom generators as needed
);
$result = $codeGenerator->run($specification);