Skip to content

Commit cd7e1b8

Browse files
committed
Deleted 'validate_body' behaviour
'clean_body' had been developed to that functionality
1 parent 3a82e76 commit cd7e1b8

File tree

3 files changed

+26
-56
lines changed

3 files changed

+26
-56
lines changed

pygithub3/requests/base.py

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,25 @@
1212

1313

1414
class Body(object):
15+
""" Input's request handler """
1516

16-
def __init__(self, content, valid_body, validate_body=None):
17+
def __init__(self, content, schema, required):
1718
self.content = content
18-
self.schema = valid_body['schema']
19-
self.required = valid_body['required']
20-
self.validate_body = validate_body or (lambda x: None)
19+
self.schema = schema
20+
self.required = required
2121

2222
def dumps(self):
2323
if not self.schema:
2424
return self.content or None
2525
return json.dumps(self.parse())
2626

2727
def parse(self):
28+
""" Parse body with schema-required rules """
2829
if not hasattr(self.content, 'items'):
2930
raise ValidationError("'%s' needs a content dictionary"
3031
% self.__class__.__name__)
3132
parsed = dict([(key, self.content[key]) for key in self.schema
3233
if key in self.content])
33-
self.validate_body(parsed)
3434
for attr_required in self.required:
3535
if attr_required not in parsed:
3636
raise ValidationError("'%s' attribute is required" %
@@ -42,30 +42,42 @@ def parse(self):
4242

4343

4444
class Request(object):
45-
""" """
4645

4746
uri = ''
4847
resource = Raw
4948
body_schema = {}
5049

5150
def __init__(self, **kwargs):
52-
""" """
53-
self.body = kwargs.pop('body', None)
51+
self.body = kwargs.pop('body', {})
5452
self.args = kwargs
5553
self.clean()
5654

55+
def __getattr__(self, name):
56+
return self.args.get(name)
57+
58+
def __str__(self):
59+
return self.populate_uri()
60+
61+
def populate_uri(self):
62+
try:
63+
populated_uri = self.uri.format(**self.args)
64+
except KeyError:
65+
raise ValidationError(
66+
"'%s' request wasn't be able to populate the uri '%s' with "
67+
"'%s' args" % (self.__class__.__name__, self.uri, self.args))
68+
return str(populated_uri).strip('/')
69+
5770
def clean(self):
5871
self.uri = self.clean_uri() or self.uri
59-
self.body = Body(self.clean_body(), self.clean_valid_body(),
60-
self.validate_body)
72+
self.body = Body(self.clean_body(), **self._clean_valid_body())
6173

6274
def clean_body(self):
6375
return self.body
6476

6577
def clean_uri(self):
6678
return None
6779

68-
def clean_valid_body(self):
80+
def _clean_valid_body(self):
6981
schema = set(self.body_schema.get('schema', ()))
7082
required = set(self.body_schema.get('required', ()))
7183
if not required.issubset(schema):
@@ -75,27 +87,9 @@ def clean_valid_body(self):
7587
self.__class__.__name__, required, schema))
7688
return dict(schema=schema, required=required)
7789

78-
def __getattr__(self, name):
79-
return self.args.get(name)
80-
81-
def __str__(self):
82-
return self.populate_uri()
83-
84-
def populate_uri(self):
85-
try:
86-
populated_uri = self.uri.format(**self.args)
87-
except KeyError:
88-
raise ValidationError(
89-
"'%s' request wasn't be able to populate the uri '%s' with "
90-
"'%s' args" % (self.__class__.__name__, self.uri, self.args))
91-
return str(populated_uri).strip('/')
92-
9390
def get_body(self):
9491
return self.body.dumps()
9592

96-
def validate_body(self, *args):
97-
pass
98-
9993

10094
class Factory(object):
10195
""" Request builder """

pygithub3/tests/requests/test_core.py

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,12 @@
22
# -*- encoding: utf-8 -*-
33

44
from mock import Mock
5-
from nose.tools import raises
65

76
from pygithub3.tests.utils.core import TestCase
87
from pygithub3.requests.base import Factory, Body, json, Request
98
from pygithub3.exceptions import (UriInvalid, RequestDoesNotExist,
109
ValidationError, InvalidBodySchema)
11-
from pygithub3.tests.utils.base import (mock_json, DummyRequest,
12-
DummyRequestValidation)
10+
from pygithub3.tests.utils.base import mock_json, DummyRequest
1311
from pygithub3.tests.utils.requests import (
1412
RequestWithArgs, RequestCleanedUri, RequestBodyInvalidSchema,
1513
RequestCleanedBody)
@@ -76,7 +74,7 @@ class TestRequestBodyWithSchema(TestCase):
7674

7775
def setUp(self):
7876
valid_body = dict(schema=('arg1', 'arg2'), required=('arg1', ))
79-
self.b = Body({}, valid_body)
77+
self.b = Body({}, **valid_body)
8078

8179
def test_with_body_empty_and_schema_permissive(self):
8280
self.b.schema = ('arg1', 'arg2', '...')
@@ -102,14 +100,3 @@ def test_with_body_as_None(self):
102100
def test_only_valid_keys(self):
103101
self.b.content = dict(arg1='arg1', arg2='arg2', fake='test')
104102
self.assertEqual(self.b.dumps(), dict(arg1='arg1', arg2='arg2'))
105-
106-
107-
class TestBodyValidation(TestCase):
108-
@raises(ValidationError)
109-
def test_with_error(self):
110-
req = DummyRequestValidation(
111-
body={'foo': 'bar', 'error': 'yes'},
112-
)
113-
req.body_schema = {'schema': ('foo',),
114-
'required': ('foo',)}
115-
req.get_body()

pygithub3/tests/utils/base.py

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from mock import Mock
55

66
from pygithub3.resources.base import Resource
7-
from pygithub3.requests.base import Request, ValidationError
7+
from pygithub3.requests.base import Request
88

99

1010
def mock_json(content):
@@ -37,14 +37,3 @@ def loads_mock(content):
3737
class DummyRequest(Request):
3838
uri = 'dummyrequest'
3939
resource = DummyResource
40-
41-
42-
class DummyRequestValidation(DummyRequest):
43-
body_schema = {
44-
'schema': ('foo', 'error'),
45-
'required': ('foo',)
46-
}
47-
48-
def validate_body(self, body):
49-
if body.get('error') == 'yes':
50-
raise ValidationError('yes')

0 commit comments

Comments
 (0)