document.write('\n'); document.write('\n'); document.write('\n'); document.write('\n'); document.write('
\n'); document.write('
\n'); document.write(' \n'); document.write(' \n'); document.write(' \n'); document.write(' \n'); document.write(' \n'); document.write('
1\n'); document.write('2\n'); document.write('3\n'); document.write('4\n'); document.write('5\n'); document.write('6\n'); document.write('7\n'); document.write('8\n'); document.write('9\n'); document.write('10\n'); document.write('11\n'); document.write('12\n'); document.write('13\n'); document.write('14\n'); document.write('15\n'); document.write('16\n'); document.write('17\n'); document.write('18\n'); document.write('19\n'); document.write('20\n'); document.write('21\n'); document.write('22\n'); document.write('23\n'); document.write('24\n'); document.write('25\n'); document.write('26\n'); document.write('27\n'); document.write('28\n'); document.write('29\n'); document.write('30\n'); document.write('31\n'); document.write('32\n'); document.write('33\n'); document.write('34\n'); document.write('35\n'); document.write('36\n'); document.write('37\n'); document.write('38\n'); document.write('39\n'); document.write('40\n'); document.write('41\n'); document.write('42\n'); document.write('43\n'); document.write('44\n'); document.write('45\n'); document.write('46\n'); document.write('47\n'); document.write('48\n'); document.write('49\n'); document.write('50\n'); document.write('51\n'); document.write('52\n'); document.write('53\n'); document.write('54\n'); document.write('55\n'); document.write('56\n'); document.write('57\n'); document.write('58\n'); document.write('59\n'); document.write('60\n'); document.write('61\n'); document.write('62\n'); document.write('63\n'); document.write('64\n'); document.write('65\n'); document.write('66\n'); document.write('67\n'); document.write('68\n'); document.write('69\n'); document.write('70\n'); document.write('71\n'); document.write('72\n'); document.write('73\n'); document.write('74\n'); document.write('75\n'); document.write('76\n'); document.write('
- (id)initWithURL:(NSURL *)newURL {\n');
document.write('	if((self = [super initWithURL:newURL])) {\n');
document.write('		[self addRequestHeader:@"Accept-Encoding" value:@"gzip"];\n');
document.write('	}\n');
document.write('	\n');
document.write('	return self;\n');
document.write('}\n');
document.write('\n');
document.write('- (NSString *)dataString {\n');
document.write('	if (!receivedData) {\n');
document.write('		return nil;\n');
document.write('	}\n');
document.write('	\n');
document.write('	NSData* data;\n');
document.write('	\n');
document.write('	if([[self.responseHeaders objectForKey:@"Content-Encoding"] rangeOfString:@"gzip"].location != NSNotFound) {\n');
document.write('		data = [self uncompressData:[self receivedData]];\n');
document.write('	} else {\n');
document.write('		data = [self receivedData];\n');
document.write('	}\n');
document.write('\n');
document.write('\n');
document.write('	if([[self.responseHeaders objectForKey:@"Content-Type"] rangeOfString:@"utf"].location != NSNotFound) {\n');
document.write('		return [[[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:NSUTF8StringEncoding] autorelease];\n');
document.write('	} else {\n');
document.write('		return [[[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:NSASCIIStringEncoding] autorelease];\n');
document.write('	}\n');
document.write('}\n');
document.write('\n');
document.write('//\n');
document.write('// @see http://deusty.blogspot.com/2007/07/gzip-compressiondecompression.html\n');
document.write('//\n');
document.write('- (NSData *)uncompressData:(NSData*)compressedData {\n');
document.write('	if ([compressedData length] == 0) return compressedData;\n');
document.write('\n');
document.write('	unsigned full_length = [compressedData length];\n');
document.write('	unsigned half_length = [compressedData length] / 2;\n');
document.write('	\n');
document.write('	NSMutableData *decompressed = [NSMutableData dataWithLength: full_length + half_length];\n');
document.write('	BOOL done = NO;\n');
document.write('	int status;\n');
document.write('	\n');
document.write('	z_stream strm;\n');
document.write('	strm.next_in = (Bytef *)[compressedData bytes];\n');
document.write('	strm.avail_in = [compressedData length];\n');
document.write('	strm.total_out = 0;\n');
document.write('	strm.zalloc = Z_NULL;\n');
document.write('	strm.zfree = Z_NULL;\n');
document.write('	\n');
document.write('	if (inflateInit2(&strm, (15+32)) != Z_OK) return nil;\n');
document.write('	while (!done)\n');
document.write('	{\n');
document.write('		// Make sure we have enough room and reset the lengths.\n');
document.write('		if (strm.total_out >= [decompressed length])\n');
document.write('			[decompressed increaseLengthBy: half_length];\n');
document.write('		strm.next_out = [decompressed mutableBytes] + strm.total_out;\n');
document.write('		strm.avail_out = [decompressed length] - strm.total_out;\n');
document.write('		\n');
document.write('		// Inflate another chunk.\n');
document.write('		status = inflate (&strm, Z_SYNC_FLUSH);\n');
document.write('		if (status == Z_STREAM_END) done = YES;\n');
document.write('		else if (status != Z_OK) break;\n');
document.write('	}\n');
document.write('	if (inflateEnd (&strm) != Z_OK) return nil;\n');
document.write('	\n');
document.write('	// Set real length.\n');
document.write('	if (done)\n');
document.write('	{\n');
document.write('		[decompressed setLength: strm.total_out];\n');
document.write('		return [NSData dataWithData: decompressed];\n');
document.write('	}\n');
document.write('	else return nil;\n');
document.write('}\n');
document.write('\n');
document.write('
\n'); document.write('
\n'); document.write('
\n'); document.write('
\n'); document.write(' via Snippie [a8e20210]Original\n'); document.write('
\n'); document.write('
\n'); document.write('\n'); document.write('
');