swagger/generate_constants_swagger.py (54 lines of code) (raw):

import itertools header="""{ "swagger": "2.0", "info": { "title": "AutoRest Swagger Constant Service", "description": "Test Infrastructure for AutoRest Swagger Constant", "version": "1.0.0" }, "host": "localhost:3000", "schemes": [ "http" ], "produces": [ "application/json" ], "consumes": [ "application/json" ], "paths": { """ footer = """ } }""" template_op = """ "/constants/put{operation_id}": {{ "put": {{ "operationId": "contants_put{operation_id}", "summary": "Puts constants to the testserver", "parameters": [ {{ "name": "input", "in": "query", "type": "string", "enum": [ {values} ], "x-ms-enum": {{ "name": "{operation_id}OpEnum", "modelAsString": {model_as_string} }}, "required": {required}{default} }} ], "responses": {{ "201": {{ "description": "Indicates success." }} }} }} }} """ template_model = """ "{model_name}": {{ "type": "object", "properties": {{ "parameter" : {{ "type": "string", "enum": [ {values} ], "x-ms-enum": {{ "name": "{model_name}Enum", "modelAsString": {model_as_string} }} {default} }} }}{required} }} """ ModelAsString = {True, False} Required = {True, False} OneValue = {True, False} Default = {True, False} def do_it_operation(model_as_string, required, one_value, default): operation_id = ( "{}ModelAsString".format("" if model_as_string else "No") + "{}Required".format("" if required else "No") + "{}Value".format("One" if one_value else "Two") + "{}Default".format("" if default else "No") ) values = '"value1"' if one_value else '"value1", "value2"' default = ',\n "x-ms-client-default": "value1"' if default else '' return template_op.format( operation_id=operation_id, values=values, model_as_string=str(model_as_string).lower(), required=str(required).lower(), default=default ) def do_it_model(model_as_string, required, one_value, default): model_name = ( "{}ModelAsString".format("" if model_as_string else "No") + "{}Required".format("" if required else "No") + "{}Value".format("One" if one_value else "Two") + "{}Default".format("" if default else "No") ) values = '"value1"' if one_value else '"value1", "value2"' default = ',\n "x-ms-client-default": "value1"' if default else '' required=',\n "required": ["parameter"]' if required else '' return template_model.format( model_name=model_name, values=values, model_as_string=str(model_as_string).lower(), required=required, default=default ) def do_all(): print(header) print(",".join( [do_it_operation(*comb) for comb in itertools.product(ModelAsString, Required, OneValue, Default)] )) print(' },\n "definitions": {') print(",".join( [do_it_model(*comb) for comb in itertools.product(ModelAsString, Required, OneValue, Default)] )) print(footer) if __name__ == "__main__": do_all()