From 32654998f055c85d9a70b6f415abf79dd81c601e Mon Sep 17 00:00:00 2001 From: "gtm.daemon" Date: Thu, 1 Mar 2012 17:00:20 +0000 Subject: [Author: msenesi] Flexible builder for URLs. R=altse,dmaclach,thomasvl APPROVED=dmaclach --- Foundation/GTMURLBuilder.h | 64 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Foundation/GTMURLBuilder.h (limited to 'Foundation/GTMURLBuilder.h') diff --git a/Foundation/GTMURLBuilder.h b/Foundation/GTMURLBuilder.h new file mode 100644 index 0000000..e959fa7 --- /dev/null +++ b/Foundation/GTMURLBuilder.h @@ -0,0 +1,64 @@ +// +// GTMURLBuilder.h +// +// Copyright 2012 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy +// of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations +// under the License. +// + +// +// Class for creating URLs. It handles URL encoding of parameters. +// +// Usage example: +// +// GTMURLBuilder *URLBuilder = +// [GTMURLBuilder builderWithString:@"http://www.google.com"]; +// [URLBuilder setValue:@"abc" forParameter:@"q"]; +// NSURL *URL = [URLBuilder URL]; +// + +#import +#import "GTMDefines.h" + +@interface GTMURLBuilder : NSObject { + @private + NSMutableDictionary *params_; +} + +@property(nonatomic, readonly) NSString *baseURLString; + +// Encodes URL by percent-encoding, except reserved characters: +// ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | "," ++ (NSURL *)URLWithString:(NSString *)URLString; +// |URLString| is expected to be a valid URL with already escaped parameter +// values. ++ (GTMURLBuilder *)builderWithString:(NSString *)URLString; ++ (GTMURLBuilder *)builderWithURL:(NSURL *)URL; + +// |URLString| The base URL to which parameters will be appended. +// If the URL already contains parameters, they should already be encoded. +- (id)initWithString:(NSString *)URLString; +- (void)setValue:(NSString *)value forParameter:(NSString *)parameter; +- (void)setIntegerValue:(NSInteger)value forParameter:(NSString *)parameter; +- (NSString *)valueForParameter:(NSString *)parameter; +- (void)removeParameter:(NSString *)parameter; +- (void)setParameters:(NSDictionary *)parameters; +- (NSDictionary *)parameters; +- (NSURL *)URL; +- (NSString *)URLString; + +// Case-sensitive comparison of the URL. Also protocol and host are compared +// as case-sensitive strings. The order of URL parameters is ignored. +- (BOOL)isEqual:(GTMURLBuilder *)URLBuilder; + +@end -- cgit v1.2.3