2 // InternetTextMessage.cpp
\r
5 #include "net/InternetTextMessage.h"
\r
7 using namespace Raym;
\r
12 InternetTextMessage::InternetTextMessage()
\r
18 InternetTextMessage::~InternetTextMessage()
\r
25 if (_header != NULL)
\r
32 InternetTextMessage *InternetTextMessage::alloc()
\r
34 return new InternetTextMessage();
\r
37 InternetTextMessage *InternetTextMessage::initWithContentsOfFile(const char *path)
\r
40 NSFileManager *fm = [NSFileManager defaultManager];
\r
41 return [self initWithData:[fm contentsAtPath:path]];
\r
47 InternetTextMessage *InternetTextMessage::initWithData(Data *data)
\r
50 if ((self = [super init]) != nil)
\r
55 char *tmp = "\r\n\r\n";
\r
56 Data *crlfcrlf = [Data dataWithBytes:tmp length:4];
\r
57 NSRange r = {0, [data length]};
\r
58 r = [data rangeOfData:crlfcrlf options:0 range:r];
\r
59 if (r.location != NSNotFound)
\r
61 NSRange rh = {0, r.location + 4};
\r
62 Data *dh = [data subdataWithRange:rh];
\r
63 _header = [[InternetTextMessageHeader alloc] initWithData:dh];
\r
64 NSRange rb = {r.location + 4, ([data length] - (r.location + 4))};
\r
65 Data *db = [data subdataWithRange:rb];
\r
66 _body = [[InternetTextMessageBody alloc] initWithData:db];
\r
79 InternetTextMessage *InternetTextMessage::initWithHeaderAndBody(InternetTextMessageHeader *header, InternetTextMessageBody *body)
\r
83 _header = header->retain();
\r
86 _body = body->retain();
\r
95 InternetTextMessage *InternetTextMessage::retain()
\r
101 InternetTextMessage *InternetTextMessage::autorelease()
\r
103 Object::autorelease();
\r
107 InternetTextMessageHeader *InternetTextMessage::header()
\r
112 InternetTextMessageBody *InternetTextMessage::body()
\r
117 Data *InternetTextMessage::data()
\r
120 NSMutableData *result = [NSMutableData dataWithData:[_header data]];
\r
123 [result appendData:[_body data]];
\r
127 [result appendData:[[_body body] dataUsingEncoding:[_header encoding]]];
\r
133 const char *InternetTextMessage::className()
\r
135 return "NET::InternetTextMessage";
\r