From 31614cb01fde1b852edaa3d1c081b3c48d9026de Mon Sep 17 00:00:00 2001 From: Ali-Akber Saifee Date: Wed, 20 May 2020 18:52:33 -0700 Subject: [PATCH] Fix header name merging behavior Makes header name selection consistent with pre 1.3 versions. The order of selection was: - check mapping in Limiter._header_mapping - check mapping flask config - use defaults --- flask_limiter/extension.py | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/flask_limiter/extension.py b/flask_limiter/extension.py index 8c381b61..faa4763c 100644 --- a/flask_limiter/extension.py +++ b/flask_limiter/extension.py @@ -237,18 +237,29 @@ def init_app(self, app): "Invalid rate limiting strategy %s" % strategy ) self._limiter = STRATEGIES[strategy](self._storage) + + # TODO: this should be made consistent with the rest of the + # configuration self._header_mapping = { - HEADERS.RESET: config.get( - C.HEADER_RESET, "X-RateLimit-Reset" + HEADERS.RESET: self._header_mapping.get( + HEADERS.RESET, config.get( + C.HEADER_RESET, "X-RateLimit-Reset" + ) ), - HEADERS.REMAINING: config.get( - C.HEADER_REMAINING, "X-RateLimit-Remaining" + HEADERS.REMAINING: self._header_mapping.get( + HEADERS.REMAINING, config.get( + C.HEADER_REMAINING, "X-RateLimit-Remaining" + ) ), - HEADERS.LIMIT: config.get( - C.HEADER_LIMIT, "X-RateLimit-Limit" + HEADERS.LIMIT: self._header_mapping.get( + HEADERS.LIMIT, config.get( + C.HEADER_LIMIT, "X-RateLimit-Limit" + ) ), - HEADERS.RETRY_AFTER: config.get( - C.HEADER_RETRY_AFTER, "Retry-After" + HEADERS.RETRY_AFTER: self._header_mapping.get( + HEADERS.RETRY_AFTER, config.get( + C.HEADER_RETRY_AFTER, "Retry-After" + ) ), } self._retry_after = (