def to_token()

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))