mirror of
https://github.com/reddit-archive/reddit.git
synced 2026-02-10 14:45:21 -05:00
Add more verbose JSON validation errors.
This commit is contained in:
@@ -129,6 +129,8 @@ error_list = dict((
|
||||
('MULTI_TOO_MANY_SUBREDDITS', _('no more space for subreddits in that multireddit')),
|
||||
('MULTI_SPECIAL_SUBREDDIT', _("can't add special subreddit %(path)s")),
|
||||
('JSON_PARSE_ERROR', _('unable to parse JSON data')),
|
||||
('JSON_INVALID', _('unexpected JSON structure')),
|
||||
('JSON_MISSING_KEY', _('JSON missing key: "%(key)s"')),
|
||||
))
|
||||
|
||||
errors = Storage([(e, e) for e in error_list.keys()])
|
||||
|
||||
@@ -2205,7 +2205,7 @@ class VValidatedJSON(VJSON):
|
||||
|
||||
def run(self, data):
|
||||
if not isinstance(data, list):
|
||||
raise ValueError
|
||||
raise RedditError('JSON_INVALID', code=400)
|
||||
|
||||
validated_data = []
|
||||
for item in data:
|
||||
@@ -2230,11 +2230,15 @@ class VValidatedJSON(VJSON):
|
||||
|
||||
def run(self, data):
|
||||
if not isinstance(data, dict):
|
||||
raise ValueError
|
||||
raise RedditError('JSON_INVALID', code=400)
|
||||
|
||||
validated_data = {}
|
||||
for key, validator in self.spec.iteritems():
|
||||
validated_data[key] = validator.run(data[key])
|
||||
try:
|
||||
validated_data[key] = validator.run(data[key])
|
||||
except KeyError:
|
||||
raise RedditError('JSON_MISSING_KEY', code=400,
|
||||
msg_params={'key': key})
|
||||
return validated_data
|
||||
|
||||
def spec_docs(self):
|
||||
|
||||
Reference in New Issue
Block a user