from urlparse import parse_qs
import urllib
# parse and merge query and body parameters
# parameters = self._parse_query_parameters( self.request.query_string , self.request.body )
# if self.request.method == 'POST' or self.request.method == 'DELETE': # GET should not have body parameters
def _parse_query_parameters( self , queryString, body ):
""" extracts request parameters from query string and body
"""
parameters = Utility.parse_query( queryString ) if queryString else dict()
bodyParameters = Utility.parse_query( body ) if body else dict()
if bodyParameters:
parameters.update( bodyParameters )
return parameters
@staticmethod
def parse_query( param_str ):
"""Turn URL string into parameters."""
utf_string = Utility.get_utf_string( param_str )
parameters = parse_qs( utf_string , keep_blank_values = True )
for k , v in parameters.iteritems( ):
parameters[ k ] = urllib.unquote ( v[ 0 ] )
return parameters
@staticmethod
def get_utf_string( s ):
if s:
return s.encode('utf-8') if type(s) is unicode else (s if type(s) is str else str(s))
else:
return s