* Improvement of Ada client and server generator - recognize several mime types and configure the client/server API - fix support to handle binary and ByteArray - add support for client and server with multiple mime type responses - update model templates * Fix and improvement of Ada code generator - fix order of model types to emit the types that depend on other types after; also sort the model types on their name - fix model Serialize to avoid serializing a field which is Null when it is not "Nullable" * Add support to avoid some Ada Vectors package instantiation - recognized the x-ada-no-vector specific attribute on model types and when present and TRUE, don't emit the Ada Vector package instantiation nor the Serialize and Deserialize associated procedures. * Fix float and double support - fix mapping for float and double - add x-ada-serialize-op custom attribute to allow overriding the serialize procedure - setup a default x-ada-serialize-op value for the template * Fix wrong import and serialize method * Regenerate the Ada client sample petstore * Rebuild with export_docs_generators.sh * Fix calls to toLowerCase() to use the Locale.ROOT
Swagger Petstore Ada Client
Overview
This Ada client uses the Petstore API to demonstrate how to use the generator and use the generated Ada code. The following files are generated by Swagger Codegen:
- src/client/samples-petstore-models.ads
- src/client/samples-petstore-models.adb
- src/client/samples-petstore-clients.ads
- src/client/samples-petstore-clients.adb
The 'Models' package contains the definition of types used by the request or response in the API operations. It also provides operations to serialize and deserialize these objects in JSON, XML or form-based data streams.
The 'Clients' package contains the definition of operations provided by the Petstore API.
Requirements.
To build this sample, you must have installed the GNAT Ada compiler as well the following libraries:
- Ada Util (https://github.com/stcarrez/ada-util)
- Swagger Ada (https://github.com/stcarrez/swagger-ada)
- AWS (http://libre.adacore.com/libre/tools/aws/)
Building the petstore client
Build the petstore client by using the following command:
gprbuild -Ppetstore -p
Using the Swagger Ada code
Initialization
The HTTP/REST support is provided by Ada Util and encapsulated by Swagger Ada. If you want to use Curl, you should initialize with the following:
Util.Http.Clients.Curl.Register;
But if you want to use AWS, you will initialize with:
Util.Http.Clients.Web.Register;
After the initialization is done, you will declare a client instance to access the API operations:
C : Samples.Petstore.Clients.Client_Type;
The 'Client_Type' is the generated type that will implement the operations described in the OpenAPI description file.
And you should initialize the server base URI you want to connect to:
C.Set_Server ("http://petstore.swagger.io/v2");
At this stage, you can use the generated operation.
Calling an operation
Let's retrieve some pet information by calling the 'Get_Pet_By_Id' operation. This operation needs an integer as input parameter and returns a 'Pet_Type' object that contains all the pet information. You will first declare the pet instance as follows:
Pet : Samples.Petstore.Models.Pet_Type;
And then call the 'Get_Pet_By_Id' operation:
C.Get_Pet_By_Id (768, Pet);
At this stage, you can access information from the 'Pet' instance:
Ada.Text_IO.Put_Line ("Id : " & Swagger.Long'Image (Pet.Id));
Ada.Text_IO.Put_Line ("Name : " & Swagger.To_String (Pet.Name));
Ada.Text_IO.Put_Line ("Status : " & Swagger.To_String (Pet.Status));