utils.py 1.24 KB
Newer Older
1 2 3 4 5 6 7 8 9
import requests
import json

def strip_none(dic):
    def _is_none(v):
        return v is None or (isinstance(v, str) and len(v.strip()) == 0)
    return dict([(k, v) for k, v in dic.iteritems() if not _is_none(v)])

def extract(dic, keys):
Rocky Duan committed
10 11 12 13
    if isinstance(keys, str):
        return strip_none({keys: dic.get(keys)})
    else:
        return strip_none({k: dic.get(k) for k in keys})
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41

def merge_dict(dic1, dic2):
    return dict(dic1.items() + dic2.items())
    
def perform_request(method, url, data_or_params=None, *args, **kwargs):
    if method in ['post', 'put', 'patch']:
        response = requests.request(method, url, data=data_or_params)
    else:
        response = requests.request(method, url, params=data_or_params)
    if 200 < response.status_code < 500:
        raise CommentClientError(response.text)
    elif response.status_code == 500:
        raise CommentClientUnknownError(response.text)
    else:
        if kwargs.get("raw", False):
            return response.text
        else:
            return json.loads(response.text)

class CommentClientError(Exception):
    def __init__(self, msg):
        self.message = msg

    def __str__(self):
        return repr(self.message)

class CommentClientUnknownError(CommentClientError):
    pass