src/aaz_dev/swagger/model/schema/example_item.py (36 lines of code) (raw):
from schematics.models import Model
from schematics.types import DictType, ModelType
from command.controller.shorthand import serialize
from command.model.configuration import CMDCommandExample
from .reference import Linkable, ReferenceField
class ExampleItem(Model, Linkable):
ref = ReferenceField()
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.ref_instance = None
def link(self, swagger_loader, *traces):
if self.is_linked():
return
super().link(swagger_loader, *traces)
self.ref_instance, instance_traces = swagger_loader.load_ref(self.ref, *self.traces, "ref")
def to_cmd(self, example_builder, cmd_name, **kwargs):
if not self.ref_instance:
return
example_params = example_builder.mapping(self.ref_instance.get("parameters", {}))
command = cmd_name
for param_option, param_value in example_params:
if param_option == "subscription":
continue
if len(param_option) == 1:
command += f" -{param_option} {serialize(param_value)}"
else:
command += f" --{param_option} {serialize(param_value)}"
return CMDCommandExample({"commands": [command.strip()]})
class XmsExamplesField(DictType):
"""
Describes the format for specifying examples for request and response of an operation in an OpenAPI definition.
It is a dictionary of different variations of the examples for a given operation.
https://github.com/Azure/azure-rest-api-specs/blob/master/documentation/x-ms-examples.md
"""
def __init__(self, **kwargs):
super().__init__(
field=ModelType(ExampleItem),
serialized_name="x-ms-examples",
deserialize_from="x-ms-examples",
**kwargs
)