Ejemplo n.º 1
0
    def test_cors(self):
        hdr = {
            "origin": "http://someorigin",
            "Access-Control-Request-Headers": "authorization, x-api-key"
        }
        resp = httpx.options(SRV1 + '/cors-request', headers=hdr)
        self.assertEqual(204, resp.status_code)
        self.assertEqual(hdr['origin'],
                         resp.headers.get("access-control-allow-origin"))
        self.assertEqual(hdr['Access-Control-Request-Headers'],
                         resp.headers.get("Access-Control-Allow-Headers"))
        self.assertEqual("DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT",
                         resp.headers.get("access-control-allow-methods"))

        resp = httpx.post(SRV1 + '/cors-request', json={}, headers=hdr)
        self.assertEqual(hdr['origin'],
                         resp.headers.get("access-control-allow-origin"))
        self.assertEqual(hdr['Access-Control-Request-Headers'],
                         resp.headers.get("Access-Control-Allow-Headers"))
        self.assertEqual("DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT",
                         resp.headers.get("access-control-allow-methods"))
        self.assertEqual(201, resp.status_code)

        resp = httpx.options(SRV1 + '/cors-request-overridden', headers=hdr)
        self.assertEqual(401, resp.status_code)

        resp = httpx.options(SRV1 + '/nonexistent', headers=hdr)
        self.assertEqual(404, resp.status_code)

        resp = httpx.options(SRV1 + '/cors-request')
        self.assertEqual(404, resp.status_code)  # maybe it should be 400
Ejemplo n.º 2
0
async def test_http_methods(client):
    async with respx.mock:
        url = "https://foo.bar"
        route = respx.get(url, path="/") % 404
        respx.post(url, path="/").respond(200)
        respx.post(url, path="/").respond(201)
        respx.put(url, path="/").respond(202)
        respx.patch(url, path="/").respond(500)
        respx.delete(url, path="/").respond(204)
        respx.head(url, path="/").respond(405)
        respx.options(url, path="/").respond(status_code=501)
        respx.request("GET", url, path="/baz/").respond(status_code=204)
        url += "/"

        response = httpx.get(url)
        assert response.status_code == 404
        response = await client.get(url)
        assert response.status_code == 404

        response = httpx.get(url + "baz/")
        assert response.status_code == 204
        response = await client.get(url + "baz/")
        assert response.status_code == 204

        response = httpx.post(url)
        assert response.status_code == 201
        response = await client.post(url)
        assert response.status_code == 201

        response = httpx.put(url)
        assert response.status_code == 202
        response = await client.put(url)
        assert response.status_code == 202

        response = httpx.patch(url)
        assert response.status_code == 500
        response = await client.patch(url)
        assert response.status_code == 500

        response = httpx.delete(url)
        assert response.status_code == 204
        response = await client.delete(url)
        assert response.status_code == 204

        response = httpx.head(url)
        assert response.status_code == 405
        response = await client.head(url)
        assert response.status_code == 405

        response = httpx.options(url)
        assert response.status_code == 501
        response = await client.options(url)
        assert response.status_code == 501

        assert route.called is True
        assert respx.calls.call_count == 8 * 2
Ejemplo n.º 3
0
async def test_http_methods(client):
    async with respx.HTTPXMock() as httpx_mock:
        url = "https://foo.bar/"
        m = httpx_mock.get(url, status_code=404)
        httpx_mock.post(url, status_code=201)
        httpx_mock.put(url, status_code=202)
        httpx_mock.patch(url, status_code=500)
        httpx_mock.delete(url, status_code=204)
        httpx_mock.head(url, status_code=405)
        httpx_mock.options(url, status_code=501)

        response = httpx.get(url)
        assert response.status_code == 404
        response = await client.get(url)
        assert response.status_code == 404

        response = httpx.post(url)
        assert response.status_code == 201
        response = await client.post(url)
        assert response.status_code == 201

        response = httpx.put(url)
        assert response.status_code == 202
        response = await client.put(url)
        assert response.status_code == 202

        response = httpx.patch(url)
        assert response.status_code == 500
        response = await client.patch(url)
        assert response.status_code == 500

        response = httpx.delete(url)
        assert response.status_code == 204
        response = await client.delete(url)
        assert response.status_code == 204

        response = httpx.head(url)
        assert response.status_code == 405
        response = await client.head(url)
        assert response.status_code == 405

        response = httpx.options(url)
        assert response.status_code == 501
        response = await client.options(url)
        assert response.status_code == 501

        assert m.called is True
        assert httpx_mock.stats.call_count == 7 * 2
Ejemplo n.º 4
0
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File    :   1_request_method.py
@Time    :   2021-02-23
@Author  :   EvilRecluse
@Contact :   https://github.com/RecluseXU
@Desc    :   常用的请求方法GET, POST, PUT, DELETE, HEAD, OPTIONS
'''

# here put the import lib
import httpx

# 常用的请求方法GET, POST, PUT, DELETE, HEAD, OPTIONS
r = httpx.get('https://httpbin.org/get')
r = httpx.post('https://httpbin.org/post', data={'key': 'value'})
r = httpx.put('https://httpbin.org/put', data={'key': 'value'})
r = httpx.delete('https://httpbin.org/delete')
r = httpx.head('https://httpbin.org/get')
r = httpx.options('https://httpbin.org/get')

# 设置headers
headers = {'user-agent': 'my-app/0.0.1'}
r = httpx.get('http://httpbin.org/headers', headers=headers)
print(r.json())
Ejemplo n.º 5
0
def axios(req):
    fres = {'status': 200, 'headers': {}, 'data': ''}

    headers = {}
    if 'headers' in req:
        headers = req['headers']
    if 'content-type' not in headers or 'Content-Type' not in headers:
        headers[
            'content-type'] = 'application/x-www-form-urlencoded; charset=UTF-8'
    if 'user-agent' not in headers:
        try:
            headers['user-agent'] = uagent[CONFIG['CONFIG_Axios']
                                           ['uagent']]['header']
        except Exception as e:
            console.error(e)
            headers[
                'user-agent'] = 'Mozilla/5.0 (Linux; U; elecV2P; x64) ePhone Super Max Plus++'

    proxies = {}
    timeout = 5
    try:
        if CONFIG['CONFIG_Axios']['proxy']:
            proxy = CONFIG['CONFIG_Axios']['proxy']
            if 'host' not in proxy:
                proxy['host'] = 'localhost'
            if 'port' not in proxy:
                proxy['port'] = 8001
            phttp = proxy['host'] + ':' + str(proxy['port'])

            if 'auth' in proxy and 'username' in proxy[
                    'auth'] and 'password' in proxy['auth']:
                phttp = proxy['auth']['username'] + ':' + proxy['auth'][
                    'password'] + '@' + phttp

            proxies['http://'] = 'http://' + phttp

        if CONFIG['CONFIG_Axios']['timeout']:
            timeout = round(CONFIG['CONFIG_Axios']['timeout'] / 1000, 2)
    except Exception as e:
        console.error(e)

    if isinstance(req, str):
        req = {'url': req, 'method': 'get'}

    if 'url' not in req:
        fres['status'] = -1
        fres['data'] = 'axios error: a request url is expect'
        console.error(fres['data'])
        return fres

    if 'body' in req:
        req['data'] = req['body']
    if 'data' not in req:
        req['data'] = ''
    if 'method' not in req:
        req['method'] = 'get'
    console.debug('axios request:', req, 'proxies:', proxies, 'timeout:',
                  timeout)
    try:
        req['method'] = req['method'].lower()
        if req['method'] == 'get':
            res = httpx.get(req['url'],
                            headers=headers,
                            proxies=proxies,
                            timeout=timeout)
        elif req['method'] == 'post':
            res = httpx.post(req['url'],
                             headers=headers,
                             data=req['data'],
                             proxies=proxies,
                             timeout=timeout)
        elif req['method'] == 'put':
            res = httpx.put(req['url'],
                            headers=headers,
                            data=req['data'],
                            proxies=proxies,
                            timeout=timeout)
        elif req['method'] == 'delete':
            res = httpx.delete(req['url'],
                               headers=headers,
                               data=req['data'],
                               proxies=proxies,
                               timeout=timeout)
        elif req['method'] == 'options':
            res = httpx.options(req['url'],
                                headers=headers,
                                data=req['data'],
                                proxies=proxies,
                                timeout=timeout)
        else:

            class res:
                status_code = -1
                headers = {}
                text = 'unknow request method ' + req['method']

            console.error('unknow request method', req['method'])

        fres['status'] = res.status_code
        fres['headers'] = res.headers
        fres['data'] = res.text
    except Exception as e:
        console.error(e)
        fres['status'] = -1
        fres['data'] = 'axios ' + req['method'] + ' ' + req[
            'url'] + ' error: ' + str(e)

    return fres
Ejemplo n.º 6
0
def test_options(server):
    response = httpx.options(server.url)
    assert response.status_code == 200
    assert response.reason_phrase == "OK"
Ejemplo n.º 7
0
def test_options(server):
    response = httpx.options("http://127.0.0.1:8000/")
    assert response.status_code == 200
    assert response.reason_phrase == "OK"
Ejemplo n.º 8
0
import httpx
import ssl

httpx.get("url") # $ clientRequestUrlPart="url"
httpx.post("url") # $ clientRequestUrlPart="url"
httpx.patch("url") # $ clientRequestUrlPart="url"
httpx.options("url") # $ clientRequestUrlPart="url"
httpx.request("method", url="url") # $ clientRequestUrlPart="url"
httpx.stream("method", url="url") # $ clientRequestUrlPart="url"

client = httpx.Client()
response = client.get("url") # $ clientRequestUrlPart="url"
response = client.post("url") # $ clientRequestUrlPart="url"
response = client.patch("url") # $ clientRequestUrlPart="url"
response = client.options("url") # $ clientRequestUrlPart="url"
response = client.request("method", url="url") # $ clientRequestUrlPart="url"
response = client.stream("method", url="url") # $ clientRequestUrlPart="url"

async def async_test():
    client = httpx.AsyncClient()
    response = await client.get("url") # $ clientRequestUrlPart="url"
    response = await client.post("url") # $ clientRequestUrlPart="url"
    response = await client.patch("url") # $ clientRequestUrlPart="url"
    response = await client.options("url") # $ clientRequestUrlPart="url"
    response = await client.request("method", url="url") # $ clientRequestUrlPart="url"
    response = await client.stream("method", url="url") # $ clientRequestUrlPart="url"

# ==============================================================================
# Disabling certificate validation
# ==============================================================================
Ejemplo n.º 9
0
requests.put('https://gmail.com', timeout=30, verify=True)
requests.put('https://gmail.com', timeout=30, verify=False)
requests.delete('https://gmail.com', timeout=30, verify=True)
requests.delete('https://gmail.com', timeout=30, verify=False)
requests.patch('https://gmail.com', timeout=30, verify=True)
requests.patch('https://gmail.com', timeout=30, verify=False)
requests.options('https://gmail.com', timeout=30, verify=True)
requests.options('https://gmail.com', timeout=30, verify=False)
requests.head('https://gmail.com', timeout=30, verify=True)
requests.head('https://gmail.com', timeout=30, verify=False)

httpx.request('GET', 'https://gmail.com', verify=True)
httpx.request('GET', 'https://gmail.com', verify=False)
httpx.get('https://gmail.com', verify=True)
httpx.get('https://gmail.com', verify=False)
httpx.options('https://gmail.com', verify=True)
httpx.options('https://gmail.com', verify=False)
httpx.head('https://gmail.com', verify=True)
httpx.head('https://gmail.com', verify=False)
httpx.post('https://gmail.com', verify=True)
httpx.post('https://gmail.com', verify=False)
httpx.put('https://gmail.com', verify=True)
httpx.put('https://gmail.com', verify=False)
httpx.patch('https://gmail.com', verify=True)
httpx.patch('https://gmail.com', verify=False)
httpx.delete('https://gmail.com', verify=True)
httpx.delete('https://gmail.com', verify=False)
httpx.stream('https://gmail.com', verify=True)
httpx.stream('https://gmail.com', verify=False)
httpx.Client()
httpx.Client(verify=False)