File: C:/Users/fred/anaconda3/Lib/site-packages/anaconda_project/internal/test/http_utils.py
# -*- coding: utf-8 -*-
# -----------------------------------------------------------------------------
# Copyright (c) 2016, Anaconda, Inc. All rights reserved.
#
# Licensed under the terms of the BSD 3-Clause License.
# The full license is in the file LICENSE.txt, distributed with this software.
# -----------------------------------------------------------------------------
from __future__ import absolute_import, print_function
import copy
from anaconda_project.internal.test.multipart import MultipartEncoder
from tornado import gen
from tornado.httpclient import AsyncHTTPClient, HTTPRequest
@gen.coroutine
def _http_fetch(request):
http_client = AsyncHTTPClient()
response = yield http_client.fetch(request)
if response.error:
raise response.error
else:
raise gen.Return(response)
def http_get_async(url, host=None):
headers = dict()
if host is not None:
headers['Host'] = host
return _http_fetch(HTTPRequest(url=url, method='GET', headers=headers))
def http_post_async(url, body=None, host=None, headers=None, form=None):
if form is not None:
assert body is None
assert headers is None
encoder = MultipartEncoder(form)
body = encoder.to_string()
headers = {'Content-Type': encoder.content_type}
if host is not None:
headers = copy.copy(headers)
headers['Host'] = host
return _http_fetch(HTTPRequest(url=url, method='POST', body=body, headers=headers))
def http_get(io_loop, url, host=None):
return io_loop.run_sync(lambda: http_get_async(url, host))
def http_post(io_loop, url, body=None, host=None, headers=None):
return io_loop.run_sync(lambda: http_post_async(url, body, host, headers))