Skip to content

Commit aa8fd9f

Browse files
authored
Support aiohttp 1.1 (#54)
* Fix incompatibility with aiohttp 1.1 * Revert "Fix incompatibility with aiohttp 1.1" This reverts commit 44ccada. * Adopt to aiohttp 1.1 * Use proper method
1 parent 4b97760 commit aa8fd9f

2 files changed

Lines changed: 21 additions & 7 deletions

File tree

aiohttp_cors/cors_config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ def add(self,
389389
else:
390390
# UrlDispatcher.
391391

392-
if isinstance(routing_entity, web.Resource):
392+
if isinstance(routing_entity, (web.Resource, web.StaticResource)):
393393
# New Resource - use new router adapter.
394394
return self._resources_cors_impl.add(routing_entity, config)
395395

aiohttp_cors/urldispatcher_router_adapter.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,8 @@ def __init__(self,
121121

122122
def add_preflight_handler(
123123
self,
124-
routing_entity: Union[web.Resource, web.ResourceRoute],
124+
routing_entity: Union[web.Resource, web.StaticResource,
125+
web.ResourceRoute],
125126
handler):
126127
"""Add OPTIONS handler for all routes defined by `routing_entity`.
127128
@@ -142,6 +143,19 @@ def add_preflight_handler(
142143
self._preflight_routes.add(preflight_route)
143144
self._resources_with_preflight_handlers.add(resource)
144145

146+
elif isinstance(routing_entity, web.StaticResource):
147+
resource = routing_entity
148+
149+
# Add preflight handler for Resource, if not yet added.
150+
151+
if resource in self._resources_with_preflight_handlers:
152+
# Preflight handler already added for this resource.
153+
return
154+
155+
preflight_route = resource.set_options_route(handler)
156+
self._preflight_routes.add(preflight_route)
157+
self._resources_with_preflight_handlers.add(resource)
158+
145159
elif isinstance(routing_entity, web.ResourceRoute):
146160
route = routing_entity
147161

@@ -182,11 +196,12 @@ def is_cors_enabled_on_request(self, request: web.Request) -> bool:
182196

183197
def set_config_for_routing_entity(
184198
self,
185-
routing_entity: Union[web.Resource, web.ResourceRoute],
199+
routing_entity: Union[web.Resource, web.StaticResource,
200+
web.ResourceRoute],
186201
config):
187202
"""Record configuration for resource or it's route."""
188203

189-
if isinstance(routing_entity, web.Resource):
204+
if isinstance(routing_entity, (web.Resource, web.StaticResource)):
190205
resource = routing_entity
191206

192207
# Add resource configuration or fail if it's already added.
@@ -393,11 +408,10 @@ def get_preflight_request_config(
393408
requested_method: str):
394409
assert self.is_preflight_request(preflight_request)
395410

396-
# TODO: Test difference between request.raw_path and request.path.
397-
path = preflight_request.path
411+
request = preflight_request.clone(method=requested_method)
398412
for route, config in self._route_config.items():
399413
match_info, allowed_methods = yield from route.resource.resolve(
400-
requested_method, path)
414+
request)
401415
if match_info is not None:
402416
return collections.ChainMap(config, self._default_config)
403417
else:

0 commit comments

Comments
 (0)