Esempio n. 1
0
def test_response_with_bodypart(loop, test_client):
    @asyncio.coroutine
    def handler(request):
        reader = yield from request.multipart()
        part = yield from reader.next()
        return web.Response(body=part)

    app = web.Application(client_max_size=2)
    app.router.add_post('/', handler)
    client = yield from test_client(app)

    data = {'file': io.BytesIO(b'test')}
    resp = yield from client.post('/', data=data)

    assert 200 == resp.status
    body = yield from resp.read()
    assert body == b'test'

    disp = multipart.parse_content_disposition(
        resp.headers['content-disposition'])
    assert disp == ('attachment', {
        'name': 'file',
        'filename': 'file',
        'filename*': 'file'
    })
Esempio n. 2
0
def check_type_and_name(field, name):
    if not isinstance(field, multipart.BodyPartReader):
        raise error.ValidationError(name)
    disptype, parts = multipart.parse_content_disposition(
        field.headers.get('Content-Disposition'))
    if disptype != 'form-data' or parts.get('name') != name:
        raise error.ValidationError(name)
Esempio n. 3
0
 def content_disposition(self) -> Optional[ContentDisposition]:
     """Get Content-Disposition headers, if any"""
     raw = self.headers.get(hdrs.CONTENT_DISPOSITION)
     if raw is None:
         return None
     disposition_type, params_dct = multipart.parse_content_disposition(raw)
     params = MappingProxyType(params_dct)
     filename = multipart.content_disposition_filename(params)
     return ContentDisposition(disposition_type, params, filename)
Esempio n. 4
0
async def test_response_with_bodypart(aiohttp_client):

    async def handler(request):
        reader = await request.multipart()
        part = await reader.next()
        return web.Response(body=part)

    app = web.Application(client_max_size=2)
    app.router.add_post('/', handler)
    client = await aiohttp_client(app)

    data = {'file': io.BytesIO(b'test')}
    resp = await client.post('/', data=data)

    assert 200 == resp.status
    body = await resp.read()
    assert body == b'test'

    disp = multipart.parse_content_disposition(
        resp.headers['content-disposition'])
    assert disp == ('attachment',
                    {'name': 'file', 'filename': 'file', 'filename*': 'file'})
Esempio n. 5
0
def function268(arg1358, arg2118):
    @asyncio.coroutine
    def function146(arg2095):
        var1318 = yield from arg2095.multipart()
        var3589 = yield from var1318.next()
        return web.Response(body=var3589)

    var4234 = web.Application(client_max_size=2)
    var4234.router.add_post('/', function146)
    var4717 = yield from arg2118(var4234)
    var2516 = {
        'file': io.BytesIO(b'test'),
    }
    var1618 = yield from var4717.post('/', data=var2516)
    assert (200 == var1618.status)
    var3083 = yield from var1618.read()
    assert (var3083 == b'test')
    var1466 = multipart.parse_content_disposition(
        var1618.headers['content-disposition'])
    assert (var1466 == ('attachment', {
        'name': 'file',
        'filename': 'file',
        'filename*': 'file',
    }))
Esempio n. 6
0
 def get_part_name(part):
     _, params = parse_content_disposition(part.headers.get(CONTENT_DISPOSITION))
     return params.get("name")