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]);
109 if (!request.success())
129 return [[
self alloc] initWithRequest:aRequest delegate:aDelegate];
139 - (id)initWithRequest:(
CPURLRequest)aRequest delegate:(
id)aDelegate startImmediately:(BOOL)shouldStartImmediately
146 _delegate = aDelegate;
149 var URL = [_request URL],
150 scheme = [URL scheme];
153 _isLocalFileConnection = scheme ===
"file" ||
154 ((scheme ===
"http" || scheme ===
"https") &&
156 (window.location.protocol ===
"file:" || window.location.protocol ===
"app:"));
158 _HTTPRequest =
new CFHTTPRequest();
160 if (shouldStartImmediately)
189 _HTTPRequest.open([_request HTTPMethod], [[_request URL] absoluteString], YES);
191 _HTTPRequest.onreadystatechange =
function() { [
self _readyStateDidChange]; };
193 var fields = [_request allHTTPHeaderFields],
195 keys = [fields keyEnumerator];
197 while ((key = [keys nextObject]) !== nil)
198 _HTTPRequest.setRequestHeader(key, [fields objectForKey:key]);
200 _HTTPRequest.send([_request HTTPBody]);
204 if ([_delegate respondsToSelector:
@selector(connection:didFailWithError:)])
205 [_delegate connection:self didFailWithError:anException];
218 _HTTPRequest.abort();
226 - (BOOL)isLocalFileConnection
228 return _isLocalFileConnection;
232 - (void)_readyStateDidChange
234 if (_HTTPRequest.readyState() === CFHTTPRequest.CompleteState)
236 var statusCode = _HTTPRequest.status(),
237 URL = [_request URL];
239 if (statusCode === 401 && [
CPURLConnectionDelegate respondsToSelector:
@selector(connectionDidReceiveAuthenticationChallenge:)])
240 [CPURLConnectionDelegate connectionDidReceiveAuthenticationChallenge:self];
243 if ([_delegate respondsToSelector:
@selector(connection:didReceiveResponse:)])
245 if (_isLocalFileConnection)
246 [_delegate connection:self didReceiveResponse:[[
CPURLResponse alloc] initWithURL:URL]];
250 [response _setStatusCode:statusCode];
251 [response _setAllResponseHeaders:_HTTPRequest.getAllResponseHeaders()];
252 [_delegate connection:self didReceiveResponse:response];
258 if ([_delegate respondsToSelector:
@selector(connection:didReceiveData:)])
259 [_delegate connection:self didReceiveData:_HTTPRequest.responseText()];
260 if ([_delegate respondsToSelector:
@selector(connectionDidFinishLoading:)])
261 [_delegate connectionDidFinishLoading:self];
270 - (HTTPRequest)_HTTPRequest
281 _CPReportLenientDeprecation(
self, _cmd,
@selector(sendSynchronousRequest:returningResponse:));
286 - (HTTPRequest)_XMLHTTPRequest
288 _CPReportLenientDeprecation(
self, _cmd,
@selector(_HTTPRequest));
290 return [
self _HTTPRequest];