mirror of
https://github.com/kevin1024/vcrpy.git
synced 2025-12-09 01:03:24 +00:00
Fix up to support aiohttp 1.x
This commit is contained in:
@@ -6,7 +6,8 @@ import functools
|
|||||||
import json
|
import json
|
||||||
import urllib
|
import urllib
|
||||||
|
|
||||||
from aiohttp import ClientResponse, helpers
|
from aiohttp import ClientResponse
|
||||||
|
from yarl import URL
|
||||||
|
|
||||||
from vcr.request import Request
|
from vcr.request import Request
|
||||||
|
|
||||||
@@ -34,36 +35,17 @@ def vcr_request(cassette, real_request):
|
|||||||
headers = self._prepare_headers(headers)
|
headers = self._prepare_headers(headers)
|
||||||
data = kwargs.get('data')
|
data = kwargs.get('data')
|
||||||
params = kwargs.get('params')
|
params = kwargs.get('params')
|
||||||
|
|
||||||
# INFO: Query join logic from
|
|
||||||
# https://github.com/KeepSafe/aiohttp/blob/b3eeedbc2f515ec2aa6e87ba129524c17b6fe4e3/aiohttp/client_reqrep.py#L167-L188
|
|
||||||
scheme, netloc, path, query, fragment = urllib.parse.urlsplit(url)
|
|
||||||
if not path:
|
|
||||||
path = '/'
|
|
||||||
|
|
||||||
# NOTICE: Not sure this is applicable here:
|
|
||||||
# if isinstance(params, collections.Mapping):
|
|
||||||
# params = list(params.items())
|
|
||||||
|
|
||||||
if params:
|
if params:
|
||||||
if not isinstance(params, str):
|
for k, v in params.items():
|
||||||
params = urllib.parse.urlencode(params)
|
params[k] = str(v)
|
||||||
if query:
|
|
||||||
query = '%s&%s' % (query, params)
|
|
||||||
else:
|
|
||||||
query = params
|
|
||||||
|
|
||||||
request_path = urllib.parse.urlunsplit(('', '', helpers.requote_uri(path),
|
request_url = URL(url).with_query(params)
|
||||||
query, fragment))
|
vcr_request = Request(method, str(request_url), data, headers)
|
||||||
request_url = urllib.parse.urlunsplit(
|
|
||||||
(scheme, netloc, request_path, '', ''))
|
|
||||||
|
|
||||||
vcr_request = Request(method, request_url, data, headers)
|
|
||||||
|
|
||||||
if cassette.can_play_response_for(vcr_request):
|
if cassette.can_play_response_for(vcr_request):
|
||||||
vcr_response = cassette.play_response(vcr_request)
|
vcr_response = cassette.play_response(vcr_request)
|
||||||
|
|
||||||
response = MockClientResponse(method, vcr_response.get('url'))
|
response = MockClientResponse(method, URL(vcr_response.get('url')))
|
||||||
response.status = vcr_response['status']['code']
|
response.status = vcr_response['status']['code']
|
||||||
response.content = vcr_response['body']['string']
|
response.content = vcr_response['body']['string']
|
||||||
response.reason = vcr_response['status']['message']
|
response.reason = vcr_response['status']['message']
|
||||||
@@ -73,7 +55,7 @@ def vcr_request(cassette, real_request):
|
|||||||
return response
|
return response
|
||||||
|
|
||||||
if cassette.write_protected and cassette.filter_request(vcr_request):
|
if cassette.write_protected and cassette.filter_request(vcr_request):
|
||||||
response = MockClientResponse(method, url)
|
response = MockClientResponse(method, URL(url))
|
||||||
response.status = 599
|
response.status = 599
|
||||||
msg = ("No match for the request {!r} was found. Can't overwrite "
|
msg = ("No match for the request {!r} was found. Can't overwrite "
|
||||||
"existing cassette {!r} in your current record mode {!r}.")
|
"existing cassette {!r} in your current record mode {!r}.")
|
||||||
|
|||||||
Reference in New Issue
Block a user