in chalice/app.py [0:0]
def _register_route(self, name: str, user_handler: UserHandlerFuncType,
kwargs: Any, **unused: Dict[str, Any]) -> None:
actual_kwargs = kwargs['kwargs']
path = kwargs['path']
url_prefix = kwargs.pop('url_prefix', None)
if url_prefix is not None:
path = '/'.join([url_prefix.rstrip('/'),
path.strip('/')]).rstrip('/')
methods = actual_kwargs.pop('methods', ['GET'])
route_kwargs = {
'authorizer': actual_kwargs.pop('authorizer', None),
'api_key_required': actual_kwargs.pop('api_key_required', None),
'content_types': actual_kwargs.pop('content_types',
['application/json']),
'cors': actual_kwargs.pop('cors', self.api.cors),
}
if route_kwargs['cors'] is None:
route_kwargs['cors'] = self.api.cors
if not isinstance(route_kwargs['content_types'], list):
raise ValueError(
'In view function "%s", the content_types '
'value must be a list, not %s: %s' % (
name, type(route_kwargs['content_types']),
route_kwargs['content_types']))
if actual_kwargs:
raise TypeError('TypeError: route() got unexpected keyword '
'arguments: %s' % ', '.join(list(actual_kwargs)))
for method in methods:
if method in self.routes[path]:
raise ValueError(
"Duplicate method: '%s' detected for route: '%s'\n"
"between view functions: \"%s\" and \"%s\". A specific "
"method may only be specified once for "
"a particular path." % (
method, path, self.routes[path][method].view_name,
name)
)
entry = RouteEntry(user_handler, name, path, method,
**route_kwargs)
self.routes[path][method] = entry