def _get_canonical_querystring()

in aws_jupyter_proxy/awsproxy.py [0:0]


    def _get_canonical_querystring(self) -> str:
        canonical_query_string = ""
        corrected_request_query = self.upstream_request.query.replace("+", "%20")
        if corrected_request_query != "":
            query_string_list = []
            for item in corrected_request_query.split("&"):
                query_string_part = item.split("=", maxsplit=1)
                if len(query_string_part) == 2:
                    query_string_list.append(query_string_part)
                elif len(query_string_part) == 1:
                    query_string_part.append("")
                    query_string_list.append(query_string_part)
                else:
                    raise ValueError(f"Invalid query string split for {item}")
            query_string_dict = dict(query_string_list)
            sorted_q_string_list = [
                f"{k}={query_string_dict[k]}" for k in sorted(query_string_dict)
            ]
            canonical_query_string = "&".join(sorted_q_string_list)
        return canonical_query_string