/* Copyright (c) 2004, Noah Sorscher
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 * 	¥ 	Redistributions of source code must retain the above copyright
 * 	notice, this list of conditions and the following disclaimer.
 * 	¥ 	Redistributions in binary form must reproduce the above copyright
 * 	notice, this list of conditions and the following disclaimer in the
 * 	documentation and/or other materials provided with the distribution.
 * 	¥ 	Neither the name of the Noah Sorscher nor the names of its
 * 	contributors may be used to endorse or promote products derived from
 * 	this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 * THE POSSIBILITY OF SUCH DAMAGE.
 */
//
//  NSStringWebAdditions.m
//  webtest
//
//  Created by Noah Sorscher on Sun Oct 19 2003.
//  Copyright (c) 2003 __MyCompanyName__. All rights reserved.
//

#import "NSStringWebAdditions.h"
//#import <CURLHandle/CURLHandle.h>
//#import <CURLHandle/CURLHandle+extras.h>

@implementation NSString (MHWebAdditions)

/*
+ (NSString *)stringWithContentsOfCURL:(NSURL *)url
{
    if (!url) return nil;
    [CURLHandle curlHelloSignature:@"XxXx" acceptAll:YES];	// to get CURLHandle registered for handling URLs
    CURLHandle *mURLHandle = (CURLHandle *)[url URLHandleUsingCache:NO];
    //[mURLHandle setFailsOnError:NO];
    [mURLHandle setFollowsRedirects:YES];
    [mURLHandle setUserAgent:@"Mozilla/4.5 (compatible; OmniWeb/4.0.5; Mac_PowerPC)"];
    [mURLHandle setConnectionTimeout:4];
    NSData *data = [mURLHandle resourceData];  // this is the hard part
    //NSString *contentType = [mURLHandle propertyForKeyIfAvailable:@"content-type"];
    if (!data) return nil;
    int dataLength = [data length];
    NSString *downloadString = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
    if (downloadString) return downloadString;
    const char *bytes = [data bytes];
    downloadString = [NSString stringWithCString:bytes length:dataLength];
    return downloadString;
}
*/
- (NSString *)whitespaceTrimmed
{
    return [[NSString stringWithString:self] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

- (NSString *)stringRelativeToString:(NSString *)baseAddress
{
	NSString *s = self;
	NSRange r = [s rangeOfString:@"#"];
	if (r.length)
		s = [s substringToIndex:r.location];
    NSURL *base = [NSURL URLWithString:baseAddress];
    NSURL *url = [NSURL URLWithString:s relativeToURL:base];
	return [url absoluteString];
}

- (NSString *)truncate:(NSString *)target
{
	if (![target length]) return self;
	NSRange r = [self rangeOfString:target];
	if (!r.length) return self;
	NSString *shorter = [self substringToIndex:r.location];
	return shorter;
}

@end
