/*
- Copyright (C) 2000-2004 SKYRIX Software AG
+ Copyright (C) 2000-2005 SKYRIX Software AG
- This file is part of OpenGroupware.org.
+ This file is part of SOPE.
- OGo is free software; you can redistribute it and/or modify it under
+ SOPE is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
- OGo is distributed in the hope that it will be useful, but WITHOUT ANY
+ SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public
- License along with OGo; see the file COPYING. If not, write to the
+ License along with SOPE; see the file COPYING. If not, write to the
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
*/
-// $Id$
#include "NGHttp+WO.h"
#include <NGHttp/NGHttp.h>
#include <NGObjWeb/WORequest.h>
#include <NGMime/NGMime.h>
#include "common.h"
+#include <string.h>
@interface WORequest(NGSupport)
- (void)_setHttpRequest:(NGHttpRequest *)_request;
/* transfer cookies */
if ([[_request cookies] count] > 0)
- NSLog(@"WARNING: cannot transfer cookies to NGHttpRequest yet !");
+ [self warnWithFormat:@"cannot transfer cookies to NGHttpRequest yet !"];
/* transfer headers !!! */
return;
}
-
- cookieValue = [_cookie value];
- if ([cookieValue isKindOfClass:[NSArray class]]) {
- if ([cookieValue count] == 0)
- cookieValue = @"";
- else if ([cookieValue count] == 1)
- cookieValue = [[cookieValue objectAtIndex:0] stringValue];
- else {
- [self logWithFormat:
- @"got %i values for cookie '%@', using first only.",
- [cookieValue count],
- [_cookie cookieName]];
- cookieValue = [[cookieValue objectAtIndex:0] stringValue];
- }
+ cookieValue = [(NGHttpCookie *)_cookie value];
+ if ([cookieValue isKindOfClass:[NSArray class]]) {
+ if ([cookieValue count] == 0)
+ cookieValue = @"";
+ else if ([cookieValue count] == 1)
+ cookieValue = [[cookieValue objectAtIndex:0] stringValue];
+ else {
+ [self logWithFormat:
+ @"got %d values for cookie '%@', using first only: %@",
+ [cookieValue count],
+ [_cookie cookieName],
+ [cookieValue componentsJoinedByString:@","]];
+ cookieValue = [[cookieValue objectAtIndex:0] stringValue];
}
- else
- cookieValue = [cookieValue stringValue];
+ }
+ else
+ cookieValue = [cookieValue stringValue];
- cookie = [WOCookieClass cookieWithName:[_cookie cookieName]
- value:cookieValue
- path:[_cookie path]
- domain:[_cookie domainName]
- expires:[_cookie expireDate]
- isSecure:[_cookie needsSecureChannel]];
-
- /* WOMessage */
- if (cookie)
- [_a addObject:cookie];
+ cookie = [WOCookieClass cookieWithName:[_cookie cookieName]
+ value:cookieValue
+ path:[_cookie path]
+ domain:[_cookie domainName]
+ expires:[_cookie expireDate]
+ isSecure:[_cookie needsSecureChannel]];
+
+ /* WOMessage */
+ if (cookie != nil)
+ [_a addObject:cookie];
}
- (NSArray *)woCookies {
ebody = [self body];
if (![ebody isKindOfClass:[NGMimeMultipartBody class]]) {
- [self logWithFormat:
- @"ERROR: form-data parser expected MultipartBody, got %@", ebody];
+ [self errorWithFormat:
+ @"form-data parser expected MultipartBody, got %@", ebody];
return [[NGHashMap alloc] init];
}
[[bodyPart valuesOfHeaderFieldWithName:@"content-disposition"]nextObject];
if (disposition == nil) {
- [self logWithFormat:
- @"ERROR: did not find content disposition in form part %@",
- bodyPart];
+ [self errorWithFormat:
+ @"did not find content disposition in form part %@", bodyPart];
continue;
}
}
p++; // skip the '?'
- map = NGDecodeUrlFormParameters(p, strlen(p));
- if (uribuf) free(uribuf); uribuf = NULL; p = NULL;
+ map = NGDecodeUrlFormParameters((unsigned char *)p, strlen((char *)p));
+ if (uribuf != NULL) free(uribuf); uribuf = NULL; p = NULL;
if (map == nil)
return formContent;
if ([[self methodName] isEqualToString:@"POST"]) {
NGMimeType *contentType = [self contentType];
- //NSLog(@"%s: process POST, ctype %@", __PRETTY_FUNCTION__, contentType);
+#if 0
+ NSLog(@"%s: process POST, ctype %@", __PRETTY_FUNCTION__, contentType);
+#endif
formContent = [contentType hasSameType:multipartFormData]
? [self _decodeMultiPartFormDataContent]