2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
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
9 // http://www.apache.org/licenses/LICENSE-2.0
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.
19 * @file FNetHttp_HttpRequestImpl.h
20 * @brief This is the header file for the %_HttpRequestImpl class.
22 * This header file contains the declarations of the %_HttpRequestImpl class.
25 #ifndef _FNET_HTTP_INTERNAL_HTTP_REQUEST_IMPL_H_
26 #define _FNET_HTTP_INTERNAL_HTTP_REQUEST_IMPL_H_
28 #include <FOspConfig.h>
29 #include <FNetHttpHttpTypes.h>
31 namespace Tizen { namespace Base
37 namespace Tizen { namespace Base { namespace Collection
42 namespace Tizen { namespace Net { namespace Http
47 class HttpTransaction;
48 class _HttpTransactionImpl;
50 * @class _HttpRequestImpl
51 * @brief This class represents a request message.
56 class _OSP_EXPORT_ _HttpRequestImpl
57 : public Tizen::Base::Object
62 * @see HttpRequest::Setmethod()
64 result SetMethod(NetHttpMethod method);
67 * @see HttpRequest::SetCustomMethod()
69 result SetCustomMethod(const Tizen::Base::String& method);
72 * @see HttpRequest::SetVersion()
74 result SetVersion(HttpVersion version);
77 * @see HttpRequest::SetUri()
79 result SetUri(const Tizen::Base::String& uri);
82 * @see HttpRequest::WriteBody()
84 virtual result WriteBody(const Tizen::Base::ByteBuffer& body);
87 * @see HttpRequest::SetEntity()
89 result SetEntity(IHttpEntity& entity);
92 * @see HttpRequest::GetHeader()
94 virtual HttpHeader* GetHeader(void) const;
97 * @see HttpRequest::SetCookie()
99 result SetCookie(const Tizen::Base::String& cookieString);
102 * @see HttpRequest::GetCookie()
104 Tizen::Base::String GetCookie(void) const;
107 * @see HttpRequest::GetMethod()
109 NetHttpMethod GetMethod(void) const;
112 * @see GetCustomMethod()
114 result GetCustomMethod(Tizen::Base::String& method) const;
119 HttpVersion GetVersion(void) const;
122 * @see HttpRequest::GetUri()
124 result GetUri(Tizen::Base::String& uri) const;
127 * @see HttpRequest::ReadBodyN()
129 virtual Tizen::Base::ByteBuffer* ReadBodyN(void);
132 * @see HttpRequest::SetAcceptEncoding()
134 result SetAcceptEncoding(const Tizen::Base::String& encoding);
137 * @see HttpRequest::GetAcceptEncoding()
139 Tizen::Base::String GetAcceptEncoding(void) const;
143 * Gets the Impl instance.
146 * @return The pointer to _HttpRequestImpl
147 * @param[in] pHttpRequest An instance of HttpRequest
149 static _HttpRequestImpl* GetInstance(HttpRequest& httpRequest);
152 * Gets the Impl instance.
155 * @return The pointer to _HttpRequestImpl
156 * @param[in] pHttpRequest An instance of HttpRequest
158 static const _HttpRequestImpl* GetInstance(const HttpRequest& httpRequest);
161 _HttpRequestImpl(HttpRequest* pRequest);
163 virtual ~_HttpRequestImpl(void);
165 result Construct(const _HttpTransactionImpl& httpTransactionImpl, const HttpHeader* pCommonHeader);
168 static HttpRequest* CreateHttpRequestN(void);
170 static void DeleteHttpRequest(HttpRequest* pHttpRequest);
172 bool IsEmptyBody(void) const;
174 unsigned int GetTotalBodyLength(void) const;
176 void SetRecommendedSize(int recommendedSize);
178 void SetReceivedTransactionReadyToWriteEvent(bool isReceviedEvent);
180 void SetFirstChunkBody(bool isFirstChunk);
182 bool IsFirstChunkBody(void) const;
184 bool IsLastChunkBody(void) const;
186 bool HasCookie(void) const;
188 void SetSendingBuffer(Tizen::Base::ByteBuffer* pBuffer);
190 Tizen::Base::ByteBuffer* GetSendingBuffer(void) const;
192 Tizen::Base::String GetMethodName(void) const;
194 Tizen::Base::ByteBuffer* ReadAllBodyN(void) const;
196 IHttpEntity* GetEntity(void) const;
198 bool HasNextData(void);
200 Tizen::Base::ByteBuffer* GetNextDataN(int recommendedSize);
202 result Set(_HttpRequestImpl* pHttpRequestImpl);
205 _HttpRequestImpl(void);
207 _HttpRequestImpl(const _HttpRequestImpl& rhs);
209 _HttpRequestImpl& operator =(const _HttpRequestImpl& rhs);
212 NetHttpMethod __method;
213 Tizen::Base::String __customMethodName;
214 Tizen::Base::String __methodName;
215 HttpVersion __httpVersion;
216 Tizen::Base::String __uri;
217 Tizen::Base::String __cookieValue;
218 NetHttpCookieFlag __cookieFlag;
219 Tizen::Base::String __encoding;
220 int __recommendedSize;
223 bool __isReceivedTransactionReadyToWriteEvent;
224 IHttpEntity* __pIHttpEntity;
225 Tizen::Base::ByteBuffer* __pSendingBuffer;
226 _HttpTransactionImpl* __pHttpTransactionImpl;
227 HttpRequest* __pHttpRequest; //To access member variables of the HttpRequest(HttpMessage).
229 friend class HttpRequest;
231 }; // _HttpRequestImpl
233 } } } // Tizen::Net::Http
234 #endif // _FNET_HTTP_INTERNAL_HTTP_REQUEST_IMPL_H_