Skip to content

Commit a39b62e

Browse files
committed
Created merge_dict utility function
1 parent 67de953 commit a39b62e

File tree

2 files changed

+17
-18
lines changed

2 files changed

+17
-18
lines changed

jwt/api.py

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
InvalidAlgorithmError, InvalidAudienceError, InvalidIssuedAtError,
1313
InvalidIssuerError
1414
)
15-
from .utils import base64url_decode, base64url_encode
15+
from .utils import base64url_decode, base64url_encode, merge_dict
1616

1717

1818
class PyJWT(object):
@@ -36,7 +36,7 @@ def __init__(self, algorithms=None, options=None):
3636
'verify_aud': True,
3737
}
3838

39-
self.options = self._merge_options(default_options, options)
39+
self.options = merge_dict(default_options, options)
4040

4141
def register_algorithm(self, alg_id, alg_obj):
4242
"""
@@ -84,6 +84,7 @@ def encode(self, payload, key, algorithm='HS256', headers=None, json_encoder=Non
8484

8585
# Header
8686
header = {'typ': 'JWT', 'alg': algorithm}
87+
8788
if headers:
8889
header.update(headers)
8990

@@ -127,7 +128,7 @@ def decode(self, jwt, key='', verify=True, algorithms=None, options=None, **kwar
127128
payload, signing_input, header, signature = self._load(jwt)
128129

129130
if verify:
130-
merged_options = self._merge_options(self.options, options)
131+
merged_options = merge_dict(self.options, options)
131132
if merged_options.get('verify_signature'):
132133
self._verify_signature(payload, signing_input, header, signature,
133134
key, algorithms)
@@ -248,21 +249,6 @@ def _validate_claims(self, payload, audience=None, issuer=None, leeway=0,
248249
if payload.get('iss') != issuer:
249250
raise InvalidIssuerError('Invalid issuer')
250251

251-
def _merge_options(self, original=None, updates=None):
252-
if not original:
253-
original = {}
254-
255-
if not updates:
256-
return original
257-
258-
try:
259-
merged_options = original.copy()
260-
merged_options.update(updates)
261-
except (AttributeError, ValueError) as e:
262-
raise TypeError('options must be a dictionary: %s' % e)
263-
264-
return merged_options
265-
266252

267253
_jwt_global_obj = PyJWT()
268254
encode = _jwt_global_obj.encode

jwt/utils.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,16 @@ def base64url_decode(input):
1212

1313
def base64url_encode(input):
1414
return base64.urlsafe_b64encode(input).replace(b'=', b'')
15+
16+
17+
def merge_dict(original, updates):
18+
if not updates:
19+
return original
20+
21+
try:
22+
merged_options = original.copy()
23+
merged_options.update(updates)
24+
except (AttributeError, ValueError) as e:
25+
raise TypeError('original and updates must be a dictionary: %s' % e)
26+
27+
return merged_options

0 commit comments

Comments
 (0)