Build fix.
[WebKit-https.git] / WebCore / platform / network / mac / ResourceRequestMac.mm
1 // -*- mode: c++; c-basic-offset: 4 -*-
2 /*
3  * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
15  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
25  */
26
27 #import "config.h"
28 #import "ResourceRequest.h"
29
30 #import "FormDataStreamMac.h"
31
32 #import <Foundation/Foundation.h>
33
34 namespace WebCore {
35
36 NSURLRequest* ResourceRequest::nsURLRequest() const
37
38     updatePlatformRequest();
39     
40     return [[m_nsRequest.get() retain] autorelease]; 
41 }
42
43 void ResourceRequest::doUpdateResourceRequest()
44 {
45     m_url = [m_nsRequest.get() URL];
46     m_cachePolicy = (ResourceRequestCachePolicy)[m_nsRequest.get() cachePolicy];
47     m_timeoutInterval = [m_nsRequest.get() timeoutInterval];
48     m_mainDocumentURL = [m_nsRequest.get() mainDocumentURL];
49     
50     if (NSString* method = [m_nsRequest.get() HTTPMethod])
51         m_httpMethod = method;
52     m_allowHTTPCookies = [m_nsRequest.get() HTTPShouldHandleCookies];
53     
54     NSDictionary *headers = [m_nsRequest.get() allHTTPHeaderFields];
55     NSEnumerator *e = [headers keyEnumerator];
56     NSString *name;
57     while ((name = [e nextObject]))
58         m_httpHeaderFields.set(name, [headers objectForKey:name]);
59     
60     if (NSData* bodyData = [m_nsRequest.get() HTTPBody])
61         m_httpBody = new FormData([bodyData bytes], [bodyData length]);
62     else if (NSInputStream* bodyStream = [m_nsRequest.get() HTTPBodyStream])
63         if (FormData* formData = httpBodyFromStream(bodyStream))
64             m_httpBody = formData;    
65 }
66
67 void ResourceRequest::doUpdatePlatformRequest()
68 {
69     NSMutableURLRequest* nsRequest = [[NSMutableURLRequest alloc] initWithURL:url().getNSURL()];
70     
71     [nsRequest setCachePolicy:(NSURLRequestCachePolicy)cachePolicy()];
72     [nsRequest setTimeoutInterval:timeoutInterval()];
73     [nsRequest setMainDocumentURL:mainDocumentURL().getNSURL()];
74     if (!httpMethod().isEmpty())
75         [nsRequest setHTTPMethod:httpMethod()];
76     [nsRequest setHTTPShouldHandleCookies:allowHTTPCookies()];
77     
78     HTTPHeaderMap::const_iterator end = httpHeaderFields().end();
79     for (HTTPHeaderMap::const_iterator it = httpHeaderFields().begin(); it != end; ++it)
80         [nsRequest setValue:it->second forHTTPHeaderField:it->first];
81     
82     RefPtr<FormData> formData = httpBody();
83     if (formData && !formData->isEmpty())
84         WebCore::setHTTPBody(nsRequest, formData);
85     
86     m_nsRequest = nsRequest;
87 }
88
89 }