75 BOOL _isLocalFileConnection;
77 HTTPRequest _HTTPRequest;
80 + (void)setClassDelegate:(
id)delegate
96 var request =
new CFHTTPRequest();
98 request.open([aRequest HTTPMethod], [[aRequest URL] absoluteString], NO);
102 keys = [fields keyEnumerator];
104 while ((key = [keys nextObject]) !== nil)
105 request.setRequestHeader(key, [fields objectForKey:key]);
107 request.send([aRequest HTTPBody]);
136 - (id)initWithRequest:(
CPURLRequest)aRequest delegate:(
id)aDelegate startImmediately:(BOOL)shouldStartImmediately
143 _delegate = aDelegate;
146 var URL = [_request URL],
147 scheme = [URL scheme];
150 _isLocalFileConnection = scheme ===
"file" ||
151 ((scheme ===
"http" || scheme ===
"https:") &&
153 (window.location.protocol ===
"file:" || window.location.protocol ===
"app:"));
155 _HTTPRequest =
new CFHTTPRequest();
157 if (shouldStartImmediately)
186 _HTTPRequest.open([_request HTTPMethod], [[_request URL] absoluteString], YES);
188 _HTTPRequest.onreadystatechange =
function() { [
self _readyStateDidChange]; };
190 var fields = [_request allHTTPHeaderFields],
192 keys = [fields keyEnumerator];
194 while ((key = [keys nextObject]) !== nil)
195 _HTTPRequest.setRequestHeader(key, [fields objectForKey:key]);
197 _HTTPRequest.send([_request HTTPBody]);
201 if ([_delegate respondsToSelector:
@selector(connection:didFailWithError:)])
202 [_delegate connection:self didFailWithError:anException];
215 _HTTPRequest.abort();
223 - (BOOL)isLocalFileConnection
225 return _isLocalFileConnection;
229 - (void)_readyStateDidChange
231 if (_HTTPRequest.readyState() === CFHTTPRequest.CompleteState)
233 var statusCode = _HTTPRequest.status(),
234 URL = [_request URL];
236 if (statusCode === 401 && [
CPURLConnectionDelegate respondsToSelector:
@selector(connectionDidReceiveAuthenticationChallenge:)])
237 [CPURLConnectionDelegate connectionDidReceiveAuthenticationChallenge:self];
240 if ([_delegate respondsToSelector:
@selector(connection:didReceiveResponse:)])
242 if (_isLocalFileConnection)
243 [_delegate connection:self didReceiveResponse:[[
CPURLResponse alloc] initWithURL:URL]];
247 [response _setStatusCode:statusCode];
248 [response _setAllResponseHeaders:_HTTPRequest.getAllResponseHeaders()];
249 [_delegate connection:self didReceiveResponse:response];
254 if ([_delegate respondsToSelector:
@selector(connection:didReceiveData:)])
255 [_delegate connection:self didReceiveData:_HTTPRequest.responseText()];
256 if ([_delegate respondsToSelector:
@selector(connectionDidFinishLoading:)])
257 [_delegate connectionDidFinishLoading:self];
266 - (HTTPRequest)_HTTPRequest
277 _CPReportLenientDeprecation(
self, _cmd,
@selector(sendSynchronousRequest:returningResponse:));
282 - (HTTPRequest)_XMLHTTPRequest
284 _CPReportLenientDeprecation(
self, _cmd,
@selector(_HTTPRequest));
286 return [
self _HTTPRequest];