ObjFW  Check-in [fbb9df7439]

Overview
Comment:Rename -[OFHTTPRequest postData] to POSTData.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: fbb9df7439bfb02260b4eac889d40bfa03d99c52fa8b72e783828f87592b6e07
User & Date: js on 2012-12-14 01:42:05
Other Links: manifest | tags
Context
2012-12-14
01:46
Add -[description] for OFHTTPRequest(Result). check-in: c3d536d43c user: js tags: trunk
01:42
Rename -[OFHTTPRequest postData] to POSTData. check-in: fbb9df7439 user: js tags: trunk
2012-12-13
21:38
Remove code that got useless. check-in: 4ce82f6e28 user: js tags: trunk
Changes

Modified src/OFHTTPClient.m from [f1da42cb60] to [befaf122bc].

117
118
119
120
121
122
123
124

125
126
127
128
129
130
131
117
118
119
120
121
122
123

124
125
126
127
128
129
130
131







-
+







			     redirects: (size_t)redirects
{
	void *pool = objc_autoreleasePoolPush();
	OFURL *URL = [request URL];
	OFString *scheme = [URL scheme];
	of_http_request_type_t requestType = [request requestType];
	OFDictionary *headers = [request headers];
	OFDataArray *postData = [request postData];
	OFDataArray *POSTData = [request POSTData];
	OFTCPSocket *sock;
	OFHTTPRequestResult *result;
	OFString *line, *path, *version;
	OFMutableDictionary *serverHeaders;
	OFDataArray *data;
	OFEnumerator *keyEnumerator, *objectEnumerator;
	OFString *key, *object, *contentLengthHeader;
205
206
207
208
209
210
211
212

213
214
215
216
217
218
219
220
221
222
223


224
225
226
227
228
229
230
205
206
207
208
209
210
211

212
213
214
215
216
217
218
219
220
221


222
223
224
225
226
227
228
229
230







-
+









-
-
+
+








		if (contentType == nil)
			contentType = @"application/x-www-form-urlencoded; "
			    @"charset=UTF-8\r\n";

		[sock writeFormat: @"Content-Type: %@\r\n", contentType];
		[sock writeFormat: @"Content-Length: %d\r\n",
		    [postData count] * [postData itemSize]];
		    [POSTData count] * [POSTData itemSize]];
	}

	[sock writeString: @"\r\n"];

	/* Work around a bug in lighttpd, see above */
	[sock flushWriteBuffer];
	[sock setWriteBufferEnabled: NO];

	if (requestType == OF_HTTP_REQUEST_TYPE_POST)
		[sock writeBuffer: [postData cArray]
			   length: [postData count] * [postData itemSize]];
		[sock writeBuffer: [POSTData cArray]
			   length: [POSTData count] * [POSTData itemSize]];

	@try {
		line = [sock readLine];
	} @catch (OFInvalidEncodingException *e) {
		@throw [OFInvalidServerReplyException
		    exceptionWithClass: [self class]];
	}
312
313
314
315
316
317
318
319

320
321
322
323
324
325

326
327
328
329
330
331
332
312
313
314
315
316
317
318

319
320
321
322
323
324

325
326
327
328
329
330
331
332







-
+





-
+







						  forKey: key];
				continue;
			}

			newRequest = [OFHTTPRequest requestWithURL: newURL];
			[newRequest setRequestType: requestType];
			[newRequest setHeaders: headers];
			[newRequest setPostData: postData];
			[newRequest setPOSTData: POSTData];
			[newRequest setMIMEType: [request MIMEType]];

			if (status == 303) {
				[newRequest
				    setRequestType: OF_HTTP_REQUEST_TYPE_GET];
				[newRequest setPostData: nil];
				[newRequest setPOSTData: nil];
				[newRequest setMIMEType: nil];
			}

			[newRequest retain];
			objc_autoreleasePoolPop(pool);
			[newRequest autorelease];

Modified src/OFHTTPRequest.h from [f5735e078a] to [5980347de8].

31
32
33
34
35
36
37
38

39
40
41
42
43
44
45
46

47
48
49
50
51
52
53
31
32
33
34
35
36
37

38
39
40
41
42
43
44
45

46
47
48
49
50
51
52
53







-
+







-
+







 * @brief A class for storing HTTP requests.
 */
@interface OFHTTPRequest: OFObject
{
	OFURL *URL;
	of_http_request_type_t requestType;
	OFDictionary *headers;
	OFDataArray *postData;
	OFDataArray *POSTData;
	OFString *MIMEType;
}

#ifdef OF_HAVE_PROPERTIES
@property (copy) OFURL *URL;
@property of_http_request_type_t requestType;
@property (copy) OFDictionary *headers;
@property (retain) OFDataArray *postData;
@property (retain) OFDataArray *POSTData;
@property (copy) OFString *MIMEType;
#endif

/*!
 * @brief Creates a new OFHTTPRequest.
 *
 * @return A new, autoreleased OFHTTPRequest
111
112
113
114
115
116
117
118

119
120

121
122
123
124
125
126
127

128
129
130
131
132
133
134
111
112
113
114
115
116
117

118
119

120
121
122
123
124
125
126

127
128
129
130
131
132
133
134







-
+

-
+






-
+







 * @return A dictionary with headers for the HTTP request.
 */
- (OFDictionary*)headers;

/*!
 * @brief Sets the POST data of the HTTP request.
 *
 * @param postData The POST data of the HTTP request
 * @param POSTData The POST data of the HTTP request
 */
- (void)setPostData: (OFDataArray*)postData;
- (void)setPOSTData: (OFDataArray*)postData;

/*!
 * @brief Returns the POST data of the HTTP request.
 *
 * @return The POST data of the HTTP request
 */
- (OFDataArray*)postData;
- (OFDataArray*)POSTData;

/*!
 * @brief Sets the MIME type for the POST data.
 *
 * @param MIMEType The MIME type for the POST data
 */
- (void)setMIMEType: (OFString*)MIMEType;

Modified src/OFHTTPRequest.m from [af5623a848] to [4a757213a5].

58
59
60
61
62
63
64
65

66
67
68
69
70
71
72
58
59
60
61
62
63
64

65
66
67
68
69
70
71
72







-
+







	return self;
}

- (void)dealloc
{
	[URL release];
	[headers release];
	[postData release];
	[POSTData release];
	[MIMEType release];

	[super dealloc];
}

- (void)setURL: (OFURL*)URL_
{
94
95
96
97
98
99
100
101

102
103

104
105
106

107
108

109
110
111
112
113
114
115
94
95
96
97
98
99
100

101
102

103
104
105

106
107

108
109
110
111
112
113
114
115







-
+

-
+


-
+

-
+







}

- (OFDictionary*)headers
{
	OF_GETTER(headers, YES)
}

- (void)setPostData: (OFDataArray*)postData_
- (void)setPOSTData: (OFDataArray*)POSTData_
{
	OF_SETTER(postData, postData_, YES, 0)
	OF_SETTER(POSTData, POSTData_, YES, 0)
}

- (OFDataArray*)postData
- (OFDataArray*)POSTData
{
	OF_GETTER(postData, YES)
	OF_GETTER(POSTData, YES)
}

- (void)setMIMEType: (OFString*)MIMEType_
{
	OF_SETTER(MIMEType, MIMEType_, YES, 1)
}

132
133
134
135
136
137
138
139
140

141
142
143
144
145
146
147
148


149
150
151
152
153
154
155
132
133
134
135
136
137
138

139
140
141
142
143
144
145
146


147
148
149
150
151
152
153
154
155







-

+






-
-
+
+







- initWithStatusCode: (short)status
	     headers: (OFDictionary*)headers_
		data: (OFDataArray*)data_
{
	self = [super init];

	statusCode = status;
	data = [data_ retain];
	headers = [headers_ copy];
	data = [data_ retain];

	return self;
}

- (void)dealloc
{
	[data release];
	[headers release];
	[headers release];
	[data release];

	[super dealloc];
}

- (short)statusCode
{
	return statusCode;

Modified src/OFHTTPServer.m from [2f6eab66c7] to [e6f92f7b1d].

178
179
180
181
182
183
184
185

186
187
188
189
190
191
192
178
179
180
181
182
183
184

185
186
187
188
189
190
191
192







-
+







	} state;
	uint8_t HTTPMinorVersion;
	of_http_request_type_t requestType;
	OFString *host, *path;
	uint16_t port;
	OFMutableDictionary *headers;
	size_t contentLength;
	OFDataArray *postData;
	OFDataArray *POSTData;
}

- initWithSocket: (OFTCPSocket*)socket
	  server: (OFHTTPServer*)server;
- (BOOL)socket: (OFTCPSocket*)sock
   didReadLine: (OFString*)line
     exception: (OFException*)exception;
215
216
217
218
219
220
221
222

223
224
225
226
227
228
229
215
216
217
218
219
220
221

222
223
224
225
226
227
228
229







-
+








- (void)dealloc
{
	[sock release];
	[host release];
	[path release];
	[headers release];
	[postData release];
	[POSTData release];

	[super dealloc];
}

- (BOOL)socket: (OFTCPSocket*)sock_
   didReadLine: (OFString*)line
     exception: (OFException*)exception
328
329
330
331
332
333
334
335

336
337
338
339
340
341
342
328
329
330
331
332
333
334

335
336
337
338
339
340
341
342







-
+







			@try {
				contentLength = (size_t)[tmp decimalValue];
			} @catch (OFInvalidFormatException *e) {
				return [self sendErrorAndClose: 400];
			}

			buffer = [self allocMemoryWithSize: BUFFER_SIZE];
			postData = [[OFDataArray alloc] init];
			POSTData = [[OFDataArray alloc] init];

			[sock asyncReadIntoBuffer: buffer
					   length: BUFFER_SIZE
					   target: self
					 selector: @selector(socket:
						       didReadIntoBuffer:
						       length:exception:)];
396
397
398
399
400
401
402
403

404
405
406

407
408
409
410
411
412
413
396
397
398
399
400
401
402

403
404
405

406
407
408
409
410
411
412
413







-
+


-
+







  didReadIntoBuffer: (const char*)buffer
	     length: (size_t)length
	  exception: (OFException*)exception
{
	if ([sock_ isAtEndOfStream] || exception != nil)
		return NO;

	[postData addItemsFromCArray: buffer
	[POSTData addItemsFromCArray: buffer
			       count: length];

	if ([postData count] >= contentLength) {
	if ([POSTData count] >= contentLength) {
		@try {
			[self sendReply];
		} @catch (OFWriteFailedException *e) {
			return NO;
		}

		return NO;
457
458
459
460
461
462
463
464

465
466
467
468
469
470
471
457
458
459
460
461
462
463

464
465
466
467
468
469
470
471







-
+







	[URL setHost: host];
	[URL setPort: port];
	[URL setPath: path];

	request = [OFHTTPRequest requestWithURL: URL];
	[request setRequestType: requestType];
	[request setHeaders: headers];
	[request setPostData: postData];
	[request setPOSTData: POSTData];

	reply = [[server delegate] server: server
			didReceiveRequest: request];

	if (reply == nil) {
		[self sendErrorAndClose: 500];
		@throw [OFInvalidArgumentException