1.1 --- a/WebStack/BaseHTTPRequestHandler.py Fri Aug 27 23:53:03 2004 +0000
1.2 +++ b/WebStack/BaseHTTPRequestHandler.py Sat Aug 28 16:51:53 2004 +0000
1.3 @@ -5,7 +5,7 @@
1.4 """
1.5
1.6 import Generic
1.7 -from Helpers.Request import MessageBodyStream
1.8 +from Helpers.Request import MessageBodyStream, get_body_fields, get_storage_items
1.9 from Helpers.Response import ConvertingStream
1.10 from Helpers.Auth import UserInfo
1.11 from cgi import parse_qs, FieldStorage
1.12 @@ -209,8 +209,7 @@
1.13 Returns a dictionary mapping field names to lists of values (even if a
1.14 single value is associated with any given field name). Each value is
1.15 either a Unicode object (representing a simple form field, for example)
1.16 - or a file-like object (representing a file upload form field, for
1.17 - example).
1.18 + or a plain string (representing a file upload form field, for example).
1.19 """
1.20
1.21 encoding = self.get_content_type().charset or encoding or "iso-8859-1"
1.22 @@ -227,13 +226,8 @@
1.23
1.24 # Traverse the storage, finding each field value.
1.25
1.26 - for field_name in self.storage_body.keys():
1.27 - fields[field_name] = []
1.28 - for field_value in self.storage_body.getlist(field_name):
1.29 - if hasattr(field_value, "file"):
1.30 - fields[field_name].append(field_value.file)
1.31 - else:
1.32 - fields[field_name].append(unicode(field_value, encoding))
1.33 + fields = get_body_fields(get_storage_items(self.storage_body), encoding)
1.34 +
1.35 return fields
1.36
1.37 def get_user(self):
2.1 --- a/WebStack/CGI.py Fri Aug 27 23:53:03 2004 +0000
2.2 +++ b/WebStack/CGI.py Sat Aug 28 16:51:53 2004 +0000
2.3 @@ -6,7 +6,7 @@
2.4
2.5 import Generic
2.6 import os, sys
2.7 -from Helpers.Request import MessageBodyStream
2.8 +from Helpers.Request import MessageBodyStream, get_body_fields, get_storage_items
2.9 from Helpers.Response import ConvertingStream
2.10 from Helpers.Auth import UserInfo
2.11 from Helpers import Environment
2.12 @@ -203,8 +203,7 @@
2.13 Returns a dictionary mapping field names to lists of values (even if a
2.14 single value is associated with any given field name). Each value is
2.15 either a Unicode object (representing a simple form field, for example)
2.16 - or a file-like object (representing a file upload form field, for
2.17 - example).
2.18 + or a plain string (representing a file upload form field, for example).
2.19 """
2.20
2.21 encoding = self.get_content_type().charset or encoding or "iso-8859-1"
2.22 @@ -220,13 +219,8 @@
2.23
2.24 # Traverse the storage, finding each field value.
2.25
2.26 - for field_name in self.storage_body.keys():
2.27 - fields[field_name] = []
2.28 - for field_value in self.storage_body.getlist(field_name):
2.29 - if hasattr(field_value, "file"):
2.30 - fields[field_name].append(field_value.file)
2.31 - else:
2.32 - fields[field_name].append(unicode(field_value, encoding))
2.33 + fields = get_body_fields(get_storage_items(self.storage_body), encoding)
2.34 +
2.35 return fields
2.36
2.37 def get_user(self):
3.1 --- a/WebStack/Generic.py Fri Aug 27 23:53:03 2004 +0000
3.2 +++ b/WebStack/Generic.py Sat Aug 28 16:51:53 2004 +0000
3.3 @@ -256,8 +256,7 @@
3.4 Returns a dictionary mapping field names to lists of values (even if a
3.5 single value is associated with any given field name). Each value is
3.6 either a Unicode object (representing a simple form field, for example)
3.7 - or a file-like object (representing a file upload form field, for
3.8 - example).
3.9 + or a plain string (representing a file upload form field, for example).
3.10 """
3.11
3.12 raise NotImplementedError, "get_fields_from_body"
4.1 --- a/WebStack/JavaServlet.py Fri Aug 27 23:53:03 2004 +0000
4.2 +++ b/WebStack/JavaServlet.py Sat Aug 28 16:51:53 2004 +0000
4.3 @@ -6,7 +6,7 @@
4.4
4.5 import Generic
4.6 from StringIO import StringIO
4.7 -from Helpers.Request import Cookie
4.8 +from Helpers.Request import Cookie, get_body_fields, get_storage_items
4.9 import javax.servlet.http.Cookie
4.10 from cgi import FieldStorage
4.11
4.12 @@ -238,16 +238,13 @@
4.13 Returns a dictionary mapping field names to lists of values (even if a
4.14 single value is associated with any given field name). Each value is
4.15 either a Unicode object (representing a simple form field, for example)
4.16 - or a file-like object (representing a file upload form field, for
4.17 - example).
4.18 + or a plain string (representing a file upload form field, for example).
4.19
4.20 NOTE: There may not be a reliable means of extracting only the fields
4.21 NOTE: from the message body. Moreover, the encoding of the fields may
4.22 NOTE: not be pertinent.
4.23 """
4.24
4.25 - fields = {}
4.26 -
4.27 # Where the content type is "multipart/form-data", we use the
4.28 # FieldStorage class from the standard library. Otherwise, we use the
4.29 # Servlet API's parameter access methods.
4.30 @@ -267,27 +264,9 @@
4.31
4.32 # Traverse the storage, finding each field value.
4.33
4.34 - for field_name in self.storage_body.keys():
4.35 -
4.36 - # NOTE: Jython 2.1 does not have a cgi module with a
4.37 - # NOTE: FieldStorage.getlist implementation.
4.38 -
4.39 - field_values = self.storage_body.getvalue(field_name)
4.40 -
4.41 - if type(field_values) == type([]):
4.42 - fields[field_name] = []
4.43 - for field_value in field_values:
4.44 - if hasattr(field_value, "file"):
4.45 - fields[field_name].append(field_value.file)
4.46 - else:
4.47 - fields[field_name].append(field_value)
4.48 - else:
4.49 - if hasattr(field_values, "file"):
4.50 - fields[field_name] = [field_values.file]
4.51 - else:
4.52 - fields[field_name] = [field_values]
4.53 -
4.54 + fields = get_body_fields(get_storage_items(self.storage_body), None)
4.55 else:
4.56 + fields = {}
4.57 parameter_map = self.request.getParameterMap()
4.58 if parameter_map:
4.59 for key in parameter_map.keySet():
5.1 --- a/WebStack/ModPython.py Fri Aug 27 23:53:03 2004 +0000
5.2 +++ b/WebStack/ModPython.py Sat Aug 28 16:51:53 2004 +0000
5.3 @@ -5,6 +5,7 @@
5.4 """
5.5
5.6 import Generic
5.7 +from Helpers.Request import get_body_field
5.8 from Helpers.Response import ConvertingStream
5.9 from mod_python.util import parse_qs, FieldStorage
5.10 from mod_python import apache
5.11 @@ -163,8 +164,7 @@
5.12 Returns a dictionary mapping field names to lists of values (even if a
5.13 single value is associated with any given field name). Each value is
5.14 either a Unicode object (representing a simple form field, for example)
5.15 - or a file-like object (representing a file upload form field, for
5.16 - example).
5.17 + or a plain string (representing a file upload form field, for example).
5.18
5.19 The mod_python.util.FieldStorage class may augment the fields from the
5.20 body with fields found in the path.
5.21 @@ -181,10 +181,7 @@
5.22 for field in self.storage_body.list:
5.23 if not fields.has_key(field.name):
5.24 fields[field.name] = []
5.25 - if hasattr(field.value, "file"):
5.26 - fields[field.name].append(field.value.file)
5.27 - else:
5.28 - fields[field.name].append(unicode(field.value, encoding))
5.29 + fields[field.name].append(get_body_field(field.value, encoding))
5.30 return fields
5.31
5.32 def get_user(self):
6.1 --- a/WebStack/Twisted.py Fri Aug 27 23:53:03 2004 +0000
6.2 +++ b/WebStack/Twisted.py Sat Aug 28 16:51:53 2004 +0000
6.3 @@ -6,7 +6,7 @@
6.4
6.5 import Generic
6.6 from Helpers.Auth import UserInfo
6.7 -from Helpers.Request import Cookie
6.8 +from Helpers.Request import Cookie, get_body_field
6.9 from Helpers.Response import ConvertingStream
6.10 from cgi import parse_qs
6.11
6.12 @@ -158,19 +158,21 @@
6.13 Returns a dictionary mapping field names to lists of values (even if a
6.14 single value is associated with any given field name). Each value is
6.15 either a Unicode object (representing a simple form field, for example)
6.16 - or a file-like object (representing a file upload form field, for
6.17 - example).
6.18 + or a plain string (representing a file upload form field, for example).
6.19 """
6.20
6.21 encoding = self.get_content_type().charset or encoding or "iso-8859-1"
6.22 fields = {}
6.23 for field_name, field_values in self.trans.args.items():
6.24 - fields[field_name] = []
6.25 - for field_value in field_values:
6.26 - if hasattr(field_value, "file"):
6.27 - fields[field_name].append(field_value.file)
6.28 - else:
6.29 - fields[field_name].append(unicode(field_value, encoding))
6.30 + if type(field_values) == type([]):
6.31 + fields[field_name] = []
6.32 +
6.33 + # Twisted stores plain strings.
6.34 +
6.35 + for field_str in field_values:
6.36 + fields[field_name].append(get_body_field(field_str, encoding))
6.37 + else:
6.38 + fields[field_name] = get_body_field(field_values, encoding)
6.39 return fields
6.40
6.41 def get_user(self):
7.1 --- a/WebStack/Webware.py Fri Aug 27 23:53:03 2004 +0000
7.2 +++ b/WebStack/Webware.py Sat Aug 28 16:51:53 2004 +0000
7.3 @@ -8,7 +8,7 @@
7.4 from cgi import parse_qs
7.5 import StringIO
7.6 from Helpers import Environment
7.7 -from Helpers.Request import Cookie
7.8 +from Helpers.Request import Cookie, get_body_field
7.9 from Helpers.Response import ConvertingStream
7.10
7.11 class Transaction(Generic.Transaction):
7.12 @@ -174,28 +174,18 @@
7.13 Returns a dictionary mapping field names to lists of values (even if a
7.14 single value is associated with any given field name). Each value is
7.15 either a Unicode object (representing a simple form field, for example)
7.16 - or a file-like object (representing a file upload form field, for
7.17 - example).
7.18 + or a plain string (representing a file upload form field, for example).
7.19 """
7.20
7.21 encoding = self.get_content_type().charset or encoding or "iso-8859-1"
7.22 -
7.23 - # Fix the non-list results.
7.24 -
7.25 fields = {}
7.26 for field_name, field_values in self.trans.request().fields().items():
7.27 if type(field_values) == type([]):
7.28 fields[field_name] = []
7.29 - for field_value in field_values:
7.30 - if hasattr(field_value, "file"):
7.31 - fields[field_name].append(field_value.file)
7.32 - else:
7.33 - fields[field_name].append(unicode(field_value, encoding))
7.34 + for field_str in field_values:
7.35 + fields[field_name].append(get_body_field(field_str, encoding))
7.36 else:
7.37 - if hasattr(field_values, "file"):
7.38 - fields[field_name] = [field_values.file]
7.39 - else:
7.40 - fields[field_name] = [unicode(field_values, encoding)]
7.41 + fields[field_name] = [get_body_field(field_values, encoding)]
7.42 return fields
7.43
7.44 def get_user(self):
8.1 --- a/WebStack/Zope.py Fri Aug 27 23:53:03 2004 +0000
8.2 +++ b/WebStack/Zope.py Sat Aug 28 16:51:53 2004 +0000
8.3 @@ -8,7 +8,7 @@
8.4
8.5 import Generic
8.6 from Helpers import Environment
8.7 -from Helpers.Request import Cookie
8.8 +from Helpers.Request import Cookie, get_body_fields
8.9 from Helpers.Response import ConvertingStream
8.10 from ZPublisher.HTTPRequest import FileUpload
8.11
8.12 @@ -177,8 +177,7 @@
8.13 Returns a dictionary mapping field names to lists of values (even if a
8.14 single value is associated with any given field name). Each value is
8.15 either a Unicode object (representing a simple form field, for example)
8.16 - or a file-like object (representing a file upload form field, for
8.17 - example).
8.18 + or a plain string (representing a file upload form field, for example).
8.19
8.20 NOTE: Zope doesn't distinguish between path and body fields.
8.21 """
8.22 @@ -186,14 +185,7 @@
8.23 # NOTE: Conversion to Unicode may be inappropriate.
8.24
8.25 encoding = self.get_content_type().charset or encoding or "iso-8859-1"
8.26 - fields = {}
8.27 - for field_name, field_values in self.get_fields_from_path().items():
8.28 - fields[field_name] = []
8.29 - for field_value in field_values:
8.30 - if isinstance(field_value, FileUpload):
8.31 - fields[field_name].append(field_value)
8.32 - else:
8.33 - fields[field_name].append(unicode(field_value, encoding))
8.34 + fields = get_body_fields(self.get_fields_from_path().items(), encoding)
8.35 return fields
8.36
8.37 def get_user(self):