rester.py 文件源码

python
阅读 30 收藏 0 点赞 0 评论 0

项目:webtzite 作者: materialsproject 项目源码 文件源码
def _make_request(self, sub_url, payload=None, method="GET"):
        response = None
        url = self.preamble.replace('8000', '5000') + sub_url
        try:
            headers = {'Referer': self.preamble}
            if self.session.cookies.get('csrftoken') is None:
                from django.core.urlresolvers import reverse
                uri = urlparse.urlparse(self.preamble)
                domain = '{uri.scheme}://{uri.netloc}'.format(uri=uri).replace('8000', '5000')
                site_url = '/'.join(uri.path.split('/')[:-2]) # test_site/
                browserid_csrf = reverse('browserid.csrf')
                if site_url[:-1] not in browserid_csrf:
                    domain += site_url
                domain += browserid_csrf
                self.session.get(domain)
            headers["X-CSRFToken"] = self.session.cookies.get('csrftoken')
            response = self.session.request(method, url=url, headers=headers, data=payload)
            if response.status_code in [200, 400]:
                data = loads(response.text, json_options=JSONOptions(document_class=OrderedDict))
                if data["valid_response"]:
                    if data.get("warning"):
                        warnings.warn(data["warning"])
                    return data["response"]
                else:
                    raise MPResterError(data["error"])
            raise MPResterError(
                "REST query returned with error status code {}"
                .format(response.status_code)
            )
        except Exception as ex:
            msg = "{}. Content: {}".format(str(ex), repr(response.content)) \
                    if hasattr(response, "content") else str(ex)
            raise MPResterError(msg)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号