in packages/python-packages/protocol-stub-generator/protocol/protocol_models.py [0:0]
def to_token(self):
# Remove None Param
self.parameters = [key for key in self.parameters if key.type]
# Create Overview:
# Each operation will indent itself by 4
self.add_whitespace(1)
self.overview_tokens.append(Token(" " * 4, TokenKind.Whitespace))
# Set up operation parameters
if len(self.parameters) == 0:
self.add_first_line()
self.add_new_line()
self.add_whitespace(3)
self.overview_tokens.append(Token(")", TokenKind.Text))
self.add_punctuation(")")
self.add_new_line()
self.add_token(Token(kind=TokenKind.StartDocGroup))
self.format_status_code()
self.add_token(Token(kind=TokenKind.EndDocGroup))
self.add_new_line(1)
for param_num in range(0, len(self.parameters)):
if self.parameters[param_num]:
self.parameters[param_num].to_token()
if param_num == 0:
self.add_first_line()
self.add_new_line()
# Add in parameter tokens
if self.parameters[param_num]:
self.add_whitespace(4)
for p in self.parameters[param_num].get_tokens():
self.add_token(p)
for o in self.parameters[param_num].overview_tokens:
self.overview_tokens.append(o)
# Add in comma before the next parameter
if param_num + 1 in range(0, len(self.parameters)):
self.add_punctuation(",")
self.overview_tokens.append(Token(", ", TokenKind.Text))
# Create a new line for the next operation
else:
self.add_new_line()
self.add_whitespace(3)
self.overview_tokens.append(Token(")", TokenKind.Text))
self.add_punctuation(")")
self.add_new_line(1)
self.add_token(Token(kind=TokenKind.StartDocGroup))
self.format_status_code()
# If the request or response contain more than one entry, check the parameters of the operation and see if one of them is an object, if it is, that is your overall model request name
# if type is not a normal type .. aka an object name ^
if self.json_request:
self.add_whitespace(3)
self.add_typename(None, "Request", None)
self.add_new_line(1)
object_name = None
new_req = {}
if not any(j in self.parameters[0].type for j in R_TYPE):
object_name = self.parameters[0].type
if object_name:
object_name = object_name.replace("[]", "")
new_req[object_name] = self.json_request
self.json_request = new_req
self.request_builder(self.json_request, self.yaml, not_first=False)
self.add_new_line()
self.add_whitespace(4)
for m in self.inner_model:
if m:
if m.Value == "str":
m.Value = "string"
self.Tokens.append(m)
self.add_new_line(1)
# If the response is just a string or simple list, ignore writing the response
if isinstance(self.json_response, str) or (
isinstance(self.json_response, list)
and isinstance(self.json_response[0], str)
):
self.json_response = None
if self.json_response:
self.inner_model = []
self.add_whitespace(3)
self.add_typename(None, "Response", None)
self.add_new_line(1)
new_req = {}
if not any(j in self.return_type for j in R_TYPE):
new_req[self.return_type.replace("[]", "")] = self.json_response
self.json_response = new_req
self.request_builder(
self.json_response, self.yaml, not_first=False
)
self.add_new_line()
self.add_whitespace(4)
for i in self.inner_model:
if i:
if i.Value == "str":
i.Value = "string"
self.Tokens.append(i)
self.add_new_line(1)
self.add_token(Token(kind=TokenKind.EndDocGroup))