https://github.com/evref-bl/pharo-openapi-generator
A tiny tool to generate Pharo classes from an OpenAPI json schema description
https://github.com/evref-bl/pharo-openapi-generator
Last synced: 4 months ago
JSON representation
A tiny tool to generate Pharo classes from an OpenAPI json schema description
- Host: GitHub
- URL: https://github.com/evref-bl/pharo-openapi-generator
- Owner: Evref-BL
- Created: 2025-06-25T13:13:10.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-07-10T15:56:22.000Z (11 months ago)
- Last Synced: 2025-07-10T20:29:24.134Z (11 months ago)
- Language: Smalltalk
- Size: 1.71 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# OpenAPI Generator pour Pharo Smalltalk
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.
## Fonctionnalités
- 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
## Installation
Pour installer ce projet dans Pharo 12, exécutez le code suivant dans un Playground :
```smalltalk
Metacello new
baseline: 'OpenAPIGenerator';
repository: 'github://Evref-BL/pharo-openapi-generator:main';
load.
```
## Utilisation
### Génération à partir d'un fichier JSON
```smalltalk
| 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.
```
### Génération à partir d'un fichier YAML
```smalltalk
| 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.
```
### Utilisation du client généré
```smalltalk
| 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.
].
```
## Structure du projet
- `OpenAPISpecification` : Classe principale pour représenter une spécification OpenAPI
- `OpenAPIYAMLConverter` : Convertisseur de YAML vers JSON
- `OpenAPIModelGenerator` : Générateur de classes de modèles
- `OpenAPIClientGenerator` : Générateur de client API
- `OpenAPIGenerator` : Classe principale qui coordonne la génération
## Limitations
- 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
## Contribution
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request pour améliorer ce projet.