aboutsummaryrefslogtreecommitdiffstats
path: root/pygithub3/requests/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'pygithub3/requests/base.py')
-rw-r--r--pygithub3/requests/base.py26
1 files changed, 16 insertions, 10 deletions
diff --git a/pygithub3/requests/base.py b/pygithub3/requests/base.py
index 03b0f8a..d3e18a3 100644
--- a/pygithub3/requests/base.py
+++ b/pygithub3/requests/base.py
@@ -7,8 +7,8 @@ try:
except ImportError:
import json
-from pygithub3.exceptions import (DoesNotExists, UriInvalid, ValidationError,
- InvalidBodySchema)
+from pygithub3.exceptions import (RequestDoesNotExist, UriInvalid,
+ ValidationError, InvalidBodySchema)
from pygithub3.resources.base import Raw
from pygithub3.core.utils import import_module
@@ -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 """
@@ -120,11 +126,11 @@ class Factory(object):
% (ABS_IMPORT_PREFIX, module_chunk))
request = getattr(module, request_chunk)
except ImportError:
- raise DoesNotExists("'%s' module does not exists"
- % module_chunk)
+ raise RequestDoesNotExist("'%s' module does not exist"
+ % module_chunk)
except AttributeError:
- raise DoesNotExists(
- "'%s' request doesn't exists into '%s' module"
+ raise RequestDoesNotExist(
+ "'%s' request does not exist in '%s' module"
% (request_chunk, module_chunk))
return func(self, request, **kwargs)
return wrapper