Source code for gerrit.utils.common

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author: Jialiang Shi
import json


[docs] def strip_trailing_slash(url): """ remove url's trailing slash :param url: url :return: """ while url.endswith("/"): url = url[:-1] return url
[docs] def decode_response(response): """Strip off Gerrit's magic prefix and decode a response. :returns: Decoded JSON content as a dict, or raw text if content could not be decoded as JSON. :raises: requests.HTTPError if the response contains an HTTP error status code. """ magic_json_prefix = ")]}'\n" content_type = response.headers.get("content-type", "") content = response.content.strip() if response.encoding: content = content.decode(response.encoding) if not content: return content if content_type.split(";")[0] != "application/json": return content if content.startswith(magic_json_prefix): index = len(magic_json_prefix) content = content[index:] try: return json.loads(content) except ValueError: raise ValueError(f"Invalid json content: {content}")
[docs] def params_creator(tuples, pattern_types, pattern_dispatcher): p, v = None, None if pattern_dispatcher is not None and pattern_dispatcher: for item in pattern_types: if item in pattern_dispatcher: p, v = pattern_types[item], pattern_dispatcher[item] break else: k = list(pattern_types.keys()) raise ValueError( "Pattern types can be either " + ", ".join(k[:-1]) + " or " + k[-1] ) params = {k: v for k, v in tuples + ((p, v),) if v is not None} return params