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 )(  )
}