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(' | \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('