From 0737a595608cf6533e75e46f3a7985b2b44e4d0b Mon Sep 17 00:00:00 2001 From: Matt Oakes Date: Tue, 15 Dec 2015 12:22:08 +0000 Subject: [PATCH] Make the order of the parameters determanistic The URL parameters should be deterministic as the full URL is used as the key for caching. If the non-ordered dictionary is used the caching will miss even when a value has been stored. --- prismic/connection.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/prismic/connection.py b/prismic/connection.py index ae4c21e..16ff23d 100644 --- a/prismic/connection.py +++ b/prismic/connection.py @@ -42,7 +42,8 @@ def get_json(url, params=None, access_token=None, cache=None, ttl=None, request_ request_handler = get_using_requests if access_token is not None: full_params["access_token"] = access_token - full_url = url if len(full_params) == 0 else (url + "?" + urlparse.urlencode(full_params, doseq=1)) + sorted_params = OrderedDict(sorted(full_params.items(), key=lambda t: t[0])) + full_url = url if len(full_params) == 0 else (url + "?" + urlparse.urlencode(sorted_params, doseq=1)) cached = cache.get(full_url) if cached is not None: return cached