def visit_field(self, node):
"""
:param docutils.nodes.field node:
"""
idx = node.first_child_matching_class(nodes.field_name)
if idx is not None:
name_node = node[idx]
idx = node.first_child_matching_class(nodes.field_body)
value_node = node[idx]
name = name_node.astext()
if name == 'Status Codes':
visitor = StatusVisitor(self.document)
value_node.walkabout(visitor)
self.endpoint.add_response_codes(visitor.status_info)
elif name == 'Request Headers':
visitor = HeaderVisitor(self.document)
value_node.walkabout(visitor)
self.endpoint.add_request_headers(visitor.headers)
elif name == 'Response Headers':
visitor = HeaderVisitor(self.document)
value_node.walkabout(visitor)
self.endpoint.add_response_headers(visitor.headers)
elif name == 'Parameters':
visitor = ParameterVisitor(self.document,
{'in': 'path', 'required': True})
value_node.walkabout(visitor)
self.endpoint.parameters.extend(visitor.parameters)
elif name == 'Query Parameters':
visitor = ParameterVisitor(self.document, {'in': 'query'})
value_node.walkabout(visitor)
self.endpoint.parameters.extend(visitor.parameters)
elif name == 'Request JSON Object':
visitor = ParameterVisitor(self.document)
value_node.walkabout(visitor)
self.endpoint.parameters.append({
'name': 'request-body', 'in': 'body', 'required': True,
'description': 'A serialized request body',
'schema': visitor.get_schema()})
elif name == 'Request JSON Array of Objects':
visitor = ParameterVisitor(self.document)
value_node.walkabout(visitor)
self.endpoint.parameters.append({
'name': 'request-body', 'in': 'body', 'required': True,
'schema': {'type': 'array', 'items': visitor.get_schema()}
})
elif name == 'Response JSON Object':
visitor = ParameterVisitor(self.document)
value_node.walkabout(visitor)
self.endpoint.set_default_response_structure(visitor.parameters)
elif name == 'Response JSON Array of Objects':
visitor = ParameterVisitor(self.document)
value_node.walkabout(visitor)
self.endpoint.set_default_response_structure(
visitor.parameters, is_array=True)
else:
self.document.reporter.warning(
'unhandled field type: {}'.format(name), base_node=node)
raise nodes.SkipChildren
评论列表
文章目录