openapi2jolie
This tool generates a Jolie client starting from an OpenAPI 2.0 definition. The generated client can be embedded or exposed as a service to be invoked by other jolie services using sodep protocol. The usage of the tool follows:
Usage: openapi2jolie <url|filepath> <service_name> <output_folder> <protocol http|https> <ssl protocol>
where:
- url|filepath: it defines the url or the filepath of the OpenAPI specification to convert.
- service_name: it is the name of the service client to be generated
- output_folder: it is the output folder where storing the generated client
- http|https: it defines the protocol to use for preparing the client
- ssl protocol: when https is selected, it permits to define parameter 'ssl.protocol' if it is necessary
As a result the tool generates two files:
<service_name>Client.ol
: it is the actual client to be embedded or exposed as a jolie service<service_name>Interface.iol
: it is the jolie interface obtained from the conversion
Example
In order to show how the tool openapi2jolie
works, let us try to generate a client for the PetStore example released by the Swagger community which can be found here. Run the openapi2jolie
tool as it follows:
openapi2jolie https://petstore.swagger.io/v2/swagger.json SwaggerPetStore . https
two files are generated:
SwaggerPetStoreClient.ol
SwaggerPetStoreInterface.iol
The client can be now embedded in a jolie service for invoking the rest service described the OpenAPI at url https://petstore.swagger.io/v2/swagger.json
. Here in the following we report a jolie script which invokes api /user/{username}
include "SwaggerPetStoreInterface.iol"
include "string_utils.iol"
include "console.iol"
outputPort SwaggerPetStoreClient {
Location: "local"
Protocol: sodep
Interfaces: SwaggerPetStoreInterface
}
embedded {
Jolie:
"SwaggerPetStoreClient.ol" in SwaggerPetStoreClient
}
main {
request.username = "user2"
getUserByName@SwaggerPetStoreClient( request )( response )
valueToPrettyString@StringUtils( response )( s )
print@Console( s )( )
}