]> err.no Git - scalable-opengroupware.org/blob - SoObjects/SOGo/NSDictionary+URL.m
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1166 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / SoObjects / SOGo / NSDictionary+URL.m
1 /* NSDictionary+URL.m - this file is part of SOGo
2  *
3  * Copyright (C) 2006 Inverse groupe conseil
4  *
5  * Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
6  *
7  * This file is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2, or (at your option)
10  * any later version.
11  *
12  * This file is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; see the file COPYING.  If not, write to
19  * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20  * Boston, MA 02111-1307, USA.
21  */
22
23 #import <Foundation/NSArray.h>
24 #import <Foundation/NSEnumerator.h>
25 #import <Foundation/NSString.h>
26
27 #import "NSDictionary+URL.h"
28
29 @implementation NSDictionary (SOGoURLExtension)
30
31 - (NSString *) asURLParameters
32 {
33   NSMutableString *urlParameters;
34   NSArray *keys;
35   NSEnumerator *keysEnum;
36   NSString *currentKey, *separator;
37   id currentValue;
38   BOOL isFirst;
39
40   urlParameters = [NSMutableString new];
41   [urlParameters autorelease];
42
43   keys = [self allKeys];
44   if ([keys count] > 0)
45     {
46       isFirst = YES;
47       keysEnum = [keys objectEnumerator];
48       currentKey = [keysEnum nextObject];
49       while (currentKey)
50         {
51           currentValue = [self objectForKey: currentKey];
52           if ([currentValue isKindOfClass: [NSArray class]])
53             {
54               separator = [NSString stringWithFormat: @"&%@=", currentKey];
55               currentValue
56                 = [currentValue componentsJoinedByString: separator];
57             }
58           [urlParameters appendFormat: @"%@%@=%@",
59                          ((isFirst) ? @"?" : @"&"),
60                          currentKey, currentValue];
61           isFirst = NO;
62           currentKey = [keysEnum nextObject];
63         }
64     }
65
66   return urlParameters;
67 }
68
69 @end