Ce projet est un générateur de classes Pharo Smalltalk à partir de spécifications OpenAPI 3.0.1. Il permet de générer automatiquement des modèles et un client API à partir d'un fichier de spécification OpenAPI au format JSON ou YAML.
- Conversion de fichiers YAML en JSON
- Génération de classes de modèles à partir des schémas OpenAPI
- Génération d'un client API avec des méthodes pour chaque endpoint
- Support des paramètres de chemin, de requête et de corps
- Support des réponses typées
Pour installer ce projet dans Pharo 12, exécutez le code suivant dans un Playground :
Metacello new
baseline: 'OpenAPIGenerator';
repository: 'github://Evref-BL/pharo-openapi-generator:main';
load.
| generator fileRef |
"Load the OpenAPI specification from a file"
fileRef := '/path/to/openapi.json' asFileReference.
"Create the generator"
generator := OpenAPIGenerator fromFile: fileRef.
"Configure the generator"
generator
prefix: 'MyAPI';
modelPackageName: 'MyAPI-Models';
clientPackageName: 'MyAPI-Client'.
"Generate the classes"
generator generate.
| generator fileRef |
"Load the OpenAPI specification from a file"
fileRef := '/path/to/openapi.yaml' asFileReference.
"Create the generator"
generator := OpenAPIGenerator fromFile: fileRef.
"Configure the generator"
generator
prefix: 'MyAPI';
modelPackageName: 'MyAPI-Models';
clientPackageName: 'MyAPI-Client'.
"Generate the classes"
generator generate.
| client pets |
"Create a client instance"
client := MyAPIPetstoreClient new.
client baseUrl: 'https://petstore.swagger.io/v2'.
"Call an API endpoint"
pets := client listPets.
pets do: [ :pet |
Transcript show: pet name; cr.
].
OpenAPISpecification
: Classe principale pour représenter une spécification OpenAPIOpenAPIYAMLConverter
: Convertisseur de YAML vers JSONOpenAPIModelGenerator
: Générateur de classes de modèlesOpenAPIClientGenerator
: Générateur de client APIOpenAPIGenerator
: Classe principale qui coordonne la génération
- Support limité des types complexes (oneOf, anyOf, allOf)
- Pas de support pour les fichiers de spécification séparés (références externes)
- Le convertisseur YAML vers JSON est basique et peut ne pas supporter toutes les fonctionnalités YAML
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request pour améliorer ce projet.