1212
1313
1414class 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
4444class 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
10094class Factory (object ):
10195 """ Request builder """
0 commit comments