aboutsummaryrefslogtreecommitdiffstats
path: root/pygithub3/requests/base.py
diff options
context:
space:
mode:
authorNat Williams <nwilliams@leapfrogonline.com>2012-04-17 14:39:12 -0500
committerNat Williams <nwilliams@leapfrogonline.com>2012-04-17 14:39:12 -0500
commit2ca15bb8e847735f566ee0cb896f071b3b5ca056 (patch)
tree877ac2900ef07d171cd74654ff960875243e2ed5 /pygithub3/requests/base.py
parent:sparkles: Release 0.3 :sparkles: (diff)
downloadpython-github3-2ca15bb8e847735f566ee0cb896f071b3b5ca056.tar.xz
python-github3-2ca15bb8e847735f566ee0cb896f071b3b5ca056.zip
let request objects specify custom body validations
Diffstat (limited to 'pygithub3/requests/base.py')
-rw-r--r--pygithub3/requests/base.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/pygithub3/requests/base.py b/pygithub3/requests/base.py
index 03b0f8a..582a73f 100644
--- a/pygithub3/requests/base.py
+++ b/pygithub3/requests/base.py
@@ -17,10 +17,11 @@ ABS_IMPORT_PREFIX = 'pygithub3.requests'
class Body(object):
- def __init__(self, content, schema, required):
+ def __init__(self, content, valid_body, validate_body=None):
self.content = content
- self.schema = schema
- self.required = required
+ self.schema = valid_body['schema']
+ self.required = valid_body['required']
+ self.validate_body = validate_body or (lambda x: None)
def dumps(self):
if not self.schema:
@@ -33,6 +34,7 @@ class Body(object):
% self.__class__.__name__)
parsed = dict([(key, self.content[key]) for key in self.schema
if key in self.content])
+ self.validate_body(parsed)
for attr_required in self.required:
if attr_required not in parsed:
raise ValidationError("'%s' attribute is required" %
@@ -58,7 +60,8 @@ class Request(object):
def clean(self):
self.uri = self.clean_uri() or self.uri
- self.body = Body(self.clean_body(), **self.clean_valid_body())
+ self.body = Body(self.clean_body(), self.clean_valid_body(),
+ self.validate_body)
def clean_body(self):
return self.body
@@ -94,6 +97,9 @@ class Request(object):
def get_body(self):
return self.body.dumps()
+ def validate_body(self, *args):
+ pass
+
class Factory(object):
""" Request builder """