def build_operation(operation, ns, rule, func): """ Build an operation definition. """ swagger_operation = swagger.Operation( operationId=operation_name(operation, ns), parameters=swagger.ParametersList([ ]), responses=swagger.Responses(), tags=[ns.subject_name], ) # custom header parameter swagger_operation.parameters.append( header_param("X-Response-Skip-Null") ) # path parameters swagger_operation.parameters.extend([ path_param(argument, ns) for argument in rule.arguments ]) # query string parameters qs_schema = get_qs_schema(func) if qs_schema: swagger_operation.parameters.extend([ query_param(name, field) for name, field in qs_schema.fields.items() ]) # body parameter request_schema = get_request_schema(func) if request_schema: swagger_operation.parameters.append( body_param(request_schema) ) # sort parameters for predictable output swagger_operation.parameters.sort(key=lambda parameter: parameter["name"]) add_responses(swagger_operation, operation, ns, func) return swagger_operation
def build_operation(operation, ns, rule, func): """ Build an operation definition. """ swagger_operation = swagger.Operation( operationId=operation_name(operation, ns), parameters=swagger.ParametersList([ ]), responses=swagger.Responses(), tags=[ns.subject_name], ) # custom header parameter swagger_operation.parameters.append( header_param("X-Response-Skip-Null") ) # path parameters swagger_operation.parameters.extend([ # TODO: inject type information for parameters based on converter syntax path_param(argument) for argument in rule.arguments ]) # query string parameters qs_schema = get_qs_schema(func) if qs_schema: swagger_operation.parameters.extend([ query_param(name, field) for name, field in qs_schema.fields.items() ]) # body parameter request_schema = get_request_schema(func) if request_schema: swagger_operation.parameters.append( body_param(request_schema) ) add_responses(swagger_operation, operation, ns, func) return swagger_operation