merge with master
[framework/osp/net.git] / src / http / FNetHttpHttpTransaction.cpp
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 /**
19  * @file                FNetHttpHttpTransaction.cpp
20  * @brief               This is the implementation file for HttpTransaction class.
21  *
22  * This file contains the implementation of HttpTransaction class.
23  */
24
25 #include <FNetHttpHttpTypes.h>
26 #include <FNetHttpHttpTransaction.h>
27 #include <FNetHttpHttpRequest.h>
28 #include <FBaseSysLog.h>
29 #include <FSec_AccessController.h>
30 #include "FNetHttp_HttpTransactionImpl.h"
31 #include "FNetHttp_HttpCommon.h"
32
33 using namespace Tizen::Base;
34 using namespace Tizen::Security;
35
36 namespace Tizen { namespace Net { namespace Http
37 {
38
39 HttpTransaction::HttpTransaction(void)
40 {
41         __pHttpTransactionImpl = new (std::nothrow) _HttpTransactionImpl(this);
42         SysTryReturnVoidResult(NID_NET_HTTP, __pHttpTransactionImpl, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
43 }
44
45 HttpTransaction::~HttpTransaction(void)
46 {
47         if (__pHttpTransactionImpl != null)
48         {
49                 delete __pHttpTransactionImpl;
50                 __pHttpTransactionImpl = null;
51         }
52 }
53
54 result
55 HttpTransaction::Submit(void)
56 {
57         result r = E_SUCCESS;
58
59         r = _AccessController::CheckUserPrivilege(_PRV_HTTP);
60         r = TransExceptionsExclusive(r, E_PRIVILEGE_DENIED, E_OUT_OF_MEMORY);
61         SysTryReturnResult(NID_NET_HTTP, r == E_SUCCESS, r, "The application does not have the privilege to call this method.");
62
63         r = __pHttpTransactionImpl->Submit();
64         SysTryReturnResult(NID_NET_HTTP, r == E_SUCCESS, r, "Propagating.");
65         return r;
66 }
67
68 HttpAuthentication*
69 HttpTransaction::OpenAuthenticationInfoN(void)
70 {
71         result r = E_SUCCESS;
72
73         r = _AccessController::CheckUserPrivilege(_PRV_HTTP);
74         r = TransExceptionsExclusive(r, E_PRIVILEGE_DENIED, E_OUT_OF_MEMORY);
75         SysTryReturn(NID_NET_HTTP, r == E_SUCCESS, null, r, "[%s] The application does not have the privilege to call this method.", GetErrorMessage(r));
76
77         HttpAuthentication* pHttpAuthentication = __pHttpTransactionImpl->OpenAuthenticationInfoN();
78         r = GetLastResult();
79         SysTryReturn(NID_NET_HTTP, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
80
81         return pHttpAuthentication;
82 }
83
84 HttpRequest*
85 HttpTransaction::GetRequest() const
86 {
87         ClearLastResult();
88         result r = E_SUCCESS;
89
90         HttpRequest* pHttpRequest = null;
91
92         pHttpRequest = __pHttpTransactionImpl->GetRequest();
93         r = GetLastResult();
94         SysTryReturn(NID_NET_HTTP, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
95
96         return pHttpRequest;
97 }
98
99
100 HttpResponse*
101 HttpTransaction::GetResponse(void) const
102 {
103         ClearLastResult();
104         result r = E_SUCCESS;
105
106         HttpResponse* pHttpResponse = null;
107
108         pHttpResponse = __pHttpTransactionImpl->GetResponse();
109         r = GetLastResult();
110         SysTryReturn(NID_NET_HTTP, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
111
112         return pHttpResponse;
113 }
114
115 result
116 HttpTransaction::AddHttpTransactionListener(IHttpTransactionEventListener& listener)
117 {
118         result r = E_SUCCESS;
119
120         r = __pHttpTransactionImpl->AddHttpTransactionListener(listener);
121         SysTryReturnResult(NID_NET_HTTP, r == E_SUCCESS, r, "Propagating.");
122
123         return r;
124 }
125
126 result
127 HttpTransaction::RemoveHttpTransactionListener(IHttpTransactionEventListener& listener)
128 {
129         result r = E_SUCCESS;
130
131         r = __pHttpTransactionImpl->RemoveHttpTransactionListener(listener);
132         SysTryReturnResult(NID_NET_HTTP, r == E_SUCCESS, r, "Propagating.");
133
134         return r;
135 }
136
137 result
138 HttpTransaction::SetHttpProgressListener(IHttpProgressEventListener& listener)
139 {
140         result r = E_SUCCESS;
141
142         r = __pHttpTransactionImpl->SetHttpProgressListener(listener);
143         SysTryReturnResult(NID_NET_HTTP, r == E_SUCCESS, r, "Propagating.");
144
145         return r;
146 }
147
148 result
149 HttpTransaction::SetUserObject(const Tizen::Base::Object* pUserData)
150 {
151         result r = E_SUCCESS;
152
153         r = __pHttpTransactionImpl->SetUserObject(pUserData);
154         SysTryReturnResult(NID_NET_HTTP, r == E_SUCCESS, r, "Propagating.");
155
156         return r;
157 }
158
159 Object*
160 HttpTransaction::GetUserObject(void) const
161 {
162         ClearLastResult();
163         result r = E_SUCCESS;
164
165         Object* pUserObject = null;
166
167         pUserObject = __pHttpTransactionImpl->GetUserObject();
168         r = GetLastResult();
169         SysTryReturn(NID_NET_HTTP, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
170
171         return pUserObject;
172 }
173
174 bool
175 HttpTransaction::EnableTransactionReadyToWrite(void)
176 {
177         bool rs = false;
178
179         rs = __pHttpTransactionImpl->EnableTransactionReadyToWrite();
180
181         return rs;
182 }
183
184 result
185 HttpTransaction::Resume()
186 {
187         result r = E_SUCCESS;
188
189         r = __pHttpTransactionImpl->Resume();
190         SysTryReturn(NID_NET_HTTP, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
191
192         return r;
193 }
194
195 result
196 HttpTransaction::Pause(void)
197 {
198         result r = E_SUCCESS;
199
200         r = __pHttpTransactionImpl->Pause();
201         SysTryReturnResult(NID_NET_HTTP, r == E_SUCCESS, r, "Propagating.");
202
203         return r;
204 }
205
206 result
207 HttpTransaction::SetClientCertificate(int certificateId)
208 {
209         result r = E_SUCCESS;
210
211         r = __pHttpTransactionImpl->SetClientCertificate(certificateId);
212         SysTryReturnResult(NID_NET_HTTP, r == E_SUCCESS, r, "Propagating.");
213
214         return r;
215 }
216
217 result
218 HttpTransaction::SetTimeout(int timeout)
219 {
220         result r = E_SUCCESS;
221
222         r = __pHttpTransactionImpl->SetTimeout(timeout);
223         SysTryReturnResult(NID_NET_HTTP, r == E_SUCCESS, r, "Propagating.");
224
225         return r;
226 }
227
228 result
229 HttpTransaction::SetServerCertificateVerification(NetHttpCertificateVerificationFlag flag)
230 {
231         result r = E_SUCCESS;
232
233         r = __pHttpTransactionImpl->SetServerCertificateVerification(flag);
234         SysTryReturnResult(NID_NET_HTTP, r == E_SUCCESS, r, "Propagating.");
235
236         return r;
237 }
238
239 } } } // Tizen::Net::Http