Author: rfm
Date: Tue Dec 6 10:10:13 2016
New Revision: 40253
URL: http://svn.gna.org/viewcvs/gnustep?rev=40253&view=rev
Log:
Allow encoding of form data using alternative charset
Modified:
libs/webserver/trunk/WebServer.h
libs/webserver/trunk/WebServer.m
Modified: libs/webserver/trunk/WebServer.h
URL:
http://svn.gna.org/viewcvs/gnustep/libs/webserver/trunk/WebServer.h?rev=40253&r1=40252&r2=40253&view=diff
==============================================================================
--- libs/webserver/trunk/WebServer.h (original)
+++ libs/webserver/trunk/WebServer.h Tue Dec 6 10:10:13 2016
@@ -457,6 +457,13 @@
* Same as the instance method of the same name.
*/
+ (NSUInteger) encodeURLEncodedForm: (NSDictionary*)dict
+ charset: (NSString*)charset
+ into: (NSMutableData*)data;
+
+/** DEPRECATED ... use +encodeURLEncodedForm:charset:into: instead.<br />
+ * Same as the instance method of the same name.
+ */
++ (NSUInteger) encodeURLEncodedForm: (NSDictionary*)dict
into: (NSMutableData*)data;
@@ -614,9 +621,16 @@
* Each value in the array may be a data object or a string.<br />
* As a special case, a value may be a data object or a string rather
* than an array ... this is treated like an array of one value.<br />
- * All non data keys and values are converted to data using
- * utf-8 encoding.<br />
+ * All non data keys and values are converted to data using the specified
+ * charset (or utf-8 if charset is nil/unrecognized or where the key/value
+ * cannot be represented using the specified charset).<br />
* This method returns the number of values actually encoded.
+ */
+- (NSUInteger) encodeURLEncodedForm: (NSDictionary*)dict
+ charset: (NSString*)charset
+ into: (NSMutableData*)data;
+
+/** DEPRECATED ... use -encodeURLEncodedForm:charset:into: instead.<br />
*/
- (NSUInteger) encodeURLEncodedForm: (NSDictionary*)dict
into: (NSMutableData*)data;
Modified: libs/webserver/trunk/WebServer.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/webserver/trunk/WebServer.m?rev=40253&r1=40252&r2=40253&view=diff
==============================================================================
--- libs/webserver/trunk/WebServer.m (original)
+++ libs/webserver/trunk/WebServer.m Tue Dec 6 10:10:13 2016
@@ -335,13 +335,28 @@
}
+ (NSUInteger) encodeURLEncodedForm: (NSDictionary*)dict
+ charset: (NSString*)charset
into: (NSMutableData*)data
{
CREATE_AUTORELEASE_POOL(arp);
NSEnumerator *keyEnumerator;
+ NSStringEncoding enc;
id key;
NSUInteger valueCount = 0;
NSMutableData *md = [NSMutableDataClass dataWithCapacity:
100];
+
+ if (nil == charset)
+ {
+ enc = NSUTF8StringEncoding;
+ }
+ else
+ {
+ enc = [GSMimeDocument encodingFromCharset: charset];
+ if (GSUndefinedEncoding == enc)
+ {
+ enc = NSUTF8StringEncoding;
+ }
+ }
keyEnumerator = [dict keyEnumerator];
while ((key = [keyEnumerator nextObject]) != nil)
@@ -358,7 +373,11 @@
else
{
key = [key description];
- keyData = [key dataUsingEncoding: NSUTF8StringEncoding];
+ keyData = [key dataUsingEncoding: enc];
+ if (nil == keyData)
+ {
+ keyData = [key dataUsingEncoding: NSUTF8StringEncoding];
+ }
}
[md setLength: 0];
escapeData([keyData bytes], [keyData length], md);
@@ -388,7 +407,11 @@
else
{
value = [value description];
- valueData = [value dataUsingEncoding: NSUTF8StringEncoding];
+ valueData = [value dataUsingEncoding: enc];
+ if (nil == valueData)
+ {
+ valueData = [value dataUsingEncoding: NSUTF8StringEncoding];
+ }
}
escapeData([valueData bytes], [valueData length], data);
valueCount++;
@@ -396,6 +419,14 @@
}
RELEASE(arp);
return valueCount;
+}
+
++ (NSUInteger) encodeURLEncodedForm: (NSDictionary*)dict
+ into: (NSMutableData*)data
+{
+ return [self encodeURLEncodedForm: dict
+ charset: nil
+ into: data];
}
+ (NSString*) escapeHTML: (NSString*)str
@@ -660,7 +691,7 @@
data = [[newPath dataUsingEncoding: NSUTF8StringEncoding] mutableCopy];
[data appendBytes: "?" length: 1];
- [self encodeURLEncodedForm: m into: data];
+ [self encodeURLEncodedForm: m charset: nil into: data];
newPath = [NSString alloc];
newPath = [newPath initWithData: data encoding: NSUTF8StringEncoding];
[newPath autorelease];
@@ -995,9 +1026,16 @@
}
- (NSUInteger) encodeURLEncodedForm: (NSDictionary*)dict
+ charset: (NSString*)charset
into: (NSMutableData*)data
{
- return [[self class] encodeURLEncodedForm: dict into: data];
+ return [[self class] encodeURLEncodedForm: dict charset: charset into: data];
+}
+
+- (NSUInteger) encodeURLEncodedForm: (NSDictionary*)dict
+ into: (NSMutableData*)data
+{
+ return [[self class] encodeURLEncodedForm: dict charset: nil into: data];
}
- (NSString*) escapeHTML: (NSString*)str
_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs